From patchwork Sat Aug 7 10:15:05 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linjie Fu X-Patchwork-Id: 29332 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:6c0f:0:0:0:0:0 with SMTP id a15csp1249733ioh; Sat, 7 Aug 2021 03:15:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx8/xS07Ib2qsUd1H6W73BYCYxMctzvNAQjKNmDY+F9ZjEcIVvNRGxGobke+VR2I+6d4B3X X-Received: by 2002:a17:906:c155:: with SMTP id dp21mr13981287ejc.9.1628331354284; Sat, 07 Aug 2021 03:15:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628331354; cv=none; d=google.com; s=arc-20160816; b=zTlWQ0U0BXmRGjLTgsgJdzU8+runTXa9evblXpyCtjI/RJSscyYbbiNrai2VCZeT3x eXhHlUaaBK7m6q6wA1HeHI8+LL1fGKn9UXIf3pjh6a8TcNuyVKeG1wAOLiJgFRMzlwYc aNFoH4B05eMDH3FU8qv3ugg2XlROBefQuAgRBhYlNcHe9EFXEC3U+TdOrw9QvnGQ/FTL LTjIC/Edp5m1x+QUvXmxuZUkVm1gsLMc6zIJ0ZFlQQvkMLnjCzk4NGBBteUMLSFhxLP5 r40xFlaFIVzCSTHYF3GLuKTSyTI1byuCnC9fVgsxcx7Qcyo01kDftuWSd+0AGWT+x6XH FpRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :delivered-to; bh=JRiqVrU5MroSxy97ZdG1oiC6MUxZ3XBNGEU7UzDPwHg=; b=yqWZz9fsnTVjwemGF8jGUmkh1KurkpCljzGkgTn+pSwoEdHJMYozf+rLOB+nJhU/Ek qJlFliIemByLIwHK2UwwAP43W+3KGh/IV34c7y09t9SSdvj1Kj58qXPtEhLU3bM5EvoV +oh4tbfiHW5xgZhB306/kAM86W7ZT42a4hn+4tvAPfs5cQ0u2INEkNDvSDhSwZOMbjiW U1I8uSTOWQyS3mVWey3bnEfCToNfBWWpUa2IgaS7X7IU7l/AI9XjJUW/Xty3a4XpMSI9 a+w40j3UWIXCefiEk+fhzAgmj7cdoM1aB/n5FS3Go8RLKD5wqsHZzvU/p03qz2brm5L3 pg8w== ARC-Authentication-Results: i=1; mx.google.com; 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 s4si10824245eji.269.2021.08.07.03.15.53; Sat, 07 Aug 2021 03:15:54 -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; 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 011AA68805F; Sat, 7 Aug 2021 13:15:49 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from zg8tmty1ljiyny4xntqumjca.icoremail.net (zg8tmty1ljiyny4xntqumjca.icoremail.net [165.227.154.27]) by ffbox0-bg.mplayerhq.hu (Postfix) with SMTP id 17B6068805F for ; Sat, 7 Aug 2021 13:15:41 +0300 (EEST) Received: from localhost.localdomain (unknown [58.247.209.118]) by mail-app3 (Coremail) with SMTP id cC_KCgCXP6RHXQ5hESe8Ag--.117S2; Sat, 07 Aug 2021 18:15:36 +0800 (CST) From: Linjie Fu To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 Aug 2021 18:15:05 +0800 Message-Id: <20210807101507.83161-1-fulinjie@zju.edu.cn> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-CM-TRANSID: cC_KCgCXP6RHXQ5hESe8Ag--.117S2 X-Coremail-Antispam: 1UD129KBjvJXoW7Wr1xuFWDKw1xZryfWrWxZwb_yoW8JF4Up3 93Gw1UJFyrKFykCFyvgr48WrWrK39aqFyI9F9Yy34UZFWDJr17K3y3KrWagFy2yw1xurs2 vw1Yya4DJasrAaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUkjb7Iv0xC_Zr1lb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I2 0VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rw A2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_tr0E3s1l84ACjcxK6xII jxv20xvEc7CjxVAFwI0_GcCE3s1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2z4x0Y4vEx4 A2jsIEc7CjxVAFwI0_GcCE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IE w4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE14v26r1j6r4UMc vjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwCY02Avz4vE14v_Gw1l42xK82IY c2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s 026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r1Y6r17MIIYrxkI7VAKI48JMIIF 0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r1j6r4UMIIF0x vE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv 6xkF7I0E14v26r1j6r4UYxBIdaVFxhVjvjDU0xZFpf9x07joKZXUUUUU= X-CM-SenderInfo: ysrvjiarsuq6lmxovvfxof0/ Subject: [FFmpeg-devel] [PATCH 1/3] Revert "fftools/ffmpeg_filter: fix the flags parsing for scaler" 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 Cc: Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 0yrhkcUVbAwZ From: Linjie Fu This reverts commit b3a0548a981db52911dd34d9de254c4fee0a8f79. This breaks the usage of swscale options, scale_sws_opts should be passed to auto-inserted scale-filters. The auto-inserted scaler accepts sws_flags in filtergraph complex which overrides the 'flags' option for vf_scale and dump it in verbose, however simple filtergraph doesn't override. Hence we got different verbose logs printed in vf_scale when we specify -sws_flags in cmdline. It's a matter of log print rather than option parsing. Signed-off-by: Linjie Fu --- fftools/ffmpeg_filter.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c index 49076f13ee..a90858655d 100644 --- a/fftools/ffmpeg_filter.c +++ b/fftools/ffmpeg_filter.c @@ -977,11 +977,7 @@ int configure_filtergraph(FilterGraph *fg) } if (strlen(args)) args[strlen(args)-1] = 0; - - if (!strncmp(args, "sws_flags=", 10)) { - // keep the 'flags=' part - fg->graph->scale_sws_opts = av_strdup(args+4); - } + fg->graph->scale_sws_opts = av_strdup(args); args[0] = 0; while ((e = av_dict_get(ost->swr_opts, "", e, From patchwork Sat Aug 7 10:15:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linjie Fu X-Patchwork-Id: 29333 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:6c0f:0:0:0:0:0 with SMTP id a15csp1249849ioh; Sat, 7 Aug 2021 03:16:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzkuPfPiKy7jd/r5hkdd4E+2XmlNrzp2PR9+G1Qnf0ornTlac7kFZUdlOb/a076gPr8kotR X-Received: by 2002:a05:6402:747:: with SMTP id p7mr18377229edy.114.1628331366207; Sat, 07 Aug 2021 03:16:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628331366; cv=none; d=google.com; s=arc-20160816; b=bI+C02axKgGSyxpUIKIN/gFbUJ7E48tgsm36rg7t8mDMjAsL6xzNvBgq898ROY5XBP PimWvuq41K1FW0IuyRCddalNEAu0LHru8VF4Ltoc5s9M3oSMCuEB16OII6pkKJOQQRRI 0lkDodnt9o+3JBzD71SAOQ/bv8TUGo2a9Uh0KgUIBEuxuhLpxwQuLmdVwH7Ik+f2j0cE EGmXEUkn7H8VX7+uV0XLqLtvT1IaT8hsj3Bw8DVYBqrbFVa9BBwJg9wwXVk0/qnXbacg 2E7KqpZAdtVJp2u6bT4o8PbgiRuI3zq5P1eNVgzxJSHvgv18w8OvKwsrQHjNpSmlfnS+ 9+8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc: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:delivered-to; bh=rYyRTuLiBmef7cGHnPSPL6eyNkDQk4oJHxMtVP3bafI=; b=O2D10OxuBHXxpUhf2eY86YzDE4Jjzksgt/R+rCNJaxSqGd9PKlNrqGwHHvMSqlcdNT SRdJvhN4Rio97yMlZ1j8VVFzY5w16caPGTnXbZSdbaswdYST13v4wlgk8wKH6z5+Scc6 EKhtDpsbctyVuHpQIeVSoxOHhlvg+Z5RTDRsmXEv8ezIwMg9KGoDItWQ58q9/5o7v6fs FjXPSLHulcQZBoEKsUtpslmGoeSc2WLinSaxjmbXRzsSjTAQFlrbSNJ40TNo4xilbO+R 2Xo1qRAgm3pv/hMzSus+irRfqpK7ilETSudzgUIutyMTrkdOf4STVhbpAO5jq3Obc6Cb 7fNQ== ARC-Authentication-Results: i=1; mx.google.com; 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 i12si11482766edc.10.2021.08.07.03.16.05; Sat, 07 Aug 2021 03:16: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; 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 1C7BC689F16; Sat, 7 Aug 2021 13:15:50 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from zg8tmty1ljiyny4xntqumjca.icoremail.net (zg8tmty1ljiyny4xntqumjca.icoremail.net [165.227.154.27]) by ffbox0-bg.mplayerhq.hu (Postfix) with SMTP id 98E6E68805F for ; Sat, 7 Aug 2021 13:15:42 +0300 (EEST) Received: from localhost.localdomain (unknown [58.247.209.118]) by mail-app3 (Coremail) with SMTP id cC_KCgCXP6RHXQ5hESe8Ag--.117S3; Sat, 07 Aug 2021 18:15:38 +0800 (CST) From: Linjie Fu To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 Aug 2021 18:15:06 +0800 Message-Id: <20210807101507.83161-2-fulinjie@zju.edu.cn> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210807101507.83161-1-fulinjie@zju.edu.cn> References: <20210807101507.83161-1-fulinjie@zju.edu.cn> MIME-Version: 1.0 X-CM-TRANSID: cC_KCgCXP6RHXQ5hESe8Ag--.117S3 X-Coremail-Antispam: 1UD129KBjvJXoW7ZrWrKF18ZrWfArykCr47XFb_yoW8Cw4Upw 4F93WfGFWfJrWIva92vryrXa1rGry8GFW29rZ5A3yrA3s5JryUt3y2kFWY9rWjywnrZr40 qr1jy34UX3WqvaUanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUU9Gb7Iv0xC_Cr1lb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I2 0VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28IrcIa0xkI8VA2jI 8067AKxVWUGwA2048vs2IY020Ec7CjxVAFwI0_Jr4l8cAvFVAK0II2c7xJM28CjxkF64kE wVA0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVWDJVCq3wA2z4x0Y4vE2Ix0cI8IcVCY1x 0267AKxVW0oVCq3wA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x02 67AKxVW0oVCq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I 80ewAv7VC0I7IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFVCj c4AY6r1j6r4UM4x0Y48IcxkI7VAKI48JMxkIecxEwVAFwVW8twCF04k20xvY0x0EwIxGrw CFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE 14v26r106r1rMI8E67AF67kF1VAFwI0_Jrv_JF1lIxkGc2Ij64vIr41lIxAIcVC0I7IYx2 IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF04k26cxK x2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxVAFwI 0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU8y7K3UUUUU== X-CM-SenderInfo: ysrvjiarsuq6lmxovvfxof0/ Subject: [FFmpeg-devel] [PATCH 2/3] lavfi/vf_scale: dump the exact swscale_options to passed to libswscale 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 Cc: Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: qM0hLHcHGUfi From: Linjie Fu Printed verbose log doesn't match the sws_flags specified in the cmdline for simple filter graph. ffmpeg .. -sws_flags bicubic .. [auto_scaler_0] w:iw h:ih flags:'' interl:0 [auto_scaler_0] w:310 h:449 fmt:yuva420p sar:0/1 -> w:310 h:449 fmt:yuv420p sar:0/1 flags:0x0 Filter complex doesn't have this issue as mentioned in 12e7e1d03, the auto-inserted scaler accepts sws_flags in filtergraph complex which overrides the 'flags' option for vf_scale and dump it as a verbose log: ffmpeg .. -filter_complex "sws_flags=bicubic;format=nv12" .. [auto_scaler_0] w:iw h:ih flags:'bicubic' interl:0 [auto_scaler_0] w:310 h:449 fmt:yuva420p sar:0/1 -> w:310 h:449 fmt:nv12 sar:0/1 flags:0x2 To catch the difference, dump the exact sws_flags which is passed to libswscale. [auto_scaler_0] swscale_options:'sws_flags=bicubic' Signed-off-by: Linjie Fu --- libavfilter/vf_scale.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c index aa855b894a..f994217bdc 100644 --- a/libavfilter/vf_scale.c +++ b/libavfilter/vf_scale.c @@ -552,11 +552,17 @@ static int config_props(AVFilterLink *outlink) scale->out_range == AVCOL_RANGE_JPEG, 0); if (scale->opts) { + char args[512]; + args[0] = 0; AVDictionaryEntry *e = NULL; while ((e = av_dict_get(scale->opts, "", e, AV_DICT_IGNORE_SUFFIX))) { if ((ret = av_opt_set(*s, e->key, e->value, 0)) < 0) return ret; + av_strlcatf(args, sizeof(args), "%s=%s:", e->key, e->value); } + if (strlen(args)) + args[strlen(args)-1] = 0; + av_log(ctx, AV_LOG_VERBOSE, "swscale_options:'%s'\n", (char *)av_x_if_null(args, "")); } /* Override YUV420P default settings to have the correct (MPEG-2) chroma positions * MPEG-2 chroma positions are used by convention From patchwork Sat Aug 7 10:15:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linjie Fu X-Patchwork-Id: 29334 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:6c0f:0:0:0:0:0 with SMTP id a15csp1249923ioh; Sat, 7 Aug 2021 03:16:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyK4fkdFU/zBW5PkXx/NM/ZM/NwgQt/ez+GHu0t0mnS+8NM+3b2l87pvU9JYheNME8plIo1 X-Received: by 2002:a17:906:76c1:: with SMTP id q1mr14338003ejn.156.1628331375539; Sat, 07 Aug 2021 03:16:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628331375; cv=none; d=google.com; s=arc-20160816; b=eVe5lYppYLkkrFF2PaLOPuM5HxEEkCYaMSYCXEwS6Hhpo0G5ZmufB7JtB8mhN5B+a6 lMJNN0C2g3nDn4JMft6eoupRufhDZWTV/PRjhrrvdGppIdsdIUZS9VBs4TcLrgHXlQPT JZa16t9OB3Fl2jcTQByfS0kMYCsdYLUG7wQV0Fubgt+UY+tGZ9dA70RQb5aGnc6zSXg9 ij/ysi9ad3JQli9iJbByS6DS1Tg7f5peZKEshAeOjCXN2C/G907lqN1hCR2Ob1GwPKIT yeMnaDIOklT8wcGCX4OkF9K7cNIl6JbUCl1uGNHyCTpq2l771mvh65CDJ593Npo+Xm6W rZ1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc: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:delivered-to; bh=42spVipcOiBbmsb30SDmrcw0zGTnNUWAPrRhIJSwkD4=; b=Mpl8XyJiACqZ8KUfrJu4azCTXnaXLUKg0aYZSrC5qVzcUkYBBsqCN5gcGMXT7UHAbh HUZnv3/zUEkbiinSNkKm3HQi52HYZbxoKVcg6b8CEeXMOmMy33a4qK29d2efxMQHNG/Z jeGJ+y53+yPZDHcIqxQl7oyu79o9LH8igv+jzv9y3NymCfI7+w9eV0ev6snBmu7vScYs 1frNRQ+IIQUQJa5LiKTgYz7FDk8rp/NcdlMFmIHo+9HxXg+xC3nRmY9r4WRE457j4Y4w tE16S0wfValUSAj3Fem/KLom4KMSbDqantl4wtSwTDQOTlaPSdFKqMqfY1+9RkA1bo5x Kpeg== ARC-Authentication-Results: i=1; mx.google.com; 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 nb19si8974639ejc.45.2021.08.07.03.16.15; Sat, 07 Aug 2021 03:16:15 -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; 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 186AC68A101; Sat, 7 Aug 2021 13:16:04 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from zg8tmty1ljiyny4xntqumjca.icoremail.net (zg8tmty1ljiyny4xntqumjca.icoremail.net [165.227.154.27]) by ffbox0-bg.mplayerhq.hu (Postfix) with SMTP id E8DFE68A126 for ; Sat, 7 Aug 2021 13:15:56 +0300 (EEST) Received: from localhost.localdomain (unknown [58.247.209.118]) by mail-app3 (Coremail) with SMTP id cC_KCgCXP6RHXQ5hESe8Ag--.117S4; Sat, 07 Aug 2021 18:15:52 +0800 (CST) From: Linjie Fu To: ffmpeg-devel@ffmpeg.org Date: Sat, 7 Aug 2021 18:15:07 +0800 Message-Id: <20210807101507.83161-3-fulinjie@zju.edu.cn> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210807101507.83161-1-fulinjie@zju.edu.cn> References: <20210807101507.83161-1-fulinjie@zju.edu.cn> MIME-Version: 1.0 X-CM-TRANSID: cC_KCgCXP6RHXQ5hESe8Ag--.117S4 X-Coremail-Antispam: 1UD129KBjvJXoWxCw45Jr1fKr4rCF45ur17Jrb_yoW5CF48p3 WfCa4rJF17KF1fCwn2v3W8XF4YgryrGryFvrW8Kr9FqFs8Jr92y393Cry5uw1xJ3WUCrs7 Ja15ta4UCwnrKr7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUU9Eb7Iv0xC_Zr1lb4IE77IF4wAFF20E14v26r4j6ryUM7CY07I2 0VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28IrcIa0xkI8VA2jI 8067AKxVWUXwA2048vs2IY020Ec7CjxVAFwI0_Jrv_JF4l8cAvFVAK0II2c7xJM28CjxkF 64kEwVA0rcxSw2x7M28EF7xvwVC0I7IYx2IY67AKxVWDJVCq3wA2z4x0Y4vE2Ix0cI8IcV CY1x0267AKxVW0oVCq3wA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY 1x0267AKxVW0oVCq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4 xG6I80ewAv7VC0I7IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCa FVCjc4AY6r1j6r4UM4x0Y48IcxkI7VAKI48JMxkIecxEwVAFwVW8twCF04k20xvY0x0EwI xGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E7480 Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jrv_JF1lIxkGc2Ij64vIr41lIxAIcVC0I7 IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF04k2 6cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxV AFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU8Dku7UUUUU== X-CM-SenderInfo: ysrvjiarsuq6lmxovvfxof0/ Subject: [FFmpeg-devel] [PATCH 3/3] libavfilter/graphparser: Add scale_sws_opts parse support in avfilter_graph_parse2 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 Cc: Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 3Z+iYRXxkna2 From: Linjie Fu To pass the swscale options for the inserted scalers. ffmpeg -i input.mp4 -filter_complex \ "scale_sws_opts=alphablend=checkerboard;format=nv12" \ -t 0.5 output.mp4 Update docs. Signed-off-by: Linjie Fu --- doc/filters.texi | 7 ++++--- libavfilter/graphparser.c | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/doc/filters.texi b/doc/filters.texi index 790d165433..dbbb3a6940 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -204,9 +204,9 @@ pads must be connected. A filtergraph is considered valid if all the filter input and output pads of all the filterchains are connected. Libavfilter will automatically insert @ref{scale} filters where format -conversion is required. It is possible to specify swscale flags -for those automatically inserted scalers by prepending -@code{sws_flags=@var{flags};} +conversion is required. It is possible to specify swscale flags or +scale_sws_opts for those automatically inserted scalers by prepending +@code{sws_flags=@var{flags};} or @code{scale_sws_opts=@var{scale_sws_opts};} to the filtergraph description. Here is a BNF description of the filtergraph syntax: @@ -219,6 +219,7 @@ Here is a BNF description of the filtergraph syntax: @var{FILTER} ::= [@var{LINKLABELS}] @var{FILTER_NAME} ["=" @var{FILTER_ARGUMENTS}] [@var{LINKLABELS}] @var{FILTERCHAIN} ::= @var{FILTER} [,@var{FILTERCHAIN}] @var{FILTERGRAPH} ::= [sws_flags=@var{flags};] @var{FILTERCHAIN} [;@var{FILTERGRAPH}] +@var{FILTERGRAPH} ::= [scale_sws_opts=@var{opts};] @var{FILTERCHAIN} [;@var{FILTERGRAPH}] @end example @anchor{filtergraph escaping} diff --git a/libavfilter/graphparser.c b/libavfilter/graphparser.c index 1385c3ae71..8c63d6454e 100644 --- a/libavfilter/graphparser.c +++ b/libavfilter/graphparser.c @@ -415,6 +415,30 @@ static int parse_sws_flags(const char **buf, AVFilterGraph *graph) return 0; } +static int parse_scale_sws_opts(const char **buf, AVFilterGraph *graph) +{ + char *p = strchr(*buf, ';'); + + if (strncmp(*buf, "scale_sws_opts=", 15)) { + return 0; + } + + if (!p) { + av_log(graph, AV_LOG_ERROR, "scale_sws_opts not terminated with ';'.\n"); + return AVERROR(EINVAL); + } + + *buf += 15; + + av_freep(&graph->scale_sws_opts); + if (!(graph->scale_sws_opts = av_mallocz(p - *buf + 1))) + return AVERROR(ENOMEM); + av_strlcpy(graph->scale_sws_opts, *buf, p - *buf + 1); + + *buf = p + 1; + return 0; +} + int avfilter_graph_parse2(AVFilterGraph *graph, const char *filters, AVFilterInOut **inputs, AVFilterInOut **outputs) @@ -429,6 +453,9 @@ int avfilter_graph_parse2(AVFilterGraph *graph, const char *filters, if ((ret = parse_sws_flags(&filters, graph)) < 0) goto fail; + if ((ret = parse_scale_sws_opts(&filters, graph)) < 0) + goto fail; + do { AVFilterContext *filter; filters += strspn(filters, WHITESPACES);