From patchwork Wed Sep 25 13:29:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 51842 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:9548:0:b0:48e:c0f8:d0de with SMTP id t8csp466160vqk; Wed, 25 Sep 2024 06:30:00 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVGi0aaQOILCuX5vyDrSimepkZTvEws3YEF3Z5T2otGbwWLvkmcbXbvRvYBk5EURJCgIO60NHE+IQPK9V/XOgpp@gmail.com X-Google-Smtp-Source: AGHT+IF9Gk2mEqaZBh9hQXd+sRZp11RLrOhvp/+2gSaMAu3BFRR+nCyAZC8lfqz5v/WlsQiXGSc3 X-Received: by 2002:a05:6512:6d6:b0:536:9ef3:3b0d with SMTP id 2adb3069b0e04-5387048bde2mr1575145e87.2.1727271000061; Wed, 25 Sep 2024 06:30:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727271000; cv=none; d=google.com; s=arc-20240605; b=VUfmtOK5KwkWmV6o+FMLoMxPNX1Ffm5yF38quzpleRWeGpyOozsuuROYXk0x/g2Jnt K9Eu50G0yf1YJTxlIDXP2wxOS/86IcDsfkxrQF5VgrtUocNag8/Y+ED/slBHEK6Y97Va cDTb06Nq7OBNT9Qc3xt1v5rrfjDh3iSgERhZqjfBeqecbEy34IyHWk+25I3J54Av787U N1CJThlqyxKCgDexW1PvgEfnMNUrJTeI3WY4jk/JDkhIcdvTE/cc0dj/z5p/7JdzNd1T MfKfu9h8QWl9dTj7Qa1r+NR9jtlvFzL5scsmyV9tQ47Waf+f4++Y1Y5aqBo8RQLCU6qP DiYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=EDfRz1pissOCIvQmbQR9kKY6ZrshIJ5iDz0k4pRJMmg=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=HB1n8v9RCtv3HLpG3v0+gvKwEILVqTeOuhxnJ16jV64Bn4gSjbk43UYNViU1zQktLt aAUcnOUdtDBexH9kyHKUPHCU/vLCoru/Zl8qQIQilDgjqZDiHOWd91xHl6lQOm7jnYaP /SVlXCs1vkfkOp37ETHTSrCvxV68cxpQW+gnvKIYwNL7DmfNj1/3fEG7As6iDmro2qm1 ki6tipjNSDmbs//hm20ECtE3BCg2abX7xV5G8SaYZY/AGwneQEsCIeRUmMKjcgpvn4Fj W6dyqL542ZzaymECRBa8HdrwmiKrNIhdmCqbzM39U6vCt9/MyqgKSPuA4i5Su8Xq38jD pCfQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=HvMLrWB8; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 2adb3069b0e04-537a85ee665si1290980e87.163.2024.09.25.06.29.59; Wed, 25 Sep 2024 06:30:00 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=HvMLrWB8; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2DA5768DB88; Wed, 25 Sep 2024 16:29:36 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DE16B68DABC for ; Wed, 25 Sep 2024 16:29:26 +0300 (EEST) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=HvMLrWB8; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 2A1BD4D9D for ; Wed, 25 Sep 2024 15:29:26 +0200 (CEST) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id gKXDiWc9HIXj for ; Wed, 25 Sep 2024 15:29:25 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1727270964; bh=gtssp9wqeinGkgnGl0h29Si5GdJF4THZ0vNbI9NvnLA=; h=From:To:Subject:Date:From; b=HvMLrWB8pS9g0A2oPOewAK02foGMNfe/4BUPZygnubtAmksDRoBuJANt+SK2Xfs+Z PeyS+UH5ubp4opJIU0YSv1sSRWmvULjbSWsSANDC6wJDoE7Cn9GCslgWB4GnlwPzVM duCmmrP+ez4ZT2YFivcO9KuWjSsUcg0J3UTdVyJY7tA5Kn2aZaMTm5JS0BDBWT6ueC Mqh8btJRklYxCRMg25kkLuy0zFe6iH3wEYSYl0fxGZajdqANQNgNgT/N3OyNek22g5 bzwCG2i45Nh329OLCkGFa+6TpU1kXiUqv9jMxKZzmBKsVEfSz3QNR0rqPKmrc1gB6o Xj6CWuFTju7VQ== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id AF28E4DE6 for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 87A5B3A03CA for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 25 Sep 2024 15:29:12 +0200 Message-ID: <20240925132921.11203-1-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 01/10] fftools/ffmpeg_filter: stop using avfilter_graph_alloc_filter() incorrectly X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: dFmDfJ9zrKnK This function creates AND initializes a filter, so setting any filter options after it is wrong. It happens to work when the filter's init function does not touch the options in question, but is forbidden by the API and is not guaranteed to remain functional. Instead, use avfilter_graph_alloc_filter(), followed by setting the options, and avfilter_init_dict(). --- fftools/ffmpeg_filter.c | 53 ++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c index c36a3ad00a..2f7597b491 100644 --- a/fftools/ffmpeg_filter.c +++ b/fftools/ffmpeg_filter.c @@ -1586,14 +1586,18 @@ static int configure_output_audio_filter(FilterGraph *fg, AVFilterGraph *graph, int ret; snprintf(name, sizeof(name), "out_%s", ofp->name); - ret = avfilter_graph_create_filter(&ofp->filter, - avfilter_get_by_name("abuffersink"), - name, NULL, NULL, graph); - if (ret < 0) - return ret; + ofp->filter = avfilter_graph_alloc_filter(graph, + avfilter_get_by_name("abuffersink"), + name); + if (!ofp->filter) + return AVERROR(ENOMEM); if ((ret = av_opt_set_int(ofp->filter, "all_channel_counts", 1, AV_OPT_SEARCH_CHILDREN)) < 0) return ret; + ret = avfilter_init_dict(ofp->filter, NULL); + if (ret < 0) + return ret; + #define AUTO_INSERT_FILTER(opt_name, filter_name, arg) do { \ AVFilterContext *filt_ctx; \ \ @@ -1686,9 +1690,6 @@ static int configure_input_video_filter(FilterGraph *fg, AVFilterGraph *graph, AVFilterContext *last_filter; const AVFilter *buffer_filt = avfilter_get_by_name("buffer"); const AVPixFmtDescriptor *desc; - AVRational fr = ifp->opts.framerate; - AVRational sar; - AVBPrint args; char name[255]; int ret, pad_idx = 0; AVBufferSrcParameters *par = av_buffersrc_parameters_alloc(); @@ -1698,30 +1699,34 @@ static int configure_input_video_filter(FilterGraph *fg, AVFilterGraph *graph, if (ifp->type_src == AVMEDIA_TYPE_SUBTITLE) sub2video_prepare(ifp); - sar = ifp->sample_aspect_ratio; - if(!sar.den) - sar = (AVRational){0,1}; - av_bprint_init(&args, 0, AV_BPRINT_SIZE_AUTOMATIC); - av_bprintf(&args, - "video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:" - "pixel_aspect=%d/%d:colorspace=%d:range=%d", - ifp->width, ifp->height, ifp->format, - ifp->time_base.num, ifp->time_base.den, sar.num, sar.den, - ifp->color_space, ifp->color_range); - if (fr.num && fr.den) - av_bprintf(&args, ":frame_rate=%d/%d", fr.num, fr.den); snprintf(name, sizeof(name), "graph %d input from stream %s", fg->index, ifp->opts.name); - - if ((ret = avfilter_graph_create_filter(&ifp->filter, buffer_filt, name, - args.str, NULL, graph)) < 0) + ifp->filter = avfilter_graph_alloc_filter(graph, buffer_filt, name); + if (!ifp->filter) { + ret = AVERROR(ENOMEM); goto fail; - par->hw_frames_ctx = ifp->hw_frames_ctx; + } + + par->format = ifp->format; + par->time_base = ifp->time_base; + par->frame_rate = ifp->opts.framerate; + par->width = ifp->width; + par->height = ifp->height; + par->sample_aspect_ratio = ifp->sample_aspect_ratio.den > 0 ? + ifp->sample_aspect_ratio : (AVRational){ 0, 1 }; + par->color_space = ifp->color_space; + par->color_range = ifp->color_range; + par->hw_frames_ctx = ifp->hw_frames_ctx; ret = av_buffersrc_parameters_set(ifp->filter, par); if (ret < 0) goto fail; av_freep(&par); + + ret = avfilter_init_dict(ifp->filter, NULL); + if (ret < 0) + goto fail; + last_filter = ifp->filter; desc = av_pix_fmt_desc_get(ifp->format); From patchwork Wed Sep 25 13:29:13 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 51849 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:9548:0:b0:48e:c0f8:d0de with SMTP id t8csp493822vqk; Wed, 25 Sep 2024 07:09:18 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWzVM2/ogaUUZ2bd55Ynt81lue3Yh1TxYJ4C+kmPc5pBKxAyrFGUogXnHfpjvoVT7YBvKVqlt5/hmcs2XT2jplf@gmail.com X-Google-Smtp-Source: AGHT+IE578R5aZ4rcnVVuyY+8+P8okt3OuSVLr1Tev7D1u0YnEXT6XX0D+sqz3/ynGxXppIjQb3i X-Received: by 2002:a17:906:caea:b0:a8d:4e24:5314 with SMTP id a640c23a62f3a-a93a0360465mr272727866b.24.1727273358062; Wed, 25 Sep 2024 07:09:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727273357; cv=none; d=google.com; s=arc-20240605; b=MBD/3D62eHu/Ru/izbZRYgp5FZxYh7S0SPMni7l1p8eRbsK5vCDQCVuEWo0LbEpCwg fDXN7ZqgTm9uFw4cjdsgfL3B6GvC/vMrzSIVm4FmrQ9fDHgGQNuriD1M8TIs+jEv+51S WNwPtr8IUZxCYjJwTgydcqnor5pXqchNEGRIZWimPDHEdq63BnLvZMu3dC+6uxY38k4Q f/BsXn7HUpJFjqunDBAl0Irqn+rTE+StYBWzVCLNGaaEc6sRDWqV6EdotmqizzwcIehb jvqiTdWGSwNAglKHsbFWPC8KKHW+JNFz7P8xlPjwKmgFdzf/Ljk/b8LOUNxI9TgF50z3 wFng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=udT9H6ycGcMcI9nRll+Dt/rmt2/Lby3GbJi2Q+aTn9k=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=j1SZkZYINPYCsn4mHuMvEcAVlk3RFI/P7VXyYt9JIobl1wJBj8g9fNZ2I+0O/PIVI2 hXfJWHEqfvKEizR2U1MbBFZ35sLZSKLwXaKS/NfUrGwIp1Zc8hipqaSjpHGAQeiZWctC wf2JhvMrlEKCJU5luE6xhQ2iwW2Dyl4agPzxUEqger+FfxKYi3c4k2biZuFweRs36TvD 8SA/XWvPTVtQEO9lp49uNDt916Q1gJJ/Q9+4n+4Nu30vMEVsrZS07f7XgffaOgPkVNS1 hhl/TYJHrSISelrErqqII8NOCXhxOOkXUzbSHlyfPdkaP34eVlgNIqcfcZW0mayqVQ+9 83CA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=RMmL9Fhq; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a9393114845si245755866b.722.2024.09.25.07.09.16; Wed, 25 Sep 2024 07:09:17 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=RMmL9Fhq; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 25EB068DAEB; Wed, 25 Sep 2024 16:29:34 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D3F3868D9B6 for ; Wed, 25 Sep 2024 16:29:26 +0300 (EEST) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=RMmL9Fhq; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 1C96E4E16 for ; Wed, 25 Sep 2024 15:29:26 +0200 (CEST) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id MIQmk1rHGcWw for ; Wed, 25 Sep 2024 15:29:25 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1727270964; bh=1+11tIHu56okoVu2qAxuOpF8oGHZQlcc6ayegaK5lkQ=; h=From:To:Subject:Date:In-Reply-To:References:From; b=RMmL9FhqCdk2XcsY0Har3BNemAgBpeMTQnb7A2hERAXiRC6gFLn5RR1iMJHLzjBc5 aEDkg4srXcLliGVrd/eYgSUpDkpOKRm+FG7d55rpb6dY2Xk2L9RpOcy01nQFSZnNpI NxKcFdxzvNBk8N3sA0V00+LXL/tbT4utzY3NlzcnYpECrTP5Y5Qy6qNXFVFOAAHRKf O42UnXVOV15Vq2g2CFikTOky8bC1H/d+//Kg23SPVP9oOzjIPargZC4sl7MTESyefH uX52apzzKNk2wknDOUvON+kw0upm9VYnlV63Ppv/urDySmWB2HSpWSvRjPnw8+Lx0D pwXCLSDszA0/g== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id AC37E4D9D for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 946B03A086F for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 25 Sep 2024 15:29:13 +0200 Message-ID: <20240925132921.11203-2-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240925132921.11203-1-anton@khirnov.net> References: <20240925132921.11203-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 02/10] doc/examples/decode_filter_audio: stop using avfilter_graph_alloc_filter() incorrectly X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: dQ2y6DYTodeK See previous commit for details. --- doc/examples/decode_filter_audio.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/doc/examples/decode_filter_audio.c b/doc/examples/decode_filter_audio.c index d637ca1724..6d148f7ab4 100644 --- a/doc/examples/decode_filter_audio.c +++ b/doc/examples/decode_filter_audio.c @@ -123,10 +123,10 @@ static int init_filters(const char *filters_descr) } /* buffer audio sink: to terminate the filter chain. */ - ret = avfilter_graph_create_filter(&buffersink_ctx, abuffersink, "out", - NULL, NULL, filter_graph); - if (ret < 0) { + buffersink_ctx = avfilter_graph_alloc_filter(filter_graph, abuffersink, "out"); + if (!buffersink_ctx) { av_log(NULL, AV_LOG_ERROR, "Cannot create audio buffer sink\n"); + ret = AVERROR(ENOMEM); goto end; } @@ -151,6 +151,12 @@ static int init_filters(const char *filters_descr) goto end; } + ret = avfilter_init_dict(buffersink_ctx, NULL); + if (ret < 0) { + av_log(NULL, AV_LOG_ERROR, "Cannot initialize audio buffer sink\n"); + goto end; + } + /* * Set the endpoints for the filter graph. The filter_graph will * be linked to the graph described by filters_descr. From patchwork Wed Sep 25 13:29:14 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 51843 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:9548:0:b0:48e:c0f8:d0de with SMTP id t8csp466456vqk; Wed, 25 Sep 2024 06:30:21 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWgzF96+9+rfmdyg9pmmsApfxxGPsbO34IYpmAcNUHPnxBWE2ieSALa8+iQ9RCjfF+6k64J0haZbFP5E2MhvCbf@gmail.com X-Google-Smtp-Source: AGHT+IEP7WdcxBMwi5iavSCL50Oidbhzr+1IsdnqahIavbkkv/wc6RIjZknGgaLiSA6acaLMBgv6 X-Received: by 2002:a05:6512:4019:b0:52c:86d7:fa62 with SMTP id 2adb3069b0e04-53877538cc6mr1919967e87.23.1727271021601; Wed, 25 Sep 2024 06:30:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727271021; cv=none; d=google.com; s=arc-20240605; b=IImhC43RrSJhXGPBm3mF7TQDoCcv2oXMjNtMNlXNCXeX0mtf7DArP5Zzt+SBH+9FMX GqpgfB7Jc6ldvAHP5SYa6736E+VOVyNiRQ6sXh2RZXUpvAuvquGuV7YKixqhkKJy48aa qsovWA1TgbZY8MuDOKL+Huu4uOKq/wfYiPjWSGY22anpVpK4eJTMGMaYpmWd9OE2fCvx VP2K25QLKff4L7oyKNPPp1Lwm0SsDMdrf2GHrLqfOmInDAOMudFscyTNNYdcmaH+LpH8 aGYj1noN2fctNcx+vsHCcRsc9m5QvpNjwGoGOqtB/8JMIr6BlFXcMJD9wo1cEZtv6ILP jP5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=uQ0++86dFoIfrWUFjK+GFB309/aLfDMfejx0bSXcv24=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=BhzduHUe3Y02qEZTysA9QFtnzzTNPPOSk22jEoUqu4kSzUanffOpJOSHdfZsylJ4qB Pn/Yf+05ah90v+13XDR4Ek4CwTTebL0AwSbTiFcMWAZVaFXb8fcmQbZgQfmmzjSvUH26 0tqmwfet4nHr+ru5UkWH1Cx1wDOzCmPo60mktDshEdXVrc5As5mNPxsw2uxii1/5qgT/ ZzPh5Wvi7wF3yRS4OScuxt4nbl3xCzuQHLhQamBbnPTPfG7ZbajnV6wYvPFqIJ52KixZ prAtxfStTprk27dXfR+cp+YN9ByyNErBhzzr6F5daNeYhnbwQw6uHGfZEY7IhALA5uHI UX9w==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=qfR789EN; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 2adb3069b0e04-537a85e0cf8si1291704e87.71.2024.09.25.06.30.20; Wed, 25 Sep 2024 06:30:21 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=qfR789EN; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C64BB68DB84; Wed, 25 Sep 2024 16:29:38 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DD73168DA5D for ; Wed, 25 Sep 2024 16:29:26 +0300 (EEST) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=qfR789EN; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id BF5C84E19 for ; Wed, 25 Sep 2024 15:29:25 +0200 (CEST) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id VWkEUQOO8tfP for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1727270964; bh=vdd0W5N3NPs6wKx0L+e18ZSCwV1ZBB1IUJY9n8vE0xU=; h=From:To:Subject:Date:In-Reply-To:References:From; b=qfR789EN3ecU51CXiU7wuj8xhMvXxoaeuywBbfnPoNRlyb8UUci1z3h+e5Plc0YXL 5UFKZJGnEKMDm/PAdnXi6R4IhrvPI6CWiSGn8TscB10mYgy4Nsu/25VsFd9o4825MM TsgGhHERf1sTmiiYR0q7ADZzl7P603V9itgNWcclhtLEY/R5uoPvNTom25BNUDuy43 Ev3Uetiws8AzmI7etBm4/mZMdYsINmPqdGEWGnZsvr44DqA2sXPBt+F4M+xPxZ2BkZ ei9vUKBUeA0U2EGeakRRelzZEbSCJ9wCCXXu88a5Rz6y9zyKv1/0XhcSX3RyECJwig /N1aiB62+S4SQ== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id B55A04E0B for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 9F97A3A0998 for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 25 Sep 2024 15:29:14 +0200 Message-ID: <20240925132921.11203-3-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240925132921.11203-1-anton@khirnov.net> References: <20240925132921.11203-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 03/10] doc/examples/decode_filter_video: stop using avfilter_graph_alloc_filter() incorrectly X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: TAQl/Q6ED0Ir See previous commits for details. --- doc/examples/decode_filter_video.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/doc/examples/decode_filter_video.c b/doc/examples/decode_filter_video.c index b91ca56d4e..4a5247dbf2 100644 --- a/doc/examples/decode_filter_video.c +++ b/doc/examples/decode_filter_video.c @@ -122,10 +122,10 @@ static int init_filters(const char *filters_descr) } /* buffer video sink: to terminate the filter chain. */ - ret = avfilter_graph_create_filter(&buffersink_ctx, buffersink, "out", - NULL, NULL, filter_graph); - if (ret < 0) { + buffersink_ctx = avfilter_graph_alloc_filter(filter_graph, buffersink, "out"); + if (!buffersink_ctx) { av_log(NULL, AV_LOG_ERROR, "Cannot create buffer sink\n"); + ret = AVERROR(ENOMEM); goto end; } @@ -136,6 +136,12 @@ static int init_filters(const char *filters_descr) goto end; } + ret = avfilter_init_dict(buffersink_ctx, NULL); + if (ret < 0) { + av_log(NULL, AV_LOG_ERROR, "Cannot initialize buffer sink\n"); + goto end; + } + /* * Set the endpoints for the filter graph. The filter_graph will * be linked to the graph described by filters_descr. From patchwork Wed Sep 25 13:29:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 51846 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:9548:0:b0:48e:c0f8:d0de with SMTP id t8csp472580vqk; Wed, 25 Sep 2024 06:39:23 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCV4rTO1rWRXFW3BqbujaiN2IjQkwoHaRE0pz9VRNo/7zWH1uZdKcCU28ZTskdq3+gbY1MdVDzmmSDZwsWo+QZca@gmail.com X-Google-Smtp-Source: AGHT+IGAwXXjUBI9CPGnUO0t4tnHqGIkh1ASXagSiV8kFLweiTbH7BT+ECHeUJF+aH9Eut8Rpgim X-Received: by 2002:a2e:a994:0:b0:2f7:94b3:cea7 with SMTP id 38308e7fff4ca-2f91caa09e8mr20305191fa.38.1727271563289; Wed, 25 Sep 2024 06:39:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727271563; cv=none; d=google.com; s=arc-20240605; b=d9pdjnicorU8KRtygEXR5ugmY8zlkiqLnSMbDCIoGm8HZ7hG3Qzp0/PIlSS3oT/8x0 k6oUMU5lTVNStRPe2/lDVAVG7GPf5uI4xAJn13IHe9u3IMVTN9jISdEp6kKolnH8sRBJ g36mfT0XCC/R0VzO3LcQoCgKEO/kgqsM3gIzUUnnw36aJVz4DqI+AXjLZ4ZhG8XOY2GB mm5Zkq6unnW03HrbjIHrGfZoKjHRBpAs0w2cUwPWpksJIDRZBEnTai4xkeIpU/mJ+D7y mqgjgz/POKQi+2+q+5k2wu7IwF111WgfYm84N34eIHqCpX5WR6OGoP+asF5LIFvA4WAG yivA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=bL2pxs2INd+2+d0e5nof8AjLOWZErl91PdiVfbZeJCo=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=AXLvzqnAwu4d1aiWPXsVCuh3o4X6VQvWN8rttgzbZcGWb3tnD89QJKr+GpM1eh4WAf RzWyPXXhr6ZZ6iL9kNcwyiHOjIqM3TyyyHFqXPDEr7Q709YrwI+Eh1q7nBevrm1P7+iD /XBjFFrImEeBduS4TaEkt5oX2GdjY7GPYtl0cJg74iQ2W/EAr3DSyQTS+zrwalrQgRas DkUErTxC/dQhv3ff7a6/5vwJs6eOHhYDlIzF58so1loDteWtamr36NUA1cT4THHj64Hx /64pt57EAODhLf8aI0l/hjVLwm+iYYx+1FugLdq3SFo+jX8cZkJvYedaOHUZZ4rTXstz LYLw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=UFbTrDat; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 38308e7fff4ca-2f8d288e0bcsi10064041fa.250.2024.09.25.06.39.22; Wed, 25 Sep 2024 06:39:23 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=UFbTrDat; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 118C668DC4A; Wed, 25 Sep 2024 16:29:44 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 49BDA68DAEB for ; Wed, 25 Sep 2024 16:29:32 +0300 (EEST) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=UFbTrDat; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 154E14E14 for ; Wed, 25 Sep 2024 15:29:27 +0200 (CEST) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id qo1F0WD9yCLU for ; Wed, 25 Sep 2024 15:29:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1727270965; bh=K9s3z1zYUl4RKYmRUY2Aal0HsqGQfJQQqADJ4sXZAXw=; h=From:To:Subject:Date:In-Reply-To:References:From; b=UFbTrDatlUHpPKgy+zFf95pcBKn+FnZ01Uhr23cPqdDAgEaqiwjETiG5XWzNSLHSJ N1KREQG58aNubJnJc+5pip+VhKpeTsyA01OdOVPxnYQFzDyQd92j7ST2AsKYwDksQs 5EE1EPLfskvvd8F0XYZ3JQ2Ty4VOu8e21QVEkYax+D99LVwm0p8Vm/gGv5OGWSh8PU S6tQasw+UDkSWOw4E98ZWOWplQ5qOhMgngGMlTCdW1wNJqGz6K3Fj+9qCkXcjGTdeg Q06qcUrNPDXLlFrfm7Nja7EFfE/QrsfwFQBpTnypeZaeDQEAr5A5ihRMe5PkFWwKWv Ar0Tzix74bfHw== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id CA2214E0C for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id AB2433A0F02 for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 25 Sep 2024 15:29:15 +0200 Message-ID: <20240925132921.11203-4-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240925132921.11203-1-anton@khirnov.net> References: <20240925132921.11203-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 04/10] doc/examples/transcode: stop using avfilter_graph_alloc_filter() incorrectly X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: eyJSXpeYEng8 See previous commits for details. --- doc/examples/transcode.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/doc/examples/transcode.c b/doc/examples/transcode.c index cbe5088ef6..7d1e1826a3 100644 --- a/doc/examples/transcode.c +++ b/doc/examples/transcode.c @@ -283,10 +283,10 @@ static int init_filter(FilteringContext* fctx, AVCodecContext *dec_ctx, goto end; } - ret = avfilter_graph_create_filter(&buffersink_ctx, buffersink, "out", - NULL, NULL, filter_graph); - if (ret < 0) { + buffersink_ctx = avfilter_graph_alloc_filter(filter_graph, buffersink, "out"); + if (!buffersink_ctx) { av_log(NULL, AV_LOG_ERROR, "Cannot create buffer sink\n"); + ret = AVERROR(ENOMEM); goto end; } @@ -297,6 +297,12 @@ static int init_filter(FilteringContext* fctx, AVCodecContext *dec_ctx, av_log(NULL, AV_LOG_ERROR, "Cannot set output pixel format\n"); goto end; } + + ret = avfilter_init_dict(buffersink_ctx, NULL); + if (ret < 0) { + av_log(NULL, AV_LOG_ERROR, "Cannot initialize buffer sink\n"); + goto end; + } } else if (dec_ctx->codec_type == AVMEDIA_TYPE_AUDIO) { char buf[64]; buffersrc = avfilter_get_by_name("abuffer"); @@ -322,10 +328,10 @@ static int init_filter(FilteringContext* fctx, AVCodecContext *dec_ctx, goto end; } - ret = avfilter_graph_create_filter(&buffersink_ctx, buffersink, "out", - NULL, NULL, filter_graph); - if (ret < 0) { + buffersink_ctx = avfilter_graph_alloc_filter(filter_graph, buffersink, "out"); + if (!buffersink_ctx) { av_log(NULL, AV_LOG_ERROR, "Cannot create audio buffer sink\n"); + ret = AVERROR(ENOMEM); goto end; } @@ -352,6 +358,12 @@ static int init_filter(FilteringContext* fctx, AVCodecContext *dec_ctx, av_log(NULL, AV_LOG_ERROR, "Cannot set output sample rate\n"); goto end; } + + ret = avfilter_init_dict(buffersink_ctx, NULL); + if (ret < 0) { + av_log(NULL, AV_LOG_ERROR, "Cannot initialize audio buffer sink\n"); + goto end; + } } else { ret = AVERROR_UNKNOWN; goto end; From patchwork Wed Sep 25 13:29:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 51853 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:9548:0:b0:48e:c0f8:d0de with SMTP id t8csp759140vqk; Wed, 25 Sep 2024 14:49:18 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXi3otwxacFZA1q1IQam4jFrtEVXC21xZzHvYx7y9M2v6GkGLogFwGh8CUhEEidaKDU5x8oVBEjDOmSSaDwcv3e@gmail.com X-Google-Smtp-Source: AGHT+IENGZ3y7KL1rLPppqP478qi9vH3LHc3DQTrRok298X4wDeOWEktTg8mRMCpDCGTedtwj35A X-Received: by 2002:a2e:a992:0:b0:2ef:2855:533f with SMTP id 38308e7fff4ca-2f916005447mr22019131fa.16.1727300958298; Wed, 25 Sep 2024 14:49:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727300958; cv=none; d=google.com; s=arc-20240605; b=bJf9rsiOUE5fsmJq0Y2pp3ZlN3AICtP9OcOu3sIALR2zMN/P5DAp/Kw9foUOIzBnHB zA0MNoyWquP0P+f+CqYMDOAEaY1C0GgvVtkc6/4+cpHozEVVznK0VBHklsEMzViLJ6w7 rWMFYiFt7cmGHjEi5la62kA8tqvMlnbJsVDDNB1QpNhUopPOXwRIiOLZMvtvsKIG3Ow1 qpyttuWlwq8C5FybWgl6GbwGhZ6zuitK/1toCpHNX98MW75MwljddcJpzdheSvx7u+AJ kwSw+e9kiT4XRjjXh8MMLrJxgH/hD+9CfWW49P8JAK86zNdDySF1G22osJlDjC2b8Wif 83rQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=M0jSJDyLXY0TvFriwaOaOSNkwC+W00eyBCIJVBjshVM=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=e7cHWpVT9wP1HLtDQ/q+3fPgUebc3QXbcqEKFmLuqJbLih3ByrB3opHvRVG3X5tTJv Vc5x67eDvVQfttxaBwe2o0j1N4mKpCpPS8+aiCw5AUbnLQmvzSbAJ1J6RgSykXo3EF2M yLOdhhJeOfe6kLYswfg1GWQn4yGw4hqTzzTxGiPgLO+u5Rwasl/H9SZgsgiUr95EQuZT rtxdchMRwRzr0zp+tr5DRY1bSSaMyaY2C3N5+zULKHGpVzBIXN41R5Adyp3MqLYvdLfc AqU18kSG0OfEgnYqVKffiPZ/eoVyZPgOifViiFgOkBtkw0aLrYcBYCguBwGnZKay+9DR pPZw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=nCLgLpoH; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 38308e7fff4ca-2f8d282f73esi13827461fa.20.2024.09.25.14.49.17; Wed, 25 Sep 2024 14:49:18 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=nCLgLpoH; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6C31168DBD4; Wed, 25 Sep 2024 16:29:37 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DA30868DA56 for ; Wed, 25 Sep 2024 16:29:26 +0300 (EEST) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=nCLgLpoH; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id C38194E1A for ; Wed, 25 Sep 2024 15:29:25 +0200 (CEST) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id 8ZUsdgR_JDq1 for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1727270964; bh=euO8MMDzVh6a6SxJ68gHngMQXtoO6jdpziyItQZh6sc=; h=From:To:Subject:Date:In-Reply-To:References:From; b=nCLgLpoHfQ91zZj8JBY5UhKlQPem4gV/Ctep36PVZyXgecYMofopPi9kO5IXIAaqQ Koc93g2EWrC/jDWZp5MfXpKH2rOsI/vgio2HJe7KJNvk88maoZGH0lrWL4lZAnAxTC xbXt0vDe0oWPdEdy5GBPYiSSWyHom71H6tDCupBgNOW/FHZxCHo0F0xIYD7oTQCndb HRubB8lnNVj22XnKFJb5oTrYqb1Xf+AjfY5cdlMRyrIKKBJHsCbswcomaUHpzvBOWx pf4fQnoQQSsByTFztCsJWt+1GuRgE+zLvStFuDhfAUMtP8OeKHQN61zAouhs3lS4R8 JZETONYIWLpBQ== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id CBF224E0F for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id B5DD83A0F41 for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 25 Sep 2024 15:29:16 +0200 Message-ID: <20240925132921.11203-5-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240925132921.11203-1-anton@khirnov.net> References: <20240925132921.11203-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 05/10] doc/examples/transcode: switch to avcodec_get_supported_config() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: M0DRX5JSYf3d --- doc/examples/transcode.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/doc/examples/transcode.c b/doc/examples/transcode.c index 7d1e1826a3..54fb315236 100644 --- a/doc/examples/transcode.c +++ b/doc/examples/transcode.c @@ -171,23 +171,38 @@ static int open_output_file(const char *filename) * sample rate etc.). These properties can be changed for output * streams easily using filters */ if (dec_ctx->codec_type == AVMEDIA_TYPE_VIDEO) { + const enum AVPixelFormat *pix_fmts = NULL; + enc_ctx->height = dec_ctx->height; enc_ctx->width = dec_ctx->width; enc_ctx->sample_aspect_ratio = dec_ctx->sample_aspect_ratio; + + ret = avcodec_get_supported_config(dec_ctx, NULL, + AV_CODEC_CONFIG_PIX_FORMAT, 0, + (const void**)&pix_fmts, NULL); + /* take first format from list of supported formats */ - if (encoder->pix_fmts) - enc_ctx->pix_fmt = encoder->pix_fmts[0]; - else - enc_ctx->pix_fmt = dec_ctx->pix_fmt; + enc_ctx->pix_fmt = (ret >= 0 && pix_fmts) ? + pix_fmts[0] : dec_ctx->pix_fmt; + /* video time_base can be set to whatever is handy and supported by encoder */ enc_ctx->time_base = av_inv_q(dec_ctx->framerate); } else { + const enum AVSampleFormat *sample_fmts = NULL; + enc_ctx->sample_rate = dec_ctx->sample_rate; ret = av_channel_layout_copy(&enc_ctx->ch_layout, &dec_ctx->ch_layout); if (ret < 0) return ret; + + ret = avcodec_get_supported_config(dec_ctx, NULL, + AV_CODEC_CONFIG_SAMPLE_FORMAT, 0, + (const void**)&sample_fmts, NULL); + /* take first format from list of supported formats */ - enc_ctx->sample_fmt = encoder->sample_fmts[0]; + enc_ctx->sample_fmt = (ret >= 0 && sample_fmts) ? + sample_fmts[0] : dec_ctx->sample_fmt; + enc_ctx->time_base = (AVRational){1, enc_ctx->sample_rate}; } From patchwork Wed Sep 25 13:29:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 51841 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:9548:0:b0:48e:c0f8:d0de with SMTP id t8csp466046vqk; Wed, 25 Sep 2024 06:29:49 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCX6H0SO++wL7tKxHYLO80/miEfRLfpmd4Gl5jAEs5v62L1d6Bigzhi6upJaaXX2aR0XIIAzqhefelZBwJctPDzl@gmail.com X-Google-Smtp-Source: AGHT+IHanBHHFDdb1Lu6cWydMgxSS+Fbzp/12JO7Nukx9e/Gx/YAr/yYl0BXg61GZi5CWVla8x6C X-Received: by 2002:a2e:b893:0:b0:2f4:5d9:e8e3 with SMTP id 38308e7fff4ca-2f914bb8297mr17204751fa.7.1727270988899; Wed, 25 Sep 2024 06:29:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727270988; cv=none; d=google.com; s=arc-20240605; b=d1ynDx35rymXMVG8mhmVrnci8bmkurHwE9KEs/Gr/CUkd9sGxHEikyPfb7M5LgSRT2 hYlNZbrMU4dP0fzpOebVJkZ+zQfjKlKd7Kkk7InM2yOAuOubhIB9U+6TuSC9yVdakd8w V13H61llNBFhl0nbqbv+GCA4LcvMIT4WmW7bnH4T61VfVQ9m4vUpz3VLVlNfpwwjwkOY u4VxtDmeB22ssDNttWhIqD2OmpS/1rGslSAtv4NCZQGempuKSU0Jtd8n9Qj7UEOmmCZh xy6YXyWHGHnUzmOTF5Pu+GSvw2bjIHevZlhY001Vzs6zYySRI908VtiTZ2aJZSCU8lSa nGrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=PE3DcP1Cfrx0Hhx8nu/gSpo202nJRU+47MeIWBcKuR0=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=BTaveut/iBpp2LFqi6bH22Q/B/XaJbM+EC/JdScldRwVYx6XYWhbs8hI3NY36SoSdv PlGKO6CPlCbpqeQJ2q2WA3YIS11dRh5ike9nf0IvDl/pS2Ov0QhMa6bEZ1IZtb4z/EtA cA1w76zGdOkAPLkm+EGFzvHujV8cbrmsdUb/BvL4E9dANWMzewhem0/L5nI6mek52p8t ueFBEMWSIVkqmPuxzhTeCUnQxMqMLlw/NunNAFWJAqMAOxdOgySMi/016JcyI3pyYhI0 2PAX0eGB6pnRBXkOuyq3G1hvqjYqNNxwEeKaj5edkBqJyLFmZ7xPuy+d/HMy9KEhcnIA OB+A==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=IOFcW8JU; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 38308e7fff4ca-2f8d283b858si11166701fa.191.2024.09.25.06.29.48; Wed, 25 Sep 2024 06:29:48 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=IOFcW8JU; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 25F7F68DB7A; Wed, 25 Sep 2024 16:29:35 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D6FA868DA40 for ; Wed, 25 Sep 2024 16:29:26 +0300 (EEST) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=IOFcW8JU; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 6ED6F4DE6 for ; Wed, 25 Sep 2024 15:29:26 +0200 (CEST) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id y5J9wPTl8d9m for ; Wed, 25 Sep 2024 15:29:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1727270964; bh=JDxxi1Du/3R+P2jiEGpqqFLz+rMv0xpUnoWReizbjwM=; h=From:To:Subject:Date:In-Reply-To:References:From; b=IOFcW8JUp1EsE7vgCcEzx04gpmT1ObHzWGdhGr8LUOTrVhOj9yPvKfFavtvdGZAU6 3k981LYVMRsnEo6kSgvb1U/CoquzXhZMn9oF7Y60hosdthSL453+eMwXxsjloLtDI+ GamGLHlOaBssrapCIXDTuRkSdIc73MfisyWYTsVMZSfECs5idS5W8IKuNll99OGiAK 4D3Y1xJlhIEdUvHbd6qUqXxRAIXnwv6ZLvlKBUhOJkwacJDg8kyPQj/ek+Bs6bsKIy B3gZ05fbkUdlbwH5zjKVYqzupmvhedmHXGHZirCVUpZFuBN4XMecyFs7M180Lloun/ UgLjXoWWOhz+Q== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id DAF1F4E11 for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id C09973A0F6F for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 25 Sep 2024 15:29:17 +0200 Message-ID: <20240925132921.11203-6-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240925132921.11203-1-anton@khirnov.net> References: <20240925132921.11203-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 06/10] lavfi/buffersink: allow av_buffersink_set_frame_size() to be called earlier X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: MgNNY4ghmNcj The function currently writes directly into the input link, which requires it to be called after the filter has been linked. However, the documentation does not mention this restriction and the natural place to call av_buffersink_set_frame_size() during the options-setting stage, that is before filter init (and so before the input link exists). --- libavfilter/buffersink.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/libavfilter/buffersink.c b/libavfilter/buffersink.c index 5811720c61..af4dc38792 100644 --- a/libavfilter/buffersink.c +++ b/libavfilter/buffersink.c @@ -42,6 +42,7 @@ typedef struct BufferSinkContext { const AVClass *class; unsigned warning_limit; + unsigned frame_size; /* only used for video */ enum AVPixelFormat *pixel_fmts; ///< list of accepted pixel formats @@ -162,11 +163,25 @@ static int activate(AVFilterContext *ctx) return 0; } +static int config_input_audio(AVFilterLink *inlink) +{ + BufferSinkContext *buf = inlink->dst->priv; + FilterLink *l = ff_filter_link(inlink); + + l->min_samples = l->max_samples = buf->frame_size; + + return 0; +} + void av_buffersink_set_frame_size(AVFilterContext *ctx, unsigned frame_size) { - FilterLink *inlink = ff_filter_link(ctx->inputs[0]); + BufferSinkContext *buf = ctx->priv; + buf->frame_size = frame_size; - inlink->min_samples = inlink->max_samples = frame_size; + if (ctx->inputs && ctx->inputs[0]) { + FilterLink *l = ff_filter_link(ctx->inputs[0]); + l->min_samples = l->max_samples = buf->frame_size; + } } #define MAKE_AVFILTERLINK_ACCESSOR(type, field) \ @@ -368,6 +383,14 @@ const AVFilter ff_vsink_buffer = { FILTER_QUERY_FUNC(vsink_query_formats), }; +static const AVFilterPad inputs_audio[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .config_props = config_input_audio, + }, +}; + const AVFilter ff_asink_abuffer = { .name = "abuffersink", .description = NULL_IF_CONFIG_SMALL("Buffer audio frames, and make them available to the end of the filter graph."), @@ -376,7 +399,7 @@ const AVFilter ff_asink_abuffer = { .init = common_init, .uninit = uninit, .activate = activate, - FILTER_INPUTS(ff_audio_default_filterpad), + FILTER_INPUTS(inputs_audio), .outputs = NULL, FILTER_QUERY_FUNC(asink_query_formats), }; From patchwork Wed Sep 25 13:29:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 51848 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:9548:0:b0:48e:c0f8:d0de with SMTP id t8csp478665vqk; Wed, 25 Sep 2024 06:49:18 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWELwki4Ra9hQ4rLwW9cEV8eh3FoIRP5N+26jILAPL9C2VWscBJ+7Om7n3YCHvoJGdZi2iX7DmGzg8DGrpA4O01@gmail.com X-Google-Smtp-Source: AGHT+IFcEs0lpq7mzIC6mZ1r53JWUWzLWnRDTSc3AMNC7agszMaTrFqhKWLoNcr1O4BKRbbndFv8 X-Received: by 2002:a17:906:dc8f:b0:a86:83f8:f5a2 with SMTP id a640c23a62f3a-a93a038c991mr258477166b.19.1727272158581; Wed, 25 Sep 2024 06:49:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727272158; cv=none; d=google.com; s=arc-20240605; b=KftwBz7JZYQuzpHHEs+Pi4olHzeyGH7WiHixZuTpOf8gKN53WZ1Fl9P48yMLHYKhq+ WYNWYiSQPrBWKGOIKsKXm4FPJ6DUouxJqDyEgqnewxW3Lu/BzkxwJ1sjGWzZMt8nnget uW4b4Ef5UJiyLpz4UBNmeit2nFWl1oEQl++X+zTq846fwY92N7lYhdJSyZcKbNZ/Gaf7 lgf3n/LfS1jlhZDLaX0CI2fgGWOUtejFyW79Sw3aCVCKJtLkoGHVIfpPsZGT+bGeE3Li LTwGkFoxSumhRfb6quL93M8nB1AgKpt5y1/SqZHFqXx3dib8zfZcflRwKO6XYNFJVAgR 8rLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=qg53nj1zYh4tqoOKIS6hG9wzwW6HFpfHf+8uwyws1T8=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=L2I+WqgP+gZYxGz9F4TlVjWa0QsTR3oE0wLZOHj6HVi2R6hpEDLnKL33Kl6fR/pAar IQvviIuq7yp+V+O14xjX6BdQb/l14O3yKDdZ5TY0rbpgWY1mN5Rdzk7lM7qhjobL1V4B Mk+nlfM/pjzUMTFBUNOt66eyW2GhPOfvcULoaXmh1W5U+afzMFGAmzFSpDPgbtkE8Xmg FIRdu5waYsBbZlR0Zkwz5co22SaUQZXKESyCVvc4ctJ+SZJoTz+b4dBg4lg5FtXQYpgD bK/YEW1Ra4MhJktWap1rG+FTVhiHDEWTwUhXHqtHNfSgsOpd9JRbi7StDm3E4SqCdfFv CBsg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=WD3rYcJZ; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a9393115111si249827966b.780.2024.09.25.06.49.18; Wed, 25 Sep 2024 06:49:18 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=WD3rYcJZ; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3A30B68DC17; Wed, 25 Sep 2024 16:29:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 495BC68DADA for ; Wed, 25 Sep 2024 16:29:32 +0300 (EEST) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=WD3rYcJZ; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 7F42A4E0B for ; Wed, 25 Sep 2024 15:29:26 +0200 (CEST) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id h-92Gb0GYD-P for ; Wed, 25 Sep 2024 15:29:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1727270964; bh=zvpo3lb4z4qrjobYt/0tL73AwUXkj5MKYoFPhCa4bYc=; h=From:To:Subject:Date:In-Reply-To:References:From; b=WD3rYcJZJ74KUX0WJlnapeg6JtQX6lVmvD1Yz8BB5P4fDWSlzi/yhWH5AvMtlcxse ueQ96AjZiauabiN2VhwfMkChJyG03w8WKnXR3nt2/hM656MU+UoZ9yLUrNxBjcr9Wq 3b5btPXiqWmnTVwumB1q9giRgw8SaU7L1n7JgzzZwDYJMNuOdbYL48nRNER5ODYw7a V5toI4zNgw9EidTsKteq+AOUmwIMb0QVaA+DZee8SF5QIyMIEXpiFFe5gumNd+eSfN v0FmwZ+ymwQH6ViidT81lvDePRjMJ/aV08IheqP5JYco5XMqbTS9LWTa+QOuZ1PIAm lVNWJLfQkHMIQ== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id E17564E12 for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id CB56D3A164C for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 25 Sep 2024 15:29:18 +0200 Message-ID: <20240925132921.11203-7-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240925132921.11203-1-anton@khirnov.net> References: <20240925132921.11203-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 07/10] doc/examples/transcode: handle audio encoder frame size restrictions X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 9aBZV4Dvk2N7 --- doc/examples/transcode.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/examples/transcode.c b/doc/examples/transcode.c index 54fb315236..1dc1b50502 100644 --- a/doc/examples/transcode.c +++ b/doc/examples/transcode.c @@ -374,6 +374,9 @@ static int init_filter(FilteringContext* fctx, AVCodecContext *dec_ctx, goto end; } + if (enc_ctx->frame_size > 0) + av_buffersink_set_frame_size(buffersink_ctx, enc_ctx->frame_size); + ret = avfilter_init_dict(buffersink_ctx, NULL); if (ret < 0) { av_log(NULL, AV_LOG_ERROR, "Cannot initialize audio buffer sink\n"); From patchwork Wed Sep 25 13:29:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 51844 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:9548:0:b0:48e:c0f8:d0de with SMTP id t8csp466614vqk; Wed, 25 Sep 2024 06:30:32 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVpz/EAbz6msKn+hGzdCOXSgrclv9Y8GJOmulHiLdlPsBhlIULteM5EIcyyxYpXNwgMV2ycGoV+OIU74KYqFOyU@gmail.com X-Google-Smtp-Source: AGHT+IEYIJYWbRPWmQD3OO+n/r3a7MY3mlL7YF1bHTUgKoR7cntS0r3o6pE9qrkQACdCDKzAokrh X-Received: by 2002:a05:6512:31c7:b0:536:a4f1:d20e with SMTP id 2adb3069b0e04-53877533057mr1799843e87.29.1727271032283; Wed, 25 Sep 2024 06:30:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727271032; cv=none; d=google.com; s=arc-20240605; b=OOQC9Alc1rDxSwADYZ+7Lps1U144Gvgic5QhM7fp+b6AeXgReufbg4lqKZBu+pDjK5 fzD4L8I/SUyMBvDNj0Xq30gMCbTeThX2Y4TSbmP2KHDbwTfC7o2/8a3ZyxwAZtEn4ijA n6ltlXfbVHbrmHWEselA6XDWbc88hVffJGYSm0nbpXPG9r7wzGgMALfnD7/UsjrDHvkD sjUMPU2LUkQ/WRSDutXEE5OHaFlQIL5S4RcLhiHkTrGVjkm3917g0ACUvpghJDX8b1L7 bTFAO/A2OkdzJi7hqSAAT5oWO/ZMIA+IEcE1Pf5xAj/36Cw5dYO0wAPFQ0jfvEv1uECm bS0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=XmU61T4UAKreaW6HG+v7lq+YGlf8w9rLDIdFIjVnvr8=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=PXpHvnk/6E4cDiTMiTKi9L+XOQFxuvt+63o3733X6GX0GRHBk9hYCCy25N7S9YS7LY A5djZnDugk0fV2CA37WAduTjvr3eKwPX8Md/3Lve0KGQDgiMyTpZoUuY0nSFcF2pOj7c h38X4olPT4afljDI5emki175tR/mvn4XT7luTKkF8BQZbz+nGc+k1+KN+h+9OHtlGVBs yD+JkRivY2rMT+fj5YpftgzVGrrBS9e6l/qkA1bAzBJ65UwkQrV4/7JD2rd84eIgmm75 CsAA4Srb7NfPf9MngXQ9iMXDT7ZCa49iYb8Tlf0C9sFL1XubVqR8QApiasvK2S1rrOfe HL0g==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b="GZtoq/pt"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 2adb3069b0e04-537a8650d32si1215693e87.618.2024.09.25.06.30.31; Wed, 25 Sep 2024 06:30:32 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b="GZtoq/pt"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1514B68DBEC; Wed, 25 Sep 2024 16:29:40 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 48C1A68DA56 for ; Wed, 25 Sep 2024 16:29:32 +0300 (EEST) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=GZtoq/pt; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id DF6AC4E11 for ; Wed, 25 Sep 2024 15:29:26 +0200 (CEST) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id QiE-70M7GASD for ; Wed, 25 Sep 2024 15:29:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1727270965; bh=snKOZsYHDxWE7twVNWbXpGGLB+ZuykI3HvxPYPJNq9I=; h=From:To:Subject:Date:In-Reply-To:References:From; b=GZtoq/ptiqCQ7CHEwH9o3DpeelIVXNvNJum5yazGmeAiNfNhfOiK7XZv1GgXdT1un k6m3WzBQ2Yv1iqxRvWSkwKTe6d5h54NeOdSAukAo3U9HvQcUjsCa5/uVRIfw+6tG9t zNLUh/vICcR6TDuiDbHKi8SGwmsyLU89LcIjNvahjIWB6Iq2CziHCU7rLe9WS3OKrd TPtkcuObviFr37B+A5nKLAl63Rn0DrdkN1SXsei+nzGN2/PQMrR0JAAvb77FA5XQzU IMMeGbl5sJcJPsdJ6+WuixtMgLkbqntQSlr3PrCNXjnc6MH1dXGzLdM0hZW51sFS0M mbrWXGWzvIRuA== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id F07394E13 for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id D63C23A086F for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 25 Sep 2024 15:29:19 +0200 Message-ID: <20240925132921.11203-8-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240925132921.11203-1-anton@khirnov.net> References: <20240925132921.11203-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 08/10] fftools/ffplay: stop using avfilter_graph_alloc_filter() incorrectly X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: os/c+UqaItLg This function creates AND initializes a filter, so setting any filter options after it is wrong. It happens to work when the filter's init function does not touch the options in question, but is forbidden by the API and is not guaranteed to remain functional. Instead, use avfilter_graph_alloc_filter(), followed by setting the options, and avfilter_init_dict(). --- fftools/ffplay.c | 56 +++++++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/fftools/ffplay.c b/fftools/ffplay.c index 60d8874eab..349c6075da 100644 --- a/fftools/ffplay.c +++ b/fftools/ffplay.c @@ -1861,7 +1861,6 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c { enum AVPixelFormat pix_fmts[FF_ARRAY_ELEMS(sdl_texture_format_map)]; char sws_flags_str[512] = ""; - char buffersrc_args[256]; int ret; AVFilterContext *filt_src = NULL, *filt_out = NULL, *last_filter = NULL; AVCodecParameters *codecpar = is->video_st->codecpar; @@ -1895,38 +1894,48 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c graph->scale_sws_opts = av_strdup(sws_flags_str); - snprintf(buffersrc_args, sizeof(buffersrc_args), - "video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:pixel_aspect=%d/%d:" - "colorspace=%d:range=%d", - frame->width, frame->height, frame->format, - is->video_st->time_base.num, is->video_st->time_base.den, - codecpar->sample_aspect_ratio.num, FFMAX(codecpar->sample_aspect_ratio.den, 1), - frame->colorspace, frame->color_range); - if (fr.num && fr.den) - av_strlcatf(buffersrc_args, sizeof(buffersrc_args), ":frame_rate=%d/%d", fr.num, fr.den); - if ((ret = avfilter_graph_create_filter(&filt_src, - avfilter_get_by_name("buffer"), - "ffplay_buffer", buffersrc_args, NULL, - graph)) < 0) + filt_src = avfilter_graph_alloc_filter(graph, avfilter_get_by_name("buffer"), + "ffplay_buffer"); + if (!filt_src) { + ret = AVERROR(ENOMEM); goto fail; + } + + par->format = frame->format; + par->time_base = is->video_st->time_base; + par->width = frame->width; + par->height = frame->height; + par->sample_aspect_ratio = codecpar->sample_aspect_ratio; + par->color_space = frame->colorspace; + par->color_range = frame->color_range; + par->frame_rate = fr; par->hw_frames_ctx = frame->hw_frames_ctx; ret = av_buffersrc_parameters_set(filt_src, par); if (ret < 0) goto fail; - ret = avfilter_graph_create_filter(&filt_out, - avfilter_get_by_name("buffersink"), - "ffplay_buffersink", NULL, NULL, graph); + ret = avfilter_init_dict(filt_src, NULL); if (ret < 0) goto fail; + filt_out = avfilter_graph_alloc_filter(graph, avfilter_get_by_name("buffersink"), + "ffplay_buffersink"); + if (!filt_out) { + ret = AVERROR(ENOMEM); + goto fail; + } + if ((ret = av_opt_set_int_list(filt_out, "pix_fmts", pix_fmts, AV_PIX_FMT_NONE, AV_OPT_SEARCH_CHILDREN)) < 0) goto fail; if (!vk_renderer && (ret = av_opt_set_int_list(filt_out, "color_spaces", sdl_supported_color_spaces, AVCOL_SPC_UNSPECIFIED, AV_OPT_SEARCH_CHILDREN)) < 0) goto fail; + ret = avfilter_init_dict(filt_out, NULL); + if (ret < 0) + goto fail; + last_filter = filt_out; /* Note: this macro adds a filter before the lastly added filter, so the @@ -2029,12 +2038,12 @@ static int configure_audio_filters(VideoState *is, const char *afilters, int for if (ret < 0) goto end; - - ret = avfilter_graph_create_filter(&filt_asink, - avfilter_get_by_name("abuffersink"), "ffplay_abuffersink", - NULL, NULL, is->agraph); - if (ret < 0) + filt_asink = avfilter_graph_alloc_filter(is->agraph, avfilter_get_by_name("abuffersink"), + "ffplay_abuffersink"); + if (!filt_asink) { + ret = AVERROR(ENOMEM); goto end; + } if ((ret = av_opt_set_int_list(filt_asink, "sample_fmts", sample_fmts, AV_SAMPLE_FMT_NONE, AV_OPT_SEARCH_CHILDREN)) < 0) goto end; @@ -2053,6 +2062,9 @@ static int configure_audio_filters(VideoState *is, const char *afilters, int for goto end; } + ret = avfilter_init_dict(filt_asink, NULL); + if (ret < 0) + goto end; if ((ret = configure_filtergraph(is->agraph, afilters, filt_asrc, filt_asink)) < 0) goto end; From patchwork Wed Sep 25 13:29:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 51847 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:9548:0:b0:48e:c0f8:d0de with SMTP id t8csp472653vqk; Wed, 25 Sep 2024 06:39:32 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXRBVPx2H/zcSt2GWRk26DI7P6t4hAMjDRnM+brhJXhc0ez7Y9px5eHPngpRjkcNv8RGlSAOxgcpU46P7wDL7Q0@gmail.com X-Google-Smtp-Source: AGHT+IFTNFA97F8OLMBtgMQU28IwV80jNR4fkDvXvVeSQod1/sxtnCQ5VCtdGBBhukgcqst7dn9D X-Received: by 2002:a05:6512:b8a:b0:536:a4e9:9cf7 with SMTP id 2adb3069b0e04-53877566002mr1475549e87.56.1727271572499; Wed, 25 Sep 2024 06:39:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727271572; cv=none; d=google.com; s=arc-20240605; b=fgysDMA/bh6JlRwqHQj3mrqtBp9vuSrUG+1TCTvCtW1KcA+cGGBI+JuE7vmLSuUcQg ha5nM9HyO5/t5NrTAZT91OylGWZibZMyXvjmVnmc8iUGqYVN3lTj0Ls6h4F5afpEGygj h3uxEEy80fB30IgK17aiBQJMj2J+jc+0CUNu8I2FjZLg8fat0kmsg/7ySRlZMoBNJO4H 5ivfxt+puPlYRd/dLsHkHdSzCaNV61aXO2TfIvOhXIDe22P8P96CshGqXihQGWHxawEc IffkqtVcm3aJYAk1Bvhxwe8G+xHzr2eE3qEMWKRPJ9gIBL7TTNxJHPhQrXfsFm9dRvvv kaKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=JJAij0zlEFoCFNi2+yQrPOm3ltRAcYg8WGGV9p7RRbw=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=NIvC61BtPSSfYr7cHzf7HUlh5V12rebBW5aXKjdXICLpfSNqVJ7l6nLi0mD8YpirsE owkv3H5StR4lth/B0b0v0lpogcsq7erISzGLzet1KKdYpeBe0dys887OvDlJPlvzS+mS otwxMoOgsJ1rlRH4PmarYDqbgFGoInMBUg8tg+NI6Dp3qsw9E513kIc3hTaRT27ovBzk 8t4Y8dMl2l/Tdlpz3qh/K+AynF96wYx33wT+8M5ecsxcLl5aenwvDuvySm/DeORY1Bht LwR1GtXM790EC4TT591XLjCrsEGt5VrwKkmliAxNRtHowep9/TUPdSpMLk7D5fGXVerQ SHfg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=WAcdaY+h; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 2adb3069b0e04-537a863ea6fsi1306025e87.318.2024.09.25.06.39.32; Wed, 25 Sep 2024 06:39:32 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=WAcdaY+h; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4CEA368DC23; Wed, 25 Sep 2024 16:29:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4912568DABC for ; Wed, 25 Sep 2024 16:29:32 +0300 (EEST) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=WAcdaY+h; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id BACF44E0F for ; Wed, 25 Sep 2024 15:29:26 +0200 (CEST) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id bbC8Fqb0vTyL for ; Wed, 25 Sep 2024 15:29:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1727270964; bh=vZaVgFSliDB1tvh4c1ui1wDGjyr4qWVT1IJeByDGieY=; h=From:To:Subject:Date:In-Reply-To:References:From; b=WAcdaY+hZtVHb8xN4TAZIedkajZIHOIo8TSaob+pxcMWKyP/dKBfT1RuPsl0Gjh4B UWwzIYSyqwxK4y7tBgoz8ue+5tyf8TJMlsWBn6Mhy/03mWS6LF7SXww5z3WC2ywkeo ZpsstTKl5wKt/br6n/E1Jzfq3fsa4DvnTFcC9ZRiMl5DYUuEKceFSYbNTERHiz2iiA t8pXNEESmClSSitAbRaBEM6K3sHB/JQDcAu4LhBJ5BdJKNsYhAddLPDckQyv52AJrU 3fIqrBxWyIUVs2yvZ8iXO0Mlp06NY/z0JJY0dQyjaDTLJBUC3i48dU8bnFt+cxhrHM E3punCliDK01w== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id F07B44E18 for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id E1CDB3A17BA for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 25 Sep 2024 15:29:20 +0200 Message-ID: <20240925132921.11203-9-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240925132921.11203-1-anton@khirnov.net> References: <20240925132921.11203-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 09/10] lavd/lavfi: stop using avfilter_graph_alloc_filter() incorrectly X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: X78yPS2PSDdA See previous commits for details. --- libavdevice/lavfi.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/libavdevice/lavfi.c b/libavdevice/lavfi.c index ce10d61f8a..17657a0638 100644 --- a/libavdevice/lavfi.c +++ b/libavdevice/lavfi.c @@ -249,18 +249,24 @@ av_cold static int lavfi_read_header(AVFormatContext *avctx) AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_DBL, }; - ret = avfilter_graph_create_filter(&sink, abuffersink, - inout->name, NULL, - NULL, lavfi->graph); - if (ret >= 0) - ret = av_opt_set_bin(sink, "sample_fmts", (const uint8_t*)sample_fmts, - sizeof(sample_fmts), AV_OPT_SEARCH_CHILDREN); + sink = avfilter_graph_alloc_filter(lavfi->graph, abuffersink, inout->name); + if (!sink) { + ret = AVERROR(ENOMEM); + goto end; + } + + ret = av_opt_set_bin(sink, "sample_fmts", (const uint8_t*)sample_fmts, + sizeof(sample_fmts), AV_OPT_SEARCH_CHILDREN); if (ret < 0) goto end; ret = av_opt_set_int(sink, "all_channel_counts", 1, AV_OPT_SEARCH_CHILDREN); if (ret < 0) goto end; + + ret = avfilter_init_dict(sink, NULL); + if (ret < 0) + goto end; } else { av_log(avctx, AV_LOG_ERROR, "Output '%s' is not a video or audio output, not yet supported\n", inout->name); From patchwork Wed Sep 25 13:29:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 51845 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:9548:0:b0:48e:c0f8:d0de with SMTP id t8csp472542vqk; Wed, 25 Sep 2024 06:39:20 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWVGuGUeVrvnOn4gG02aTiY2xG+s7jM0KMPEafzf4xOj8hsFQ45iTL7yCfmrcoWjIZI5f/IgXMMOIBCKW3rPjY0@gmail.com X-Google-Smtp-Source: AGHT+IEHay3+f91SBeoD7XGJmC/5Gy3IM3DF1UVnNAjiMtJkg21zH1zjWB+3akT/bbj7B0oAAd9u X-Received: by 2002:a17:907:7ba3:b0:a86:8ff8:1dd8 with SMTP id a640c23a62f3a-a93a06331ddmr232788366b.46.1727271560417; Wed, 25 Sep 2024 06:39:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727271560; cv=none; d=google.com; s=arc-20240605; b=VRCKotGfY6XNy/yzddl0/ru55kFBDTx55jGpf28WJnBH59I8YNxGzZJLLIoHS43PHC 5YyFblCCtihDf6+pFiPlPrQSqVBZrc4cZ5MBEPjsmMbLQbVxtNU+o17pxzU6U9cJCVC5 2/twx9/GWX4R6WQwJxHlA0j7mVEw1P72NG3rD9/irmL7YAPitZ6DbiPXnq2S1hPv1wZ6 B04G1UzRGR7BdyLnJdhf+hUSYdiDtxLQegRzEMIgItjH4RqCYfZ3Ux9zKtkFdIBDmegy vCMpZGBPP2MvbXheHaRB1L6IogTuosocUbTZowEjhRBTIsM5e6Y0hcHKdzFl5u4NQ6L1 wiLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=u5fOc4+6bJaUwuSMbW/E93dg09XRZt2L6qNiHlheZYk=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=HFN6fB7CuLmQt2ONDvcVnzgZVo6kAF4nlaBhFl7D12XzGaDJsmu9sbhvuH4TLRIUqe PAIwquPdp7O3p6CbJ8Lp8/iE1jwaqaNat62NqV4er+QwMoHb6SDQvZHXCRXNoQEFoztq EXIxh1Z8mNklisUaDqaRQviXScq0MxZtbzXtKUXjZSyU67w+53kt2KIS74JV9GjW+a0G PIylzyhhYWtcZgTLfav+XhDrJ91hYwuOuNQnVlifiypDE8LApMHBNmjelrQKcro3py/g UVKFytiO8vagx7zL973iO6neKqvsigiJQX5e2rPx4atj3ibVLIN4BX6gTxJ4F6SmJrGE ZqMA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=GNhPcisJ; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a939315e670si246236466b.1035.2024.09.25.06.39.19; Wed, 25 Sep 2024 06:39:20 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=GNhPcisJ; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2F4AC68DC32; Wed, 25 Sep 2024 16:29:43 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4A7DF68DAF1 for ; Wed, 25 Sep 2024 16:29:32 +0300 (EEST) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=GNhPcisJ; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 369E84E0C for ; Wed, 25 Sep 2024 15:29:27 +0200 (CEST) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id 6ZOXJsTdmY6h for ; Wed, 25 Sep 2024 15:29:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1727270965; bh=g8rBL4SgP+9fl/kkeNsHbQ/OF9Ox+fNyDbD516iBZNo=; h=From:To:Subject:Date:In-Reply-To:References:From; b=GNhPcisJKgbmseZkNgmCqRtVWSM+zdvGVjrfSEaaFwiTEEqdbV4NW1hb5aWy/TwKH kUM92cA2fRgrbbBunYy+7zn0xn9P7mePdpn49WQfYR9VLwuGMtoAF8wLSIC83YgsTj p5zKmJCXae5ZGsQlKxmbI2LRWTQFyTRnhQmx3+50JaZ/I4ichyJyxtRf9pE4v9m+xs uIZXPwUawO+cHj/zH9evCeArgA3zVyf4qIkgYUdgWCmLpFCMTkvEobXCYh3c0zfC+K ad+iuea2nU7sdmgSe17uy2dxPKeIW5q/mWWhaId61uD07PSaVkCn60sjph/GWaUWAY 24HaZU/hV91Wg== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 0A7DD4E1B for ; Wed, 25 Sep 2024 15:29:25 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id ECE593A03CA for ; Wed, 25 Sep 2024 15:29:24 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 25 Sep 2024 15:29:21 +0200 Message-ID: <20240925132921.11203-10-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240925132921.11203-1-anton@khirnov.net> References: <20240925132921.11203-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 10/10] lavfi: clarify the behaviour of avfilter_graph_create_filter() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: bEInlqp+m4p0 Mention explicitly that no options can be set manually when using this function. --- libavfilter/avfilter.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h index 1401577c50..21066dd8da 100644 --- a/libavfilter/avfilter.h +++ b/libavfilter/avfilter.h @@ -845,9 +845,9 @@ AVFilterContext *avfilter_graph_alloc_filter(AVFilterGraph *graph, AVFilterContext *avfilter_graph_get_filter(AVFilterGraph *graph, const char *name); /** - * Create and add a filter instance into an existing graph. - * The filter instance is created from the filter filt and inited - * with the parameter args. opaque is currently ignored. + * A convenience wrapper that allocates and initializes a filter in a single + * step. The filter instance is created from the filter filt and inited with the + * parameter args. opaque is currently ignored. * * In case of success put in *filt_ctx the pointer to the created * filter instance, otherwise set *filt_ctx to NULL. @@ -856,6 +856,11 @@ AVFilterContext *avfilter_graph_get_filter(AVFilterGraph *graph, const char *nam * @param graph_ctx the filter graph * @return a negative AVERROR error code in case of failure, a non * negative value otherwise + * + * @note Since the filter is initialized after this function successfully + * returns, you MUST NOT set any further options on it. If you need to do + * that, call avfilter_graph_alloc_filter(), followed by setting the + * options, followed by avfilter_init_dict() instead of this function. */ int avfilter_graph_create_filter(AVFilterContext **filt_ctx, const AVFilter *filt, const char *name, const char *args, void *opaque, From patchwork Thu Sep 26 16:18:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 51869 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:b66f:0:b0:48e:c0f8:d0de with SMTP id o15csp504254vqw; Thu, 26 Sep 2024 09:22:07 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVprkcxa6b1xIrwCGinymjKW1kOLuir2YGWOWHOge9UlmEq4SB4u6a880jUbuL95RLr9oYEN6/EnhuyLBa7PeiO@gmail.com X-Google-Smtp-Source: AGHT+IG8lIR9OA69btYV4gdo+SNo9I1SAcLdXDBGvA2kzUJY/FvwA4+mk1I7aEju7TQRnzwzz09Y X-Received: by 2002:a05:6512:158f:b0:52c:e17c:cd7b with SMTP id 2adb3069b0e04-5389fc44ff1mr212890e87.22.1727367726804; Thu, 26 Sep 2024 09:22:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727367726; cv=none; d=google.com; s=arc-20240605; b=NqCovNRXePmaIawpXS3l7uYsXt5POfZ015ur5x9XWXHyX/pIllQRKAIy58KAHwVYlF WdWS4FmlnKVGlYj8O05a9SvdxE1Q0GOkB/YZbI8f5jLvEqfTdiTff3BWhhXJFNYUX2cf xMZsbAGV4Lhl0d4lOv8bEbmiV2FswYLoJOr6yz3W0joX8gR65gUv6D9IMQ9qN/1MgiQ6 Iq6yxGlrzrHzEU62X/SeQfcL/AplgfeL/RKDaK1Su7JrhijPZGzSgzCAFwGv7soFGCCo IUtv0kLUWj9Z1H/eSuSQgrUrnIsbdsLb6nQqI+7ZtTWj6zjcyIu+t1QKarTmoTRsfuFY VKYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=JYmY3Op82I5y/TZj1TwQUcU/oACTrJIyV3v6kBnERrE=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=WtHjoAu9x9icl+3cfCiVA9xx7slhnj2XVYiLN4b76DQ00Ta5BYn4Ij/vhEjF4iebgM +Qunbc1sta3ypb0o987UTQLKwOoKMUi6a3iV7KuV4I+2YX/YnVyW1GQYbHojqxzgQ2vj GapPbLOFyHUgGijncOIu2kM3eat4gQS8R3y8Z5hB98IRcn6UbsmF+o6HTKancOTOCF80 TwwbWCqc3Cah9a66zVemlAeDa85Gxyjf8GbM8yn3++csCFOmpJyhiO29oOe/byZPQTlV XKt1rOgKzUryZb25/02Zv3hifPuoHQliUlncBj6fmJ+hsuWfngRjVoT/BqlRUB/LLZ1Y ZwvA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=YIN6ZYlr; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a93c29e4bc8si18199966b.511.2024.09.26.09.22.06; Thu, 26 Sep 2024 09:22:06 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=YIN6ZYlr; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1BC0C68DC6F; Thu, 26 Sep 2024 19:21:03 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A62D468DD3F for ; Thu, 26 Sep 2024 19:20:49 +0300 (EEST) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=YIN6ZYlr; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 519194E05 for ; Thu, 26 Sep 2024 18:20:49 +0200 (CEST) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id AqzJJVo3_VmY for ; Thu, 26 Sep 2024 18:20:49 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1727367647; bh=SXG59iIFtIaDnZkA4nsF6aNAU7sMG0t3fzbaH3zBoDw=; h=From:To:Subject:Date:In-Reply-To:References:From; b=YIN6ZYlr5gzilImPgbj72eujKw5LvQtjxNYazDO+MFkbdkTuTeuNFHHJ1TYnvMtoO 2ZZSaR8hN7wg9tFtLhgcLEyxfTGFU30oDHUPJaUr+8UdT/j5FpCKW3x2Qdc3om3YXQ YwI53QKtoAjvSurhvcWFGl4KouaVzek9gnNRztRYW91hbbkAFNv+/9BcvNoFpY1lb4 qQnn7RCey2bepBquFlE5TRZ9CVqtlUueOZIiCwzquhnmw0dcx243RFMET51V+JJV5n DGaPvHkOB/1HiRMOtzsazFxjebwy4cQWFcM9Hsw2DFw3ATrRA6JV2yr9vsXby2tp7E x8BTvWhXi0oSw== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 817584DF1 for ; Thu, 26 Sep 2024 18:20:47 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 2FB013A0229 for ; Thu, 26 Sep 2024 18:20:41 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Thu, 26 Sep 2024 18:18:55 +0200 Message-ID: <20240926161901.31421-1-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240925132921.11203-1-anton@khirnov.net> References: <20240925132921.11203-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 11/17] lavu/opt: add missing 'else' X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: TfAshkWnr2He --- libavutil/opt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavutil/opt.c b/libavutil/opt.c index 45db4f484f..02ed9d9fe9 100644 --- a/libavutil/opt.c +++ b/libavutil/opt.c @@ -2362,7 +2362,7 @@ int av_opt_set_array(void *obj, const char *name, int search_flags, ret = opt_set_elem(obj, target_obj, o, *(const char **)src, dst); if (ret < 0) goto fail; - } if (val_type == AV_OPT_TYPE_INT || + } else if (val_type == AV_OPT_TYPE_INT || val_type == AV_OPT_TYPE_INT64 || val_type == AV_OPT_TYPE_FLOAT || val_type == AV_OPT_TYPE_DOUBLE || From patchwork Thu Sep 26 16:18:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 51865 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:b66f:0:b0:48e:c0f8:d0de with SMTP id o15csp503608vqw; Thu, 26 Sep 2024 09:21:12 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUeM66KnbPhDM3rZ+3Psghh06i5Hv2VKTYs7hlAHw8/5SSnvvHkI7L+N0Q7Mm7Tg3w70R1ANnSIT+zL9S4icX59@gmail.com X-Google-Smtp-Source: AGHT+IGXArX1poo61VPv7Z+GFbYbvsZeZWcTBUY1+dJLEllSXGAdVz5YvTIw4TPbYo//Z9NSXDrf X-Received: by 2002:a17:907:3f9c:b0:a93:a664:a23f with SMTP id a640c23a62f3a-a93c3094c7amr54762066b.5.1727367672193; Thu, 26 Sep 2024 09:21:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727367672; cv=none; d=google.com; s=arc-20240605; b=agr+pS3MfyxWjwSFL+2xMewaJ+aZHWhq+GK4Ob5UJeilH72YGjoAmi5lxbIccRLqXy Rk5cH/Eprgtfe8Qssu/cpp3b3ggEoE6oOHOQ1vs2tabmOS8TzTFJIzAuk+CD6zSZOOyP cKeOBb7E6gmGM7PxbpMFI9PQV5pPdByQtdpyeAZQ3zFD6xu3Ymf8hqvHZEMe2Ed4vlPR heW15owmXiALxh7vUtF7IOTR6T9vjLrYc/ACDki+8LFAQRkaQDBlf/cbE51fRNjiu+8Y r+r2lgrx72vmV2J/eD1sOyKoVdZUF4b0lOfB1nTIg6QrXwl5mwxw+UZDdS132fjC0hf8 Mokg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=fDMjpDzGm5RKNBsedhaYpZwrOpQ2tEW1oCO+NbtklXE=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=DV00qf7vmR3AkxWhk0EkbrxonfYYRC2vNNiu6CdbkimRwTGyJXl2EqBphNMqDgbi1h ud2rSrgohUZEp+peX4hkM2CTQjpjRGkrQ9mn1n7ys1SpIfWIVxkANnFN/KWsKgANH62+ i8bQMALlbeDHDoyMLlAF6csUiNE+EyvVqTr6VR2kKP9CnMsGlPQjgax+6yS9Zr68sOfi o0I8IcIGc2mukGaLYmL9yXyOKlPWxO8VtAwWggB/o+vhtcGDVXma0TEci+8o4aJ4fZD1 ec/SPwW7F+ozSPiQ5ub7EKQf72eJrdv1a/hFpyW6sFS7woJrC7U0HjdaFKtyzjnotjI4 3zXQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=GPELZjuO; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a93c29e4bf5si17971066b.524.2024.09.26.09.21.11; Thu, 26 Sep 2024 09:21:12 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=GPELZjuO; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EBDA168DD6F; Thu, 26 Sep 2024 19:20:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 57D6068DC8E for ; Thu, 26 Sep 2024 19:20:49 +0300 (EEST) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=GPELZjuO; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 966204E18 for ; Thu, 26 Sep 2024 18:20:48 +0200 (CEST) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id sjU_Eb3DhXbe for ; Thu, 26 Sep 2024 18:20:47 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1727367647; bh=1hJ5lyiUAMLDOxh9x6qKFThhYmYlqPfs4+UGt3IkAk0=; h=From:To:Subject:Date:In-Reply-To:References:From; b=GPELZjuOcLXQqCgQZVoiECbRk+Frje7PQSWZQ4LxdyU+kqF/I3IrLp7XW6YS/NkEi 1F1neVJ4gqPtmhH/aSlWqPRzTihxTfZZpdTqaRc+we/V794DeD8ROJDD/5B3ojeulN 5h6Ih3tuAIUWVMPzA2QSYz/X3mmrIWctFfEBTDoRGBWURFIIqm2ASRy1dVCuSAHVGx HDqn1ekjwfq2w5ewyU9QVJcmc0lR0UTun/8MPzygHJyfb72uE56SKqPL1LMVu8Cqqn sGDw3tN4/fqr9tGSvlU9XCZ81t7jf3YRCrr2KZDTYmw3PPER+z8o5FR2N4gi3G4Vgr iigB7U1oZvmjw== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 7F8D81F8 for ; Thu, 26 Sep 2024 18:20:47 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 3C8B63A086F for ; Thu, 26 Sep 2024 18:20:41 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Thu, 26 Sep 2024 18:18:56 +0200 Message-ID: <20240926161901.31421-2-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240926161901.31421-1-anton@khirnov.net> References: <20240925132921.11203-1-anton@khirnov.net> <20240926161901.31421-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 12/17] lavu/opt: avoid accidentally propagating spurious errors X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: QD92XfbzM8t7 An error from read_number() is non-fatal here and should not be forwarded. --- libavutil/opt.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libavutil/opt.c b/libavutil/opt.c index 02ed9d9fe9..93f2bb1320 100644 --- a/libavutil/opt.c +++ b/libavutil/opt.c @@ -2343,13 +2343,15 @@ int av_opt_set_array(void *obj, const char *name, int search_flags, int64_t intnum = 1; if (val_type == TYPE_BASE(o->type)) { + int err; + ret = opt_copy_elem(obj, val_type, dst, src); if (ret < 0) goto fail; // validate the range for numeric options - ret = read_number(o, dst, &num, &den, &intnum); - if (ret >= 0 && TYPE_BASE(o->type) != AV_OPT_TYPE_FLAGS && + err = read_number(o, dst, &num, &den, &intnum); + if (err >= 0 && TYPE_BASE(o->type) != AV_OPT_TYPE_FLAGS && (!den || o->max * den < num * intnum || o->min * den > num * intnum)) { num = den ? num * intnum / den : (num && intnum ? INFINITY : NAN); av_log(obj, AV_LOG_ERROR, "Cannot set array element %u for " From patchwork Thu Sep 26 16:18:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 51866 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:b66f:0:b0:48e:c0f8:d0de with SMTP id o15csp503845vqw; Thu, 26 Sep 2024 09:21:35 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXFKOJAimPhE0hBx8jgRnkUXoYcYtpIX/O+AYKTjvh8qZ33G8QhwZSP7XaZgk03/WOR6dKi0yobyK78I7EmhgfS@gmail.com X-Google-Smtp-Source: AGHT+IGT5aIkMj9VWg+QpTuSlTBgQYnz9hS9g4iRLw1a5aqXRwJQIoNmjcPvZLd7QqiIBAzE2jRK X-Received: by 2002:a17:907:743:b0:a8d:42c3:5f68 with SMTP id a640c23a62f3a-a93c492189fmr5287166b.23.1727367694878; Thu, 26 Sep 2024 09:21:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727367694; cv=none; d=google.com; s=arc-20240605; b=kVhV67M13Z4Xj+p2czrLOAP3bTykGSaJn+HpwfUnrkLVAEGHvelz8j56TpN+WRg9vm 4L3x69dcjkHrNVvGvI6U4BhYag6q9+KB0rghK3Ua3kawxtsgL4mEd+JmYKlRMRcJBFbo bJ15Twrxkrsun21e5QvHP5GUx4nNPYkmd4Rnwy/UbNALnDWu7e0G0XhTkFRUUVpLQlSt 2flNzyAKQ3xIORn+JXv7qJKegRvMuvXqDQ4EwT57et1I/sMIOnyK/PZpzlAByzUA/bMu YuAf/TiVlcXO+BtxtuQoKf+h4LVLmCBva1YLVKDP7m5Q0CKFgNWMwFZb4jUVips4SyjR +/MA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=1+VuG8t9g4uD9iG4JDNb5dAqyMf50HdWXOOlXsDYpbk=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=bP7u/0bi9kk8bYgrCBeEDhAVq8uYCptav/d0pMtYp2q0Iu5LhuBsBCZ9b49jLx0JMP ciSeP6uawT5jqhNYaV6VDSEJrr80likC4b30V0skPnPy1B7vGDpjCi9ZBP6wfXz4mMOr 8s1MAW6SkQONPCt9s1czhlrW3V3WNaFfYlZBhc54Yepu6XHG8ESBPTSZ3LVsALhF8LaW Ip8av6QDLx2gguTQBgrO38iJfFYjYfKj8+v9ToXSCyjYzwTx/JKUU4hhSixkoBwqFPSc EIQUtmFMSQTW5enD8lvQAv8WpLAgpx2lJw+uZST+66P4XDgLf6X+djIa3aeMGIL02jZl y7zg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=gq7nLWVs; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a93c29e5bdcsi18368066b.567.2024.09.26.09.21.34; Thu, 26 Sep 2024 09:21:34 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=gq7nLWVs; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 497DB68DD7A; Thu, 26 Sep 2024 19:20:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A274A68DC4A for ; Thu, 26 Sep 2024 19:20:49 +0300 (EEST) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=gq7nLWVs; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 4CE954DF6 for ; Thu, 26 Sep 2024 18:20:49 +0200 (CEST) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id 04qrwFoG6Bus for ; Thu, 26 Sep 2024 18:20:48 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1727367647; bh=vF6MXWX+v27QbD4BLXJImm6J1zeJ/7ZJaABa+AKK4DM=; h=From:To:Subject:Date:In-Reply-To:References:From; b=gq7nLWVsEzCdJeXYuqMmjeTTkceRzR92RRIge+CNp8RZ9URjm4QWMVijdUYBUTAx7 2B88R4Vxn+oepk4nLlkVjoB0mIYQ3BUnF4Epdw46IRLlnz8I3IG3SEJ6jS+Rri8iJ1 1x0DRB6UzVc1pPshAPkWq4HcPjW3rsRqZX5f6eGPw/fFVJ/CT5i9KFoP6+KwCOmDeg p9JoUsbP99VRRYN4CI/Iac89m/7pAXGgAuuLdkdbo2ZnHBkPqwRq8WiGV86Bc8Jfaj Bl5Bu6zb2TOCn8hI37RERjkqoJPbpfhncdbej2hTFivhyzyP4OU47t+SevvZpXyZXO AgJzYTTvirvwg== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 82C104DF5 for ; Thu, 26 Sep 2024 18:20:47 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 47B873A0998 for ; Thu, 26 Sep 2024 18:20:41 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Thu, 26 Sep 2024 18:18:57 +0200 Message-ID: <20240926161901.31421-3-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240926161901.31421-1-anton@khirnov.net> References: <20240925132921.11203-1-anton@khirnov.net> <20240926161901.31421-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 13/17] lavfi/buffersink: add array-type options to replace "int-list" ones X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: kXBkBnf3MY+t "int-list" options are a hack that provides rudimentary support for array-type options by treating them as byte arrays (i.e. AV_OPT_TYPE_BINARY). Since we now have proper array-type options, they should replace "int-list" everywhere (which happens to be just buffersink). --- doc/APIchanges | 18 ++++ libavfilter/buffersink.c | 162 ++++++++++++++++++++++++++++++++---- libavfilter/buffersink.h | 21 ++--- libavfilter/version.h | 2 +- libavfilter/version_major.h | 1 + 5 files changed, 175 insertions(+), 29 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index ddd4e6c9e0..a79353f79b 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -2,6 +2,24 @@ The last version increases of all libraries were on 2024-03-07 API changes, most recent first: +2024-09-xx - xxxxxxxxxx - lavfi 10.6.100 + Buffersink now has array-type options + - pixel_formats + - colorspaces + - colorranges + replacing the int-list options + - pix_fmts + - color_spaces + - color_ranges + abuffersink now has array-type options + - sample_formats + - samplerates + - channel_layouts + replacing the int-list/string options + - sample_fmts + - sample_rates + - ch_layouts + -------- 8< --------- FFmpeg 7.1 was cut here -------- 8< --------- 2024-09-23 - 6940a6de2f0 - lavu 59.38.100 - frame.h diff --git a/libavfilter/buffersink.c b/libavfilter/buffersink.c index af4dc38792..0cfac2abd5 100644 --- a/libavfilter/buffersink.c +++ b/libavfilter/buffersink.c @@ -28,6 +28,7 @@ #include "libavutil/channel_layout.h" #include "libavutil/common.h" #include "libavutil/internal.h" +#include "libavutil/mem.h" #include "libavutil/opt.h" #include "audio.h" @@ -45,26 +46,46 @@ typedef struct BufferSinkContext { unsigned frame_size; /* only used for video */ +#if FF_API_BUFFERSINK_OPTS enum AVPixelFormat *pixel_fmts; ///< list of accepted pixel formats int pixel_fmts_size; enum AVColorSpace *color_spaces; ///< list of accepted color spaces int color_spaces_size; enum AVColorRange *color_ranges; ///< list of accepted color ranges int color_ranges_size; +#endif + + enum AVPixelFormat *pixel_formats; + unsigned nb_pixel_formats; + + int *colorspaces; + unsigned nb_colorspaces; + + int *colorranges; + unsigned nb_colorranges; /* only used for audio */ +#if FF_API_BUFFERSINK_OPTS enum AVSampleFormat *sample_fmts; ///< list of accepted sample formats int sample_fmts_size; char *channel_layouts_str; ///< list of accepted channel layouts int all_channel_counts; int *sample_rates; ///< list of accepted sample rates int sample_rates_size; +#endif + + enum AVSampleFormat *sample_formats; + unsigned nb_sample_formats; + + int *samplerates; + unsigned nb_samplerates; + + AVChannelLayout *channel_layouts; + unsigned nb_channel_layouts; AVFrame *peeked_frame; } BufferSinkContext; -#define NB_ITEMS(list) (list ## _size / sizeof(*list)) - int attribute_align_arg av_buffersink_get_frame(AVFilterContext *ctx, AVFrame *frame) { return av_buffersink_get_frame_flags(ctx, frame, 0); @@ -138,6 +159,39 @@ static av_cold int common_init(AVFilterContext *ctx) return 0; } +#define TERMINATE_ARRAY(arr, val) \ + if (s->arr) { \ + void *tmp = av_realloc_array(s->arr, s->nb_ ## arr + 1, sizeof(*s->arr)); \ + if (!tmp) \ + return AVERROR(ENOMEM); \ + s->arr = tmp; \ + s->arr[s->nb_ ## arr] = val; \ + } + +static int init_video(AVFilterContext *ctx) +{ + BufferSinkContext *s = ctx->priv; + + TERMINATE_ARRAY(pixel_formats, AV_PIX_FMT_NONE); + TERMINATE_ARRAY(colorranges, -1); + TERMINATE_ARRAY(colorspaces, -1); + + return common_init(ctx); +} + +static int init_audio(AVFilterContext *ctx) +{ + BufferSinkContext *s = ctx->priv; + + TERMINATE_ARRAY(sample_formats, AV_SAMPLE_FMT_NONE); + TERMINATE_ARRAY(samplerates, -1); + TERMINATE_ARRAY(channel_layouts, (AVChannelLayout){ .nb_channels = 0 }); + + return common_init(ctx); +} + +#undef TERMINATE_ARRAY + static void uninit(AVFilterContext *ctx) { BufferSinkContext *buf = ctx->priv; @@ -235,6 +289,9 @@ int av_buffersink_get_ch_layout(const AVFilterContext *ctx, AVChannelLayout *out return 0; } +#if FF_API_BUFFERSINK_OPTS +#define NB_ITEMS(list) (list ## _size / sizeof(*list)) + #define CHECK_LIST_SIZE(field) \ if (buf->field ## _size % sizeof(*buf->field)) { \ av_log(ctx, AV_LOG_ERROR, "Invalid size for " #field ": %d, " \ @@ -242,12 +299,40 @@ int av_buffersink_get_ch_layout(const AVFilterContext *ctx, AVChannelLayout *out buf->field ## _size, (int)sizeof(*buf->field)); \ return AVERROR(EINVAL); \ } +#endif + static int vsink_query_formats(AVFilterContext *ctx) { BufferSinkContext *buf = ctx->priv; - unsigned i; int ret; +#if FF_API_BUFFERSINK_OPTS + if ((buf->pixel_fmts_size || buf->color_spaces_size || buf->color_ranges_size) && + (buf->nb_pixel_formats || buf->nb_colorspaces || buf->nb_colorranges)) { + av_log(ctx, AV_LOG_ERROR, "Cannot combine old and new format lists\n"); + return AVERROR(EINVAL); + } + + if (buf->nb_pixel_formats || buf->nb_colorspaces || buf->nb_colorranges) { +#endif + if (buf->nb_pixel_formats) { + ret = ff_set_common_formats_from_list(ctx, buf->pixel_formats); + if (ret < 0) + return ret; + } + if (buf->nb_colorspaces) { + ret = ff_set_common_color_spaces_from_list(ctx, buf->colorspaces); + if (ret < 0) + return ret; + } + if (buf->nb_colorranges) { + ret = ff_set_common_color_ranges_from_list(ctx, buf->colorranges); + if (ret < 0) + return ret; + } +#if FF_API_BUFFERSINK_OPTS + } else { + unsigned i; CHECK_LIST_SIZE(pixel_fmts) CHECK_LIST_SIZE(color_spaces) CHECK_LIST_SIZE(color_ranges) @@ -277,6 +362,8 @@ static int vsink_query_formats(AVFilterContext *ctx) if ((ret = ff_set_common_color_ranges(ctx, formats)) < 0) return ret; } + } +#endif return 0; } @@ -284,12 +371,38 @@ static int vsink_query_formats(AVFilterContext *ctx) static int asink_query_formats(AVFilterContext *ctx) { BufferSinkContext *buf = ctx->priv; + int ret; + +#if FF_API_BUFFERSINK_OPTS + if ((buf->sample_fmts_size || buf->channel_layouts_str || buf->sample_rates_size) && + (buf->nb_sample_formats || buf->nb_samplerates || buf->nb_channel_layouts)) { + av_log(ctx, AV_LOG_ERROR, "Cannot combine old and new format lists\n"); + return AVERROR(EINVAL); + } + + if (buf->nb_sample_formats || buf->nb_samplerates || buf->nb_channel_layouts) { +#endif + if (buf->nb_sample_formats) { + ret = ff_set_common_formats_from_list(ctx, buf->sample_formats); + if (ret < 0) + return ret; + } + if (buf->nb_samplerates) { + ret = ff_set_common_samplerates_from_list(ctx, buf->samplerates); + if (ret < 0) + return ret; + } + if (buf->nb_channel_layouts) { + ret = ff_set_common_channel_layouts_from_list(ctx, buf->channel_layouts); + if (ret < 0) + return ret; + } +#if FF_API_BUFFERSINK_OPTS + } else { AVFilterFormats *formats = NULL; AVChannelLayout layout = { 0 }; AVFilterChannelLayouts *layouts = NULL; unsigned i; - int ret; - CHECK_LIST_SIZE(sample_fmts) CHECK_LIST_SIZE(sample_rates) @@ -343,6 +456,8 @@ static int asink_query_formats(AVFilterContext *ctx) if ((ret = ff_set_common_samplerates(ctx, formats)) < 0) return ret; } + } +#endif return 0; } @@ -350,19 +465,38 @@ static int asink_query_formats(AVFilterContext *ctx) #define OFFSET(x) offsetof(BufferSinkContext, x) #define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM static const AVOption buffersink_options[] = { - { "pix_fmts", "set the supported pixel formats", OFFSET(pixel_fmts), AV_OPT_TYPE_BINARY, .flags = FLAGS }, - { "color_spaces", "set the supported color spaces", OFFSET(color_spaces), AV_OPT_TYPE_BINARY, .flags = FLAGS }, - { "color_ranges", "set the supported color ranges", OFFSET(color_ranges), AV_OPT_TYPE_BINARY, .flags = FLAGS }, +#if FF_API_BUFFERSINK_OPTS + { "pix_fmts", "set the supported pixel formats", OFFSET(pixel_fmts), AV_OPT_TYPE_BINARY, .flags = FLAGS | AV_OPT_FLAG_DEPRECATED }, + { "color_spaces", "set the supported color spaces", OFFSET(color_spaces), AV_OPT_TYPE_BINARY, .flags = FLAGS | AV_OPT_FLAG_DEPRECATED }, + { "color_ranges", "set the supported color ranges", OFFSET(color_ranges), AV_OPT_TYPE_BINARY, .flags = FLAGS | AV_OPT_FLAG_DEPRECATED }, +#endif + + { "pixel_formats", "array of supported pixel formats", OFFSET(pixel_formats), + AV_OPT_TYPE_PIXEL_FMT | AV_OPT_TYPE_FLAG_ARRAY, .max = INT_MAX, .flags = FLAGS }, + { "colorspaces", "array of supported color spaces", OFFSET(colorspaces), + AV_OPT_TYPE_INT | AV_OPT_TYPE_FLAG_ARRAY, .max = INT_MAX, .flags = FLAGS }, + { "colorranges", "array of supported color ranges", OFFSET(colorranges), + AV_OPT_TYPE_INT | AV_OPT_TYPE_FLAG_ARRAY, .max = INT_MAX, .flags = FLAGS }, + { NULL }, }; #undef FLAGS #define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_AUDIO_PARAM static const AVOption abuffersink_options[] = { - { "sample_fmts", "set the supported sample formats", OFFSET(sample_fmts), AV_OPT_TYPE_BINARY, .flags = FLAGS }, - { "sample_rates", "set the supported sample rates", OFFSET(sample_rates), AV_OPT_TYPE_BINARY, .flags = FLAGS }, +#if FF_API_BUFFERSINK_OPTS + { "sample_fmts", "set the supported sample formats", OFFSET(sample_fmts), AV_OPT_TYPE_BINARY, .flags = FLAGS | AV_OPT_FLAG_DEPRECATED }, + { "sample_rates", "set the supported sample rates", OFFSET(sample_rates), AV_OPT_TYPE_BINARY, .flags = FLAGS | AV_OPT_FLAG_DEPRECATED }, { "ch_layouts", "set a '|'-separated list of supported channel layouts", - OFFSET(channel_layouts_str), AV_OPT_TYPE_STRING, .flags = FLAGS }, - { "all_channel_counts", "accept all channel counts", OFFSET(all_channel_counts), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, FLAGS }, + OFFSET(channel_layouts_str), AV_OPT_TYPE_STRING, .flags = FLAGS | AV_OPT_FLAG_DEPRECATED }, + { "all_channel_counts", "accept all channel counts", OFFSET(all_channel_counts), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, FLAGS | AV_OPT_FLAG_DEPRECATED }, +#endif + + { "sample_formats", "array of supported sample formats", OFFSET(sample_formats), + AV_OPT_TYPE_SAMPLE_FMT | AV_OPT_TYPE_FLAG_ARRAY, .max = INT_MAX, .flags = FLAGS }, + { "samplerates", "array of supported sample formats", OFFSET(samplerates), + AV_OPT_TYPE_INT | AV_OPT_TYPE_FLAG_ARRAY, .max = INT_MAX, .flags = FLAGS }, + { "channel_layouts", "array of supported channel layouts", OFFSET(channel_layouts), + AV_OPT_TYPE_CHLAYOUT | AV_OPT_TYPE_FLAG_ARRAY, .flags = FLAGS }, { NULL }, }; #undef FLAGS @@ -375,7 +509,7 @@ const AVFilter ff_vsink_buffer = { .description = NULL_IF_CONFIG_SMALL("Buffer video frames, and make them available to the end of the filter graph."), .priv_size = sizeof(BufferSinkContext), .priv_class = &buffersink_class, - .init = common_init, + .init = init_video, .uninit = uninit, .activate = activate, FILTER_INPUTS(ff_video_default_filterpad), @@ -396,7 +530,7 @@ const AVFilter ff_asink_abuffer = { .description = NULL_IF_CONFIG_SMALL("Buffer audio frames, and make them available to the end of the filter graph."), .priv_class = &abuffersink_class, .priv_size = sizeof(BufferSinkContext), - .init = common_init, + .init = init_audio, .uninit = uninit, .activate = activate, FILTER_INPUTS(inputs_audio), diff --git a/libavfilter/buffersink.h b/libavfilter/buffersink.h index 361d603679..08cb6b3804 100644 --- a/libavfilter/buffersink.h +++ b/libavfilter/buffersink.h @@ -54,20 +54,13 @@ * * The format can be constrained by setting options, using av_opt_set() and * related functions with the AV_OPT_SEARCH_CHILDREN flag. - * - pix_fmts (int list), - * - color_spaces (int list), - * - color_ranges (int list), - * - sample_fmts (int list), - * - sample_rates (int list), - * - ch_layouts (string), - * - channel_counts (int list), - * - all_channel_counts (bool). - * Most of these options are of type binary, and should be set using - * av_opt_set_int_list() or av_opt_set_bin(). If they are not set, all - * corresponding formats are accepted. - * - * As a special case, if ch_layouts is not set, all valid channel layouts are - * accepted except for UNSPEC layouts, unless all_channel_counts is set. + * - pixel_formats (array of pixel formats), + * - colorspaces (array of int), + * - colorranges (array of int), + * - sample_formats (array of sample formats), + * - samplerates (array of int), + * - channel_layouts (array of channel layouts) + * If an option is not set, all corresponding formats are accepted. */ /** diff --git a/libavfilter/version.h b/libavfilter/version.h index 523a7fe0a6..f191d98883 100644 --- a/libavfilter/version.h +++ b/libavfilter/version.h @@ -31,7 +31,7 @@ #include "version_major.h" -#define LIBAVFILTER_VERSION_MINOR 5 +#define LIBAVFILTER_VERSION_MINOR 6 #define LIBAVFILTER_VERSION_MICRO 100 diff --git a/libavfilter/version_major.h b/libavfilter/version_major.h index c5e660eeda..b2c761370f 100644 --- a/libavfilter/version_major.h +++ b/libavfilter/version_major.h @@ -36,5 +36,6 @@ */ #define FF_API_LINK_PUBLIC (LIBAVFILTER_VERSION_MAJOR < 11) +#define FF_API_BUFFERSINK_OPTS (LIBAVFILTER_VERSION_MAJOR < 11) #endif /* AVFILTER_VERSION_MAJOR_H */ From patchwork Thu Sep 26 16:18:58 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 51864 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:b66f:0:b0:48e:c0f8:d0de with SMTP id o15csp503546vqw; Thu, 26 Sep 2024 09:21:07 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWJ6m09tnvTWgEoJp+RDYnTyvZEvbgmtMHdt9LpzA3vk82m9tWV+rRgV9T3SA7i7aW2bc4I95T5hCxoVvfp5qNf@gmail.com X-Google-Smtp-Source: AGHT+IHhW3FTiKNlavF8CdmgUygR+lXSoZ6dR+7mOuHxN9d6JeM779l4KtcQDU9Vajepw70kh5Lj X-Received: by 2002:a05:6512:2356:b0:538:9eee:d6a3 with SMTP id 2adb3069b0e04-5389fc85262mr15320e87.10.1727367667594; Thu, 26 Sep 2024 09:21:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727367667; cv=none; d=google.com; s=arc-20240605; b=IxOd8oXbEi1GLdWmPkjoqVipUgnYg5UyyS3azuGBNeJa3T5io093apGfoypuN3kpMc tlqm/eWpFUtABz8mWJS5lzMd48GohMX3cj2NQYm8NoEp3o4UIgDMb6q7ZAnKi6OMrdML Ez7FfqAX2gMcoJBza0RlhpAnJFOp3+xLHxsWmyC/EpTOw9mpe9df7cWvoOee9OAMLsnW 9FSjB3I3OZgcrb87CspfHE3IdrSYIgOEcNFXxKMGN/4uyoX3QBEj/yBey+jjckX/1ck4 g1+BqdPIesHs1FxsWAH7wt8cZTDivNSszR2KmHv+Ei2glINOrA5PHubSVPq3ftxEW4eW 2rNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=jMLdQf34AsR8HzKVgEOppHSoEpMrsuJ5T0P/vEARBQg=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=i1WG3UdW3EFcBDJlMfPsqWFQ/bSChHDi6MbRHpzwKNCX1bHWGAw+SFIIaPAxR5MxaT 81rQBjoOIEtShpE2WwerVZEWoClJBqVYXd85UagZEGyv4p9hVfk4bRz4brHDQTtO4RfW PaEbMnxTJCAx4qkZX/cYhvi69ld6p5u+U0EQWIfQsY291GE9RDEYNc9SDpN/bSH8rCfS rlmtwFQM+XiR1AqwNsLxDlaqQAAHWPIh6BvmUIO0Gfk/RMK07VHQp269MGXkud6nn/ji oqf9IHc5CA3nEzIrDGAhMyWj4Xoc6sW7vJdN96yP18DXVODVP30KHuBEV4XOrathxvKQ /Sxw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=RGOUzC8B; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 2adb3069b0e04-5389fd53435si13260e87.57.2024.09.26.09.21.06; Thu, 26 Sep 2024 09:21:07 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=RGOUzC8B; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F035F68DD51; Thu, 26 Sep 2024 19:20:55 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5556368DC4A for ; Thu, 26 Sep 2024 19:20:49 +0300 (EEST) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=RGOUzC8B; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id B604B1F8 for ; Thu, 26 Sep 2024 18:20:48 +0200 (CEST) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id 6MXslurbtpL9 for ; Thu, 26 Sep 2024 18:20:47 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1727367647; bh=l2aYFUgPOqxMkYxf+0u+I/hGkd78dFptuld2CY+pjnI=; h=From:To:Subject:Date:In-Reply-To:References:From; b=RGOUzC8BAgkYsgtnpfS2Lx5+J6L32ALSuZi0BE4yfpSTIat8AKqGAz9ZKxZAnS5ns 0xtgGoCbTL/mQUoUpwicWVmOTrfppgvxzs0fLO/hbypqCAoavdKVgI8IG8UmdnTV2V fpWDKOSzBd5s/EWFELVwZmmVwXlPREBvyFF5JDW1FAN3f4jgbi8uohkmdrrj6oOwM3 xSHglJqxO+QbM7TFje9NRzriRVrGvrg4wGHlefM+JpBZ6PJ7CKMSPy4zBwIKs9nL5a Ez8CB6PmkMuHS26GIm37g2h78ilz/fqmfR04JTLbfQ/KdX8GuV+euZnjkhRnPE61Hx VuzVi1jskVFqg== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 859B44DF6 for ; Thu, 26 Sep 2024 18:20:47 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 533BA3A0F02 for ; Thu, 26 Sep 2024 18:20:41 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Thu, 26 Sep 2024 18:18:58 +0200 Message-ID: <20240926161901.31421-4-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240926161901.31421-1-anton@khirnov.net> References: <20240925132921.11203-1-anton@khirnov.net> <20240926161901.31421-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 14/17] doc/examples/decode_filter_audio: switch to new buffersink options X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: cozpyr6kQFzt Use a mix of av_opt_set() and av_opt_set_array() to demonstrate different ways the options can be set. --- doc/examples/decode_filter_audio.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/doc/examples/decode_filter_audio.c b/doc/examples/decode_filter_audio.c index 6d148f7ab4..03e13ef66f 100644 --- a/doc/examples/decode_filter_audio.c +++ b/doc/examples/decode_filter_audio.c @@ -96,8 +96,7 @@ static int init_filters(const char *filters_descr) const AVFilter *abuffersink = avfilter_get_by_name("abuffersink"); AVFilterInOut *outputs = avfilter_inout_alloc(); AVFilterInOut *inputs = avfilter_inout_alloc(); - static const enum AVSampleFormat out_sample_fmts[] = { AV_SAMPLE_FMT_S16, -1 }; - static const int out_sample_rates[] = { 8000, -1 }; + static const int out_sample_rate = 8000; const AVFilterLink *outlink; AVRational time_base = fmt_ctx->streams[audio_stream_index]->time_base; @@ -130,22 +129,22 @@ static int init_filters(const char *filters_descr) goto end; } - ret = av_opt_set_int_list(buffersink_ctx, "sample_fmts", out_sample_fmts, -1, - AV_OPT_SEARCH_CHILDREN); + ret = av_opt_set(buffersink_ctx, "sample_formats", "s16", + AV_OPT_SEARCH_CHILDREN); if (ret < 0) { av_log(NULL, AV_LOG_ERROR, "Cannot set output sample format\n"); goto end; } - ret = av_opt_set(buffersink_ctx, "ch_layouts", "mono", - AV_OPT_SEARCH_CHILDREN); + ret = av_opt_set(buffersink_ctx, "channel_layouts", "mono", + AV_OPT_SEARCH_CHILDREN); if (ret < 0) { av_log(NULL, AV_LOG_ERROR, "Cannot set output channel layout\n"); goto end; } - ret = av_opt_set_int_list(buffersink_ctx, "sample_rates", out_sample_rates, -1, - AV_OPT_SEARCH_CHILDREN); + ret = av_opt_set_array(buffersink_ctx, "samplerates", AV_OPT_SEARCH_CHILDREN, + 0, 1, AV_OPT_TYPE_INT, &out_sample_rate); if (ret < 0) { av_log(NULL, AV_LOG_ERROR, "Cannot set output sample rate\n"); goto end; From patchwork Thu Sep 26 16:18:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 51870 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:b66f:0:b0:48e:c0f8:d0de with SMTP id o15csp509011vqw; Thu, 26 Sep 2024 09:29:28 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVgs2hZ+VrSDxV0nxhU7XeFnelDHsAfgwFWAC3Z0lgHvPdMvOzWrwSEwuY0UryWMo4Ok9hiGp0r1h9K+llSEojL@gmail.com X-Google-Smtp-Source: AGHT+IGJKqZ4qI/lGSosYzm1/Se1HYZ7EmgVTs4joc1S6aFLq9XqtA/hoboLWhi52b5LfzIOGQdO X-Received: by 2002:a05:651c:1a0b:b0:2f7:67c6:461 with SMTP id 38308e7fff4ca-2f9d41b049cmr1329901fa.44.1727368168340; Thu, 26 Sep 2024 09:29:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727368168; cv=none; d=google.com; s=arc-20240605; b=LTEd8usgSzTeH0/SxXLGNXdxWkcyvTwmaWI7FF1wC9BZ8LTSUUTd0DlyRmQ55XN8nE aPSK3Ym2kBFK7tCzO1mTJCE/f1QItI+SAE2/XULaAX7dpQhyWpjAqRBjKhubhlN6oWo1 XC59xflFWLYW1baqjIiwCdZV2Ky8f3NM120IJusrolG21oSgWDga4P6v5sATMOsqLzY7 brnNOoHDIwGSVZPT601c113Hb/dymn7JH0T2IJdU4ZYYrttpaB/obdTNhoQKPO4n6l2Z 76C8yzrwpSp0xsnJa8vmbkZXWuq267aKYCNub0NZHpfAjuPiU7UFVJVbBhzZvSQh+kll f3iA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=jKXfwRWnWSaCZ2qsz0IW7hOJfHrCUV5jiZV2bSXt9rM=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=AfOTCSC/1VAioVCoI2mtAx14RlDWZc+dQFMWwHC6oy95a02UyDc6EA7vGXyCAewwZi gDv4UarPBqbpkwyRjtHmcS+C33K41dGj1afwn70/AIT3DlmHRV0nLgpMV4gKdqVc8Xl0 9mGyGELtYZ6cbFG91kw4fgC/CtAYsc3rzzIKS6+9xlL3Us2GWdrAXpB3heuj8oi6BKwN LBKTMmi3ZPtzmaamxehyYEYLsQvnmlMwM29zWQgS1uukHhR5aGZfAmW3qIpooN2+2CQ9 Ka6ZjoPxUVV90r/sjsvLAQpdT2EwmKHFV2B6EvYAYLvXk70OMP+R30S9S3TzmdPjJqrc zkXg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=VhoMqJ3G; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 38308e7fff4ca-2f9d4659cf8si80721fa.594.2024.09.26.09.29.27; Thu, 26 Sep 2024 09:29:28 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=VhoMqJ3G; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0DBED68DD73; Thu, 26 Sep 2024 19:20:58 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6845568DC92 for ; Thu, 26 Sep 2024 19:20:49 +0300 (EEST) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=VhoMqJ3G; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 0DDF74E12 for ; Thu, 26 Sep 2024 18:20:49 +0200 (CEST) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id vHE3BdtDg8db for ; Thu, 26 Sep 2024 18:20:48 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1727367647; bh=OOYuYOGyOcl0WZBa4lkEOPAhsybwrr8vUtsnoAJ6qhA=; h=From:To:Subject:Date:In-Reply-To:References:From; b=VhoMqJ3GmVyHaBuk7rbLvL+tx03dLx5ZfU6Y43iwUJrzFB6FZyUOXyn/ieFyroC/s +/R6GmyRwNi9fxnhaYS6GAN93Ip8/wTNNuhwBsdsNHPh1qGXNZywnIYUs89IHwQb9j tyR2I22r5Jv2lO8TphPm5mPOojbw1rKO4jS8P9wFDhxZZOoz7NFc0pii0HyjFffd+N U31Wi3vko/o9N1rFyOkQ62T5dsLtfCj+S5/CU/id6wLRvFPsg8gl35tFJ2AxhP2/sI lqkZaQpAEN0n6UJZYENrEDF3LJZdtW+l8osWwiHsjG39L5j4ughZXPUI2Es+Nmq/aT 2Fw2gsh1nPVwQ== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 874474E05 for ; Thu, 26 Sep 2024 18:20:47 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 5DFB93A0F41 for ; Thu, 26 Sep 2024 18:20:41 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Thu, 26 Sep 2024 18:18:59 +0200 Message-ID: <20240926161901.31421-5-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240926161901.31421-1-anton@khirnov.net> References: <20240925132921.11203-1-anton@khirnov.net> <20240926161901.31421-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 15/17] doc/examples/decode_filter_video: switch to new buffersink options X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: gzwpfim55kiv --- doc/examples/decode_filter_video.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/examples/decode_filter_video.c b/doc/examples/decode_filter_video.c index 4a5247dbf2..aacc91c2f7 100644 --- a/doc/examples/decode_filter_video.c +++ b/doc/examples/decode_filter_video.c @@ -99,7 +99,6 @@ static int init_filters(const char *filters_descr) AVFilterInOut *outputs = avfilter_inout_alloc(); AVFilterInOut *inputs = avfilter_inout_alloc(); AVRational time_base = fmt_ctx->streams[video_stream_index]->time_base; - enum AVPixelFormat pix_fmts[] = { AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE }; filter_graph = avfilter_graph_alloc(); if (!outputs || !inputs || !filter_graph) { @@ -129,8 +128,8 @@ static int init_filters(const char *filters_descr) goto end; } - ret = av_opt_set_int_list(buffersink_ctx, "pix_fmts", pix_fmts, - AV_PIX_FMT_NONE, AV_OPT_SEARCH_CHILDREN); + ret = av_opt_set(buffersink_ctx, "pixel_formats", "gray8", + AV_OPT_SEARCH_CHILDREN); if (ret < 0) { av_log(NULL, AV_LOG_ERROR, "Cannot set output pixel format\n"); goto end; From patchwork Thu Sep 26 16:19:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 51867 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:b66f:0:b0:48e:c0f8:d0de with SMTP id o15csp504135vqw; Thu, 26 Sep 2024 09:21:57 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXgI26JfyuQwHC0fYhhcbY0fBxZ5Z+MfSjkOnIMehhjrcOfVLiAr4BVzfKaStmgqv/uSrH9eIw3RbAveIunDSOp@gmail.com X-Google-Smtp-Source: AGHT+IHikdqLCeAdyxB3xYR0ZOhsO5xi76HPiT9EyEJz87nDGoEiL9CoiDQbjYQzuSDHW/W+jqaI X-Received: by 2002:a05:6402:210b:b0:5c4:2bd6:68df with SMTP id 4fb4d7f45d1cf-5c8824d371dmr369604a12.2.1727367717448; Thu, 26 Sep 2024 09:21:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727367717; cv=none; d=google.com; s=arc-20240605; b=QhJCukObXqmC+4TTvUxlEllQI2yRPRYU9+RpQpSeKuicRxZN3JKwVyQOqE7iv+5kCD dWXEXHWCO6sJ3UCjysoZM7c+ImcXsj0TlheCohTyFN4k57myCCH3mwuh0jF6DdaY/0Ab LqY671MwKAAH5Wx8QhkrlJ+up+tj8PbcoIiKj8CFs293S990GvWGJtxcKQYatLFK/qsU ghSNrbt9yWc0rgZaTsYPZJO8ejYasMF+Q0mllC5FzGnFo6qUluVyW+fw1SGjNmjik45w QnPR8mOzZ2/VfjLOaTO2Acb66wYp3MiDCNu0mTcaN0mgV0FlK6CCwE5bnbkwUWZ3iN47 /s1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=Xe0hsEid12OPokWGPKVngIb/V8xWTgvbL1ZgorKAE3E=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=X6L1l6vRELGn1pNNDXFksXOQ0c7KC6r5RoYWbJOSiM8Y9jbqtv+KPSpFanmzRW81r3 DraXvoNfm3essg0Oqo+kJuSCywSzdYerQKk5o/0fs6cAuRy4JolhdyrwDvd/GLrM7aLk 0nyZovWHbOT5rtvDVFrCZq6OdtYnhSjkyw3JBVNkrILJFrZBta+1yr9hi8pLERq5TElQ gwTDtMALDWLNa3fhuO1nuFmHFWCpw49bj1NBBch3aU16Nw2wKlXU48qQReIbV0Zzd90B VqMZTNp/Gc5czrQXbjSwnWDbjWNJKULQZ3DhO+sPT1A8n116NwmApp3s6uKPTdePQOAu U9vg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=Gv783oyT; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-5c88240825esi138748a12.51.2024.09.26.09.21.56; Thu, 26 Sep 2024 09:21:57 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=Gv783oyT; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9DD0268DD89; Thu, 26 Sep 2024 19:21:01 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C4D3C68DD4A for ; Thu, 26 Sep 2024 19:20:54 +0300 (EEST) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=Gv783oyT; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id A54354DF1 for ; Thu, 26 Sep 2024 18:20:49 +0200 (CEST) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id z7Hg-_-4TNqZ for ; Thu, 26 Sep 2024 18:20:49 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1727367647; bh=XgwiACsoXxFJV/OsTh70oyc8a9pqpCuxNdR0G78xgQk=; h=From:To:Subject:Date:In-Reply-To:References:From; b=Gv783oyT5JAuIqweCKg2qKCCtubRhTMVhIgg7L9D026hDwWriCzS0LpHiAcG1spxA ymKMivjQRQgAl50KEYEnH2HaQ8Syb3qmLBVq94wqxueamhDxf7krrIMdAscvcKekJu uFH6G/q8oP4yb1pl+OyTmIyRWT/dzCYqKzR/zoymJ7G73QR4PcUozGvV5AC7DDykDi slXU4wF9ffzHYJ5Lazz+LjY6vo6AzhSP4mzpU1AjRYIffpTXCMYX1HgqvQtNifyVVF cCgssJTuOQy+H8S5SqqziTIdCTmBbsd4Zt/mH+/i4jG/EoFPMr2v8SYOsqPgdAy3Pi OTgv+Ph9B8WAQ== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 9A5A14E0B for ; Thu, 26 Sep 2024 18:20:47 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 6925A3A0F6F for ; Thu, 26 Sep 2024 18:20:41 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Thu, 26 Sep 2024 18:19:00 +0200 Message-ID: <20240926161901.31421-6-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240926161901.31421-1-anton@khirnov.net> References: <20240925132921.11203-1-anton@khirnov.net> <20240926161901.31421-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 16/17] fftools/ffplay: switch to new buffersink options X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 6bgNBq1QnHh/ --- fftools/ffplay.c | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/fftools/ffplay.c b/fftools/ffplay.c index 349c6075da..6c3694a321 100644 --- a/fftools/ffplay.c +++ b/fftools/ffplay.c @@ -388,7 +388,6 @@ static const struct TextureFormatEntry { { AV_PIX_FMT_YUV420P, SDL_PIXELFORMAT_IYUV }, { AV_PIX_FMT_YUYV422, SDL_PIXELFORMAT_YUY2 }, { AV_PIX_FMT_UYVY422, SDL_PIXELFORMAT_UYVY }, - { AV_PIX_FMT_NONE, SDL_PIXELFORMAT_UNKNOWN }, }; static int opt_add_vfilter(void *optctx, const char *opt, const char *arg) @@ -895,7 +894,7 @@ static void get_sdl_pix_fmt_and_blendmode(int format, Uint32 *sdl_pix_fmt, SDL_B format == AV_PIX_FMT_BGR32 || format == AV_PIX_FMT_BGR32_1) *sdl_blendmode = SDL_BLENDMODE_BLEND; - for (i = 0; i < FF_ARRAY_ELEMS(sdl_texture_format_map) - 1; i++) { + for (i = 0; i < FF_ARRAY_ELEMS(sdl_texture_format_map); i++) { if (format == sdl_texture_format_map[i].format) { *sdl_pix_fmt = sdl_texture_format_map[i].texture_fmt; return; @@ -1874,14 +1873,13 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c return AVERROR(ENOMEM); for (i = 0; i < renderer_info.num_texture_formats; i++) { - for (j = 0; j < FF_ARRAY_ELEMS(sdl_texture_format_map) - 1; j++) { + for (j = 0; j < FF_ARRAY_ELEMS(sdl_texture_format_map); j++) { if (renderer_info.texture_formats[i] == sdl_texture_format_map[j].texture_fmt) { pix_fmts[nb_pix_fmts++] = sdl_texture_format_map[j].format; break; } } } - pix_fmts[nb_pix_fmts] = AV_PIX_FMT_NONE; while ((e = av_dict_iterate(sws_dict, e))) { if (!strcmp(e->key, "sws_flags")) { @@ -1926,10 +1924,13 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c goto fail; } - if ((ret = av_opt_set_int_list(filt_out, "pix_fmts", pix_fmts, AV_PIX_FMT_NONE, AV_OPT_SEARCH_CHILDREN)) < 0) + if ((ret = av_opt_set_array(filt_out, "pixel_formats", AV_OPT_SEARCH_CHILDREN, + 0, nb_pix_fmts, AV_OPT_TYPE_PIXEL_FMT, pix_fmts)) < 0) goto fail; if (!vk_renderer && - (ret = av_opt_set_int_list(filt_out, "color_spaces", sdl_supported_color_spaces, AVCOL_SPC_UNSPECIFIED, AV_OPT_SEARCH_CHILDREN)) < 0) + (ret = av_opt_set_array(filt_out, "colorspaces", AV_OPT_SEARCH_CHILDREN, + 0, FF_ARRAY_ELEMS(sdl_supported_color_spaces), + AV_OPT_TYPE_INT, sdl_supported_color_spaces)) < 0) goto fail; ret = avfilter_init_dict(filt_out, NULL); @@ -2003,8 +2004,6 @@ fail: static int configure_audio_filters(VideoState *is, const char *afilters, int force_output_format) { - static const enum AVSampleFormat sample_fmts[] = { AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE }; - int sample_rates[2] = { 0, -1 }; AVFilterContext *filt_asrc = NULL, *filt_asink = NULL; char aresample_swr_opts[512] = ""; const AVDictionaryEntry *e = NULL; @@ -2045,20 +2044,15 @@ static int configure_audio_filters(VideoState *is, const char *afilters, int for goto end; } - if ((ret = av_opt_set_int_list(filt_asink, "sample_fmts", sample_fmts, AV_SAMPLE_FMT_NONE, AV_OPT_SEARCH_CHILDREN)) < 0) - goto end; - if ((ret = av_opt_set_int(filt_asink, "all_channel_counts", 1, AV_OPT_SEARCH_CHILDREN)) < 0) + if ((ret = av_opt_set(filt_asink, "sample_formats", "s16", AV_OPT_SEARCH_CHILDREN)) < 0) goto end; if (force_output_format) { - av_bprint_clear(&bp); - av_channel_layout_describe_bprint(&is->audio_tgt.ch_layout, &bp); - sample_rates [0] = is->audio_tgt.freq; - if ((ret = av_opt_set_int(filt_asink, "all_channel_counts", 0, AV_OPT_SEARCH_CHILDREN)) < 0) + if ((ret = av_opt_set_array(filt_asink, "channel_layouts", AV_OPT_SEARCH_CHILDREN, + 0, 1, AV_OPT_TYPE_CHLAYOUT, &is->audio_tgt.ch_layout)) < 0) goto end; - if ((ret = av_opt_set(filt_asink, "ch_layouts", bp.str, AV_OPT_SEARCH_CHILDREN)) < 0) - goto end; - if ((ret = av_opt_set_int_list(filt_asink, "sample_rates" , sample_rates , -1, AV_OPT_SEARCH_CHILDREN)) < 0) + if ((ret = av_opt_set_array(filt_asink, "samplerates", AV_OPT_SEARCH_CHILDREN, + 0, 1, AV_OPT_TYPE_INT, &is->audio_tgt.freq)) < 0) goto end; } From patchwork Thu Sep 26 16:19:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 51868 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:b66f:0:b0:48e:c0f8:d0de with SMTP id o15csp508955vqw; Thu, 26 Sep 2024 09:29:21 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVhqxeXiYAmbYw0LgTCzW4jv7R6PY7k1ZDOcM4paBhl871eNoQkn6GgpG2nuP5HENc8zqJKLJHYOL2LVwpWlSqs@gmail.com X-Google-Smtp-Source: AGHT+IHMC0Eu4QMiGakg+3cXyGBcAPkVuatIeV06i0ZrKjCqXyEJLhvyqeMz4+aU5mu/EgOr5fTY X-Received: by 2002:a05:6512:1046:b0:52e:91ff:4709 with SMTP id 2adb3069b0e04-5389fc3b760mr188635e87.21.1727368161566; Thu, 26 Sep 2024 09:29:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727368161; cv=none; d=google.com; s=arc-20240605; b=Bxm+2qT1esCVut/DcxC0btzQc5iclHtQQF22RJR1KTZzMw7y8QQ0RyZiDHK1jDLf5u NS6PPV1q1bP9xVQMbcOmVT/DOUbpQeJSP4FUwNBrQ3s4Dfe0ACuEtAHVKsFwpRuNFw6l e5tfRhfzlGQf/CD+J6eexmqGCstGP3UPiWHGjzaCERaz21On/d7Pv+CCCR0MU3lpYFL8 vOST7KYatEMkFIF5caBPvNdX3Z2iUoGib6O/VBy4WcNdS2zrs1rObGwwSl2fgjbPPmP6 JaN9yZzSSn2JAL25HdGk+797ESZ/dnzEYC4bVC1dT6F6DqHLnJzP8sxMy34S6+N9xZU8 Bd4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=qyfUqW8New8puJx6VxzYPr3zSpt/ztfggxhpWCBibVo=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=gUuo0LVp+/Lwso8C32ZYQAbLH7aP9UGILpfexSUyhJesdwPYkipDGCuNGffap48BIR MqJnGJtKm/Buo7NSzRrtNw8q+XTRywKqiTY6S+13HPHsySFb/S9n7x4utckTkNOkESne f8yOnoWFInOi5vUnqq9IRzwLpgIWHG2QUzBa1aQScgsM34SWhGtfKwMhlPYOZXqRX8kz k1bz4Gd71h60GQ7X8v1Y47eermjqmKWHTnuwX++sPed8MsZ+pbGjHrDUfR44uAWbAkza Z2Mnd0YhXvXM9k6B5yn2/xP4fTzKGBnzzBn68bBTY0Gr5ca6ZKjGuFIR4iJ2RGY5kd+A kQ8A==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=OFlHXqkR; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-5c8824a7dc6si123230a12.588.2024.09.26.09.29.21; Thu, 26 Sep 2024 09:29:21 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=OFlHXqkR; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7CD4268DD82; Thu, 26 Sep 2024 19:21:00 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C4AD468DD48 for ; Thu, 26 Sep 2024 19:20:54 +0300 (EEST) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=OFlHXqkR; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id A8D724E16 for ; Thu, 26 Sep 2024 18:20:49 +0200 (CEST) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id m_fWMSJoQY-Y for ; Thu, 26 Sep 2024 18:20:49 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1727367647; bh=k3ClJcLJom36+K+oCQc03F9Pp2KuoT2Tud0Gi76o1eQ=; h=From:To:Subject:Date:In-Reply-To:References:From; b=OFlHXqkRRDjN7pIAe1M02IKAmNz3DAv7NXcxMM64PrO2dDMi8O8cb8WYy2a8JlbH0 ACXoyiod4w6XIjSzMgIV62q/TKHkI/GlWYLFP4xCmUJXsBq25oXUsFADSGQt1f7xqW CM9509Nc6v+bqM9RbMwunOAlQPxpYwl/Jf7PJBjCLGlIRDtTG+FeRF/QMaqne4c3ty sf67kM4EkmTQ7RoIunx+bphTfa0sz4trK8mlseRQ+M7wItIfEymcFGP/x4aDL9lNjz yAiho8euRo4YBKinO9yCpE8TemQUQP2+S5Fkt9lfiilDR3lGc/kMNNjgdtWWTA+iAA Hv/Zg1A4r3Tww== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id A2AEE4E11 for ; Thu, 26 Sep 2024 18:20:47 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 74D423A164C for ; Thu, 26 Sep 2024 18:20:41 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Thu, 26 Sep 2024 18:19:01 +0200 Message-ID: <20240926161901.31421-7-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240926161901.31421-1-anton@khirnov.net> References: <20240925132921.11203-1-anton@khirnov.net> <20240926161901.31421-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 17/17] lavu: deprecate av_opt_set_int_list() and related infrastructure X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 20HFVJwAmyEZ It has no more users and is replaced by array-type options. --- doc/APIchanges | 5 +++++ libavutil/avutil.h | 3 +++ libavutil/opt.h | 2 ++ libavutil/utils.c | 2 ++ libavutil/version.h | 1 + 5 files changed, 13 insertions(+) diff --git a/doc/APIchanges b/doc/APIchanges index a79353f79b..f9a4d0e442 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -2,6 +2,11 @@ The last version increases of all libraries were on 2024-03-07 API changes, most recent first: +2024-09-xx - xxxxxxxxxx - lavu 59 + Deprecate av_int_list_length_for_size(), av_int_list_length(), and + av_opt_set_int_list() without replacement. All AVOptions using these + should be replaced with AV_OPT_TYPE_FLAG_ARRAY. + 2024-09-xx - xxxxxxxxxx - lavfi 10.6.100 Buffersink now has array-type options - pixel_formats diff --git a/libavutil/avutil.h b/libavutil/avutil.h index d2900dcb48..ee709fbb2a 100644 --- a/libavutil/avutil.h +++ b/libavutil/avutil.h @@ -314,6 +314,7 @@ static inline void *av_x_if_null(const void *p, const void *x) return (void *)(intptr_t)(p ? p : x); } +#if FF_API_OPT_INT_LIST /** * Compute the length of an integer list. * @@ -322,6 +323,7 @@ static inline void *av_x_if_null(const void *p, const void *x) * @param list pointer to the list * @return length of the list, in elements, not counting the terminator */ +attribute_deprecated unsigned av_int_list_length_for_size(unsigned elsize, const void *list, uint64_t term) av_pure; @@ -334,6 +336,7 @@ unsigned av_int_list_length_for_size(unsigned elsize, */ #define av_int_list_length(list, term) \ av_int_list_length_for_size(sizeof(*(list)), list, term) +#endif /** * Return the fractional representation of the internal time base. diff --git a/libavutil/opt.h b/libavutil/opt.h index be189f7653..17374211a4 100644 --- a/libavutil/opt.h +++ b/libavutil/opt.h @@ -886,6 +886,7 @@ int av_opt_set_chlayout(void *obj, const char *name, const AVChannelLayout *layo */ int av_opt_set_dict_val(void *obj, const char *name, const AVDictionary *val, int search_flags); +#if FF_API_OPT_INT_LIST /** * Set a binary option to an integer list. * @@ -901,6 +902,7 @@ int av_opt_set_dict_val(void *obj, const char *name, const AVDictionary *val, in AVERROR(EINVAL) : \ av_opt_set_bin(obj, name, (const uint8_t *)(val), \ av_int_list_length(val, term) * sizeof(*(val)), flags)) +#endif /** * Add, replace, or remove elements for an array option. Which of these diff --git a/libavutil/utils.c b/libavutil/utils.c index 94d247bbee..162a4dee26 100644 --- a/libavutil/utils.c +++ b/libavutil/utils.c @@ -51,6 +51,7 @@ char av_get_picture_type_char(enum AVPictureType pict_type) } } +#if FF_API_OPT_INT_LIST unsigned av_int_list_length_for_size(unsigned elsize, const void *list, uint64_t term) { @@ -69,6 +70,7 @@ unsigned av_int_list_length_for_size(unsigned elsize, } return i; } +#endif char *av_fourcc_make_string(char *buf, uint32_t fourcc) { diff --git a/libavutil/version.h b/libavutil/version.h index 1ae3f4ef87..69519cfd06 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -115,6 +115,7 @@ #define FF_API_MOD_UINTP2 (LIBAVUTIL_VERSION_MAJOR < 60) #define FF_API_RISCV_FD_ZBA (LIBAVUTIL_VERSION_MAJOR < 60) #define FF_API_VULKAN_FIXED_QUEUES (LIBAVUTIL_VERSION_MAJOR < 60) +#define FF_API_OPT_INT_LIST (LIBAVUTIL_VERSION_MAJOR < 60) /** * @}