From patchwork Wed Jan 17 09:22:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 45629 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c58a:b0:199:de12:6fa6 with SMTP id gn10csp231978pzb; Wed, 17 Jan 2024 01:23:09 -0800 (PST) X-Google-Smtp-Source: AGHT+IH2/Xohk9UH42F5EyLCkhICOQyNTlPz+s5DTWHbPnWDjmSoev1TwtVHXM9+f/6aB/i+cQhB X-Received: by 2002:a17:906:3601:b0:a2a:6916:60de with SMTP id q1-20020a170906360100b00a2a691660demr8295543ejb.4.1705483388762; Wed, 17 Jan 2024 01:23:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1705483388; cv=none; d=google.com; s=arc-20160816; b=dZIYiVFS+OZapvnVQ4VYdyjxbJsYfj9/9mSwOP4/NIUKCL3iZBN5h2Aml6CllipsMi ZHo1eFspjW8qkFgFCVRSKyMQvb0xA18F+eVzc/VhZGiUfVhMvAVus8lsX7AxUSUsy+nW d0r2Ut9JBUqynyMkeMNjuUx0W1j3d+DQHqKwG5Ii94HNh7QK9sIg7VcHOOcfUIepOhg4 zXJZPkTSkBM2tOGkkgKHep+cR7Xlb8UhEASorn2t/dVdwEkETfMMIVl/V7tDT6e5KH3V aOl6af/9j0K+BYhc3oS/SEBYRqczKV9jdtV+1Vs0sPTPPzKhUP0Es0+58K04wlsSfgtd HOmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=FUh4LPTcbzFpYQkjbLPfgeXecyfDvAEtZud6HMjzf34=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=Yu1ENVpbzoKGylkh5WpUgWodiadf0uBbPn8gp7ihn/IK1kFmNA0iKpTFHnW5IDZKGr rZ7Ss5WzYpo4QIHbN6v2FRpqc4dzBLPyLD5VwRx9v+tJ6TMpEwvCKUz1HBWDrsvGnIl8 Qx+ZQroaWtmY2Uw2lEinrXFbaanPvYN+q/zQYbVilMcgQBvh3zY8b4/SN73sWfF9F1Fy BSWsqXg3dGWf7QddusGCtO2V9kP1WcsCR62mEoRjRUhyzH4slrs6mpe0gcbSDQ3V4M1D hooUsLxEk6INb51i7v4eoBORg/O3YyzoqWBe61wsQqqY0gTaAzpQiULS21tQNKfB3RG+ ezRQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=EeDaIhJn; 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 z23-20020a170906241700b00a2d3b4b794fsi3890331eja.185.2024.01.17.01.23.08; Wed, 17 Jan 2024 01:23:08 -0800 (PST) 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=EeDaIhJn; 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 9812468CCBD; Wed, 17 Jan 2024 11:22:49 +0200 (EET) 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 22C6A68CCBD for ; Wed, 17 Jan 2024 11:22:40 +0200 (EET) 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=EeDaIhJn; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 4645C19C0 for ; Wed, 17 Jan 2024 10:22:39 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id WrjHKnWSUJjz for ; Wed, 17 Jan 2024 10:22:38 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1705483358; bh=hBy2SwjOlVFR460REJOv2zF8xbfUKVGYOUxZ12sFUnI=; h=From:To:Subject:Date:From; b=EeDaIhJnuk/dVKBnN1goEGPwZFEhftNdSM35g7v7dOh/H0oFL5Wpt9hAcJK31uCJB CmNIac7EC72TxRs7a+fBh1EaS+mp2F/8E75zM2KNuEAReX5Kzs3DqcV02CHpij3rQw 2YkBmbEEEO13u3VnsYUhe0YMCRbevOyaMIeD3WlGbTT4ABSNpdg8OcLaD2zwYY/dnn LkJrlC/xdeHhsfa2uSlXzSmwqcBu1O663LQbA0yg5njRGn5tx0mh9EMpqRualQKtHY BGpwYgpyCTcM5RVH31TkL5hBkAjj3kmMJRO5wh/OMnpJcWYZajHEbzLZg1TdfdUExg 0QSmYocdYf3qg== 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 16089EE8 for ; Wed, 17 Jan 2024 10:22:38 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id E4BF63A0219 for ; Wed, 17 Jan 2024 10:22:37 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Jan 2024 10:22:28 +0100 Message-ID: <20240117092233.8503-1-anton@khirnov.net> X-Mailer: git-send-email 2.42.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/6] fftools/ffprobe: make option strings dynamically allocated 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: 2qDFjIM8O+jB Do not store the supplied arg pointer directly. While that is valid for now, arg will become ephemeral in the future commits. --- fftools/ffprobe.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/fftools/ffprobe.c b/fftools/ffprobe.c index f00ba48620..3a7aae3572 100644 --- a/fftools/ffprobe.c +++ b/fftools/ffprobe.c @@ -3827,8 +3827,10 @@ static int opt_input_file(void *optctx, const char *arg) return AVERROR(EINVAL); } if (!strcmp(arg, "-")) - arg = "fd:"; - input_filename = arg; + arg = "pipe:"; + input_filename = av_strdup(arg); + if (!input_filename) + return AVERROR(ENOMEM); return 0; } @@ -3849,15 +3851,18 @@ static int opt_output_file_o(void *optctx, const char *opt, const char *arg) } if (!strcmp(arg, "-")) arg = "fd:"; - output_filename = arg; + output_filename = av_strdup(arg); + if (!output_filename) + return AVERROR(ENOMEM); return 0; } static int opt_print_filename(void *optctx, const char *opt, const char *arg) { - print_input_filename = arg; - return 0; + av_freep(&print_input_filename); + print_input_filename = av_strdup(arg); + return print_input_filename ? 0 : AVERROR(ENOMEM); } void show_help_default(const char *opt, const char *arg) @@ -4287,6 +4292,9 @@ int main(int argc, char **argv) end: av_freep(&output_format); + av_freep(&output_filename); + av_freep(&input_filename); + av_freep(&print_input_filename); av_freep(&read_intervals); av_hash_freep(&hash); From patchwork Wed Jan 17 09:22:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 45627 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c58a:b0:199:de12:6fa6 with SMTP id gn10csp231874pzb; Wed, 17 Jan 2024 01:22:50 -0800 (PST) X-Google-Smtp-Source: AGHT+IEEewmvfjsHG3Sp948yuB9RWhfcfE/czIch/ZKBL9Lk+TbXRuWjMeRZgLLK+fLqAu6yE/2O X-Received: by 2002:a05:6402:22d6:b0:559:cf48:630f with SMTP id dm22-20020a05640222d600b00559cf48630fmr527689edb.35.1705483370245; Wed, 17 Jan 2024 01:22:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1705483370; cv=none; d=google.com; s=arc-20160816; b=ovDV1CLCGvcZWkX7dM7FNWpyVpR8tHUCuijfi4/Jqn5MWa98/al/YiGwZ+k3m9FChD mV501cQ/uJRUoRyw1W3zGALrxKtHk4t84sKcNy2kXtb6jfA2Yp1p++682LhyTCPH71Tg TK3KBGrAaulNsyBbNvCPTfSJ40MUW1H5irazmP9q1P/Dqk9guTN0gs3r/Psyn0Bnebad dwZiB95h43wgaZe+SXiw3qFFz8mii2lo7yR72FmylzoaxtjdZaSkUS4jKwqEXxDo82x9 pGgrOIHxTs6eMI8Ox23FKDjlOur+TEjyQblpHaD/MWyi3IQz/TvE8Ap2msdtBSyVi8cF 9B7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=dVC/GPIv2hUstFo/ATfDwegV7HbnYpt7PJPtk5sJzOE=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=fiwaIIz/ob0tQS3BSAmNnTa0XFyfu/Uu7fsZx8zRCNzywhUQdNJWfMG6txNuS7Tlwi FRn6wsqWkff0rbuZyvXCKpwbsYSxKu7QFq7bFjl3XSFkZnn/6DwugJZp7DfhgtIAvfnf yO4z4EqRD9wPz+H3CrWt2e+omuIjo69GIbft56F1ExPAWqoUcpSL1Cmd+BT5Qf2HCfd2 W5SUNnaM3HB9wmDzG4nuwzpgVYtGVt63kvD3Ni2RLHee4Hsewm3fNfMguPh6XYn0Q47T HCnxGWKK5hAy+3hCBMIzNFcP2d0TS4luB62jmScLjupmmg9Dpel2tJ2EUn5I3jaExG9u kjOQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b="I/Uh9cSS"; 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 g29-20020a50d5dd000000b00559b5e335a2si1242132edj.277.2024.01.17.01.22.49; Wed, 17 Jan 2024 01:22:50 -0800 (PST) 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="I/Uh9cSS"; 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 9F88568CE14; Wed, 17 Jan 2024 11:22:46 +0200 (EET) 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 1FD8A68C845 for ; Wed, 17 Jan 2024 11:22:40 +0200 (EET) 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=I/Uh9cSS; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 83F34EE8 for ; Wed, 17 Jan 2024 10:22:39 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id Ei8FzbKcBDRD for ; Wed, 17 Jan 2024 10:22:38 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1705483358; bh=UW5NM9NkCS6gl79BoFmSEV/FToN0bvBRecJ/WQ7j02c=; h=From:To:Subject:Date:In-Reply-To:References:From; b=I/Uh9cSSTBNX8QpEBKCPDDgWM5eQ6r72XMrAChGcOUk/PtNnR7SIvCPFjkhEo7fhz u/VDnkcqSBrOpgNUzRYzQfxrmUIK8WmoQpjKiGtxCmqG+EAWVt+WAJPAkTo7VEnk6s Z5RfU+Y0FH/zQpCcJvWIekG/qfn5oHPVzBpGDubVcRIt5CZWTbS+GfrbAp4ZS+G9nH 4pQuxNgpL3HiMT/AzVZVmeYjENt9HVdDyLGxftptZb8taP4dKt6OnxkYqBwnIhrUa5 QtyzzUjyagamHWxD0wnma9ViV7WvnmMfPcKp5bTJnGM9GYQ9yZkIyVSoQu6dqtVsg1 2AKgqoBACNsmQ== 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 18BA614E4 for ; Wed, 17 Jan 2024 10:22:38 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id F16613A054A for ; Wed, 17 Jan 2024 10:22:37 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Jan 2024 10:22:29 +0100 Message-ID: <20240117092233.8503-2-anton@khirnov.net> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20240117092233.8503-1-anton@khirnov.net> References: <20240117092233.8503-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/6] fftools/ffplay: make option strings dynamically allocated 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: WRPku4vdtlIm Do not store the supplied arg pointer directly. While that is valid for now, it will become ephemeral in the future commits. --- fftools/ffplay.c | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/fftools/ffplay.c b/fftools/ffplay.c index 3c378bca2c..356d061dee 100644 --- a/fftools/ffplay.c +++ b/fftools/ffplay.c @@ -400,7 +400,10 @@ static int opt_add_vfilter(void *optctx, const char *opt, const char *arg) if (ret < 0) return ret; - vfilters_list[nb_vfilters - 1] = arg; + vfilters_list[nb_vfilters - 1] = av_strdup(arg); + if (!vfilters_list[nb_vfilters - 1]) + return AVERROR(ENOMEM); + return 0; } @@ -1305,7 +1308,13 @@ static void do_exit(VideoState *is) if (window) SDL_DestroyWindow(window); uninit_opts(); + for (int i = 0; i < nb_vfilters; i++) + av_freep(&vfilters_list[i]); av_freep(&vfilters_list); + av_freep(&video_codec_name); + av_freep(&audio_codec_name); + av_freep(&subtitle_codec_name); + av_freep(&input_filename); avformat_network_deinit(); if (show_status) printf("\n"); @@ -3594,8 +3603,10 @@ static int opt_input_file(void *optctx, const char *filename) return AVERROR(EINVAL); } if (!strcmp(filename, "-")) - filename = "fd:"; - input_filename = filename; + filename = "pipe:"; + input_filename = av_strdup(filename); + if (!input_filename) + return AVERROR(ENOMEM); return 0; } @@ -3603,6 +3614,7 @@ static int opt_input_file(void *optctx, const char *filename) static int opt_codec(void *optctx, const char *opt, const char *arg) { const char *spec = strchr(opt, ':'); + const char **name; if (!spec) { av_log(NULL, AV_LOG_ERROR, "No media specifier was specified in '%s' in option '%s'\n", @@ -3610,16 +3622,20 @@ static int opt_codec(void *optctx, const char *opt, const char *arg) return AVERROR(EINVAL); } spec++; + switch (spec[0]) { - case 'a' : audio_codec_name = arg; break; - case 's' : subtitle_codec_name = arg; break; - case 'v' : video_codec_name = arg; break; + case 'a' : name = &audio_codec_name; break; + case 's' : name = &subtitle_codec_name; break; + case 'v' : name = &video_codec_name; break; default: av_log(NULL, AV_LOG_ERROR, "Invalid media specifier '%s' in option '%s'\n", spec, opt); return AVERROR(EINVAL); } - return 0; + + av_freep(name); + *name = av_strdup(arg); + return *name ? 0 : AVERROR(ENOMEM); } static int dummy; From patchwork Wed Jan 17 09:22:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 45630 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c58a:b0:199:de12:6fa6 with SMTP id gn10csp232030pzb; Wed, 17 Jan 2024 01:23:17 -0800 (PST) X-Google-Smtp-Source: AGHT+IG1ncEvM6mY0pP8X4dQA5vYZPSlSJcoe1eqjMzaFxCA4WR1v4sobpf2LXtYxSGdqqsxQGY3 X-Received: by 2002:aa7:da92:0:b0:559:e2d7:69f8 with SMTP id q18-20020aa7da92000000b00559e2d769f8mr196602eds.15.1705483396999; Wed, 17 Jan 2024 01:23:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1705483396; cv=none; d=google.com; s=arc-20160816; b=L+re5IV0GG5n7k52TR8y4Pg/tBQM+1HevK4nPi5ruFFkETAOPzNrdT3MSXqSnvSTty CW5cddUkOYHK5g4sE3vcz0p5tHLMpakxfDQLYam/FQZDG0xJdAzLXkcb+zdoPqlAu5Wv /Rlo8qVfrFbwm43WGQrGBWVmYKpO/UrRezVjPBUtvx5faEx38ePpAiQUghMpPwi4sWhY iNs8wSdILnAypabTEPF0jWs/RzokjWolXP7uK6ihOLkMwQ+zXgRgWvYtP5M4vjQw20wi ZHQmoNYYIRzciG1Qfebmhn8joHkJxH6HpX0/DMxeKzIywOSUFar4xVc5pZQs/lI3JoSZ H2Bw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=5CMCXtxM8AFvQPfmp/05ayI81FGFBGpujxs/BN2bOrU=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=dKIugB72Y3VOvtvCBe3cTtOz0HKZDs2LJNkm9wSAYwfWpegVek4LK30C+f6K9RS0RJ PzXabrJ05Hixm6eecdPZLZvneBSw0k3epwjha1qNU+Ui7AFXzsgTlQXqVw9a5AC8KV8i qU6ATNwUyP37RYBCxsWDVwEb11PGicUpXd7KsHqA1ShGxmVpDST7xCzW8DmWjPjgKxY3 hUCAGXntQqK4d3uDRKMXQL3jfMVvO+h/5tnZmjMX99Bko2LNV/TOfkXAHEdsDp6+ut0+ IK8MJGRcVTVETIPjl8rPz1lUxTVEWpdgQtVhqzjZk0i4+EfChiDdDAP98vI9qxaPXZi0 0Keg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=bhtZWUH6; 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 et9-20020a056402378900b0055763df0070si5681391edb.140.2024.01.17.01.23.16; Wed, 17 Jan 2024 01:23:16 -0800 (PST) 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=bhtZWUH6; 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 C85C468D01C; Wed, 17 Jan 2024 11:22:51 +0200 (EET) 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 3CDC968CD77 for ; Wed, 17 Jan 2024 11:22:40 +0200 (EET) 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=bhtZWUH6; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id D836B14E4 for ; Wed, 17 Jan 2024 10:22:39 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id x6d8vHdoFgmx for ; Wed, 17 Jan 2024 10:22:39 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1705483358; bh=4KCWgj2D9zhL9ZEzLHGH2MtGnMep2V7HvoRTNhb6mUI=; h=From:To:Subject:Date:In-Reply-To:References:From; b=bhtZWUH6novj7qK2hZ20nE2FvS1euGuOBYCpwn0zGNMCeRAIBhz4pTyQEfai0z4hi 0+cLc6D+fE0U8ewdwCcoTIR0Nqsf5YWAc41OmFGYMPGcPYS199ifMl21MO8lP2/iCI 0eGLfbHToZdfj89YNAhQvWVkr/ILeTNa/eAbPPwqWFEWsn4Z6yI/9R1FxZOdh2EsiT aLbsjrRVNX3DFfmIRp+xBtGS3mFnXYcS20ME9lnq5WaHbhQ8x9gBXwsSWv4x87WY0q eek0wHnmcFRdbSnEDdgOOgydWBVbA24TMgSo3h9lzHlNqGQcEpp2vsZXqotpEjJnj5 YTdKeGgvR7tAQ== 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 1EC4F19B7 for ; Wed, 17 Jan 2024 10:22:38 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 086BE3A0582 for ; Wed, 17 Jan 2024 10:22:38 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Jan 2024 10:22:30 +0100 Message-ID: <20240117092233.8503-3-anton@khirnov.net> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20240117092233.8503-1-anton@khirnov.net> References: <20240117092233.8503-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/6] fftools/ffmpeg: make attachment filenames dynamically allocated 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: 3K0i2mUA5WDn Do not store the supplied arg pointer directly. While that is valid for now, it will become ephemeral in the future commits. --- fftools/ffmpeg_opt.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index ea995f2b5f..563f443bd8 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -124,6 +124,9 @@ static void uninit_options(OptionsContext *o) #if FFMPEG_OPT_MAP_CHANNEL av_freep(&o->audio_channel_maps); #endif + + for (i = 0; i < o->nb_attachments; i++) + av_freep(&o->attachments[i]); av_freep(&o->attachments); av_dict_free(&o->streamid); @@ -494,7 +497,10 @@ static int opt_attach(void *optctx, const char *opt, const char *arg) if (ret < 0) return ret; - o->attachments[o->nb_attachments - 1] = arg; + o->attachments[o->nb_attachments - 1] = av_strdup(arg); + if (!o->attachments[o->nb_attachments - 1]) + return AVERROR(ENOMEM); + return 0; } From patchwork Wed Jan 17 09:22:31 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 45628 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c58a:b0:199:de12:6fa6 with SMTP id gn10csp231932pzb; Wed, 17 Jan 2024 01:23:00 -0800 (PST) X-Google-Smtp-Source: AGHT+IENZIi8K/jDhKlT/dmhgIKMueX2aE+uagFDU/cCFF3WojXGWP/vfAOFmd5DQSqjUzKF6f28 X-Received: by 2002:a19:f807:0:b0:50e:7ae9:9396 with SMTP id a7-20020a19f807000000b0050e7ae99396mr3461710lff.64.1705483380419; Wed, 17 Jan 2024 01:23:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1705483380; cv=none; d=google.com; s=arc-20160816; b=kdjaOf+RDkQxqcMHVCPRmlWOtVklXC/M4fg14/Mo+mbT6mTCAwuFx/naCpvzaxpf8q dIvJ0CRQsOfINktvvkU8zqBNN1rfTZPjWyejaW1vMcJhx+EBPsbNS3BC/wLxCeDRyzpX AhTi7BkS/fmDo3uu5uII5ExEUve7X3Stn3FGFiW9WYTs7X1FS0GXQvK0qKKqt2BkWfY0 pM5Me6sRTAL2J7VIvPJZljM1h9BmY8rqDwEUnBPiK8W2kU2CAYUboc/cREjZWAtIfISc 72dQPYVjIWcT0s2JCeTPrE9bS0VqBJrL1ei7vfnb8qEwwA4yeUrRYpkd1nPG69IPiTWI gtdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=Vl1MF3HWSGH1VNW2xHiw/m66zmgIuFprDPk9BPS6yLI=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=YTHRatAYUEHvQoquFJ3iIg4MDdHpudDzMaA+PCvhkg8J1an/MI7ott4SAl0Nnx5tlI 75HOBA4JK+l2diqX+6O7flyhtXl0xwpRFK5Cji4yzfIEVbg1NQHfvxKYrINFMjt8vwZ9 kZOwP4ZihQGU1CPY0PjgEBMTZ8M+TOa6KB6zplM+xHLn7a8jhxqucW8E1Yg4wDnWPhFl YStLguIDBigfe+qFyBxcy16Evn296wTJ8wip0zTNTxzt9PBEKpvYLhaYsnelaOWtxnP3 EJb9rGuhkEDHUTRM3mE076e/FN66rYhv3fKxH68sWJK/a92ANxEHlAuJFKX/4dC4aaE8 Uatw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=N0OnETFK; 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 f24-20020a170906085800b00a2357549fc9si5440848ejd.548.2024.01.17.01.22.59; Wed, 17 Jan 2024 01:23:00 -0800 (PST) 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=N0OnETFK; 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 9E21D68CF0D; Wed, 17 Jan 2024 11:22:48 +0200 (EET) 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 4F9BE68C845 for ; Wed, 17 Jan 2024 11:22:40 +0200 (EET) 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=N0OnETFK; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id EE93619B7 for ; Wed, 17 Jan 2024 10:22:39 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id aeqEXpmafDyw for ; Wed, 17 Jan 2024 10:22:39 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1705483358; bh=CiycCJQHLOiVBs/faq5cOi4FfOmZxmI/jSYpruFdPWg=; h=From:To:Subject:Date:In-Reply-To:References:From; b=N0OnETFKV0krC08HVE1xs/xYI8sjU20p8qFPE51P+r3JNv1mfs8GagopsjRryDFdb NlgiqtEU4gEVjNPq615OI+jSBCu/HyFn60QooQCl8Q92evC6vVuMKtEzd2Cni0W0wd +3mV2TgjdRCf3dYMd5POE9QZAstzEApzutBl+aN4BFw14mF74GeOQ4ZoFg5cdAsgui IR5Ro8V1UjS1eHR3zIQrYA8CEgWPAfoE3vjApLB3V39U/A0JBU3mSGU+rH4NzPvKiQ Sr2QdhLi61MeKxlvOWTNvMgBnWITZYDFlUEvEQi0MLqfMWpo52WIH+9H0YWdElMyWM r2lP9BsPIV61g== 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 2C34D19B9 for ; Wed, 17 Jan 2024 10:22:38 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 13EE63A061F for ; Wed, 17 Jan 2024 10:22:38 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Jan 2024 10:22:31 +0100 Message-ID: <20240117092233.8503-4-anton@khirnov.net> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20240117092233.8503-1-anton@khirnov.net> References: <20240117092233.8503-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/6] fftools/cmdutils: add option syntax for loading arbitrary arguments from a file 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: ldkYsnfoonRB Aligned with analogous feature for filter options in ffmpeg CLI. --- Changelog | 2 + doc/fftools-common-opts.texi | 9 ++++ fftools/cmdutils.c | 99 ++++++++++++++++++++++++++++++------ fftools/cmdutils.h | 3 ++ fftools/ffmpeg.h | 1 - fftools/ffmpeg_opt.c | 26 ---------- 6 files changed, 97 insertions(+), 43 deletions(-) diff --git a/Changelog b/Changelog index 6b7c1439cd..c40b6d08fd 100644 --- a/Changelog +++ b/Changelog @@ -20,6 +20,8 @@ version : - fsync filter - Raw Captions with Time (RCWT) closed caption muxer - ffmpeg CLI -bsf option may now be used for input as well as output +- ffmpeg CLI options may now be used as -/opt , which is equivalent + to -opt > version 6.1: - libaribcaption decoder diff --git a/doc/fftools-common-opts.texi b/doc/fftools-common-opts.texi index f459bfdc1d..1974d79a4c 100644 --- a/doc/fftools-common-opts.texi +++ b/doc/fftools-common-opts.texi @@ -13,6 +13,15 @@ corresponding value to true. They can be set to false by prefixing the option name with "no". For example using "-nofoo" will set the boolean option with name "foo" to false. +Options that take arguments support a special syntax where the argument given on +the command line is interpreted as a path to the file from which the actual +argument value is loaded. To use this feature, add a forward slash '/' +immediately before the option name (after the leading dash). E.g. +@example +ffmpeg -i INPUT -/filter:v filter.script OUTPUT +@end example +will load a filtergraph description from the file named @file{filter.script}. + @anchor{Stream specifiers} @section Stream specifiers Some options are applied per-stream, e.g. bitrate or codec. Stream specifiers diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c index 44228ea637..d7d5ddee45 100644 --- a/fftools/cmdutils.c +++ b/fftools/cmdutils.c @@ -37,6 +37,7 @@ #include "libswresample/swresample.h" #include "libavutil/avassert.h" #include "libavutil/avstring.h" +#include "libavutil/bprint.h" #include "libavutil/channel_layout.h" #include "libavutil/display.h" #include "libavutil/getenv_utf8.h" @@ -150,6 +151,9 @@ void show_help_children(const AVClass *class, int flags) static const OptionDef *find_option(const OptionDef *po, const char *name) { + if (*name == '/') + name++; + while (po->name) { const char *end; if (av_strstart(name, po->name, &end) && (!*end || *end == ':')) @@ -239,9 +243,32 @@ static int write_option(void *optctx, const OptionDef *po, const char *opt, * a global var*/ void *dst = po->flags & OPT_FLAG_OFFSET ? (uint8_t *)optctx + po->u.off : po->u.dst_ptr; + char *arg_allocated = NULL; + SpecifierOptList *sol = NULL; double num; - int ret; + int ret = 0; + + if (*opt == '/') { + opt++; + + if (po->type == OPT_TYPE_BOOL) { + av_log(NULL, AV_LOG_FATAL, + "Requested to load an argument from file for a bool option '%s'\n", + po->name); + return AVERROR(EINVAL); + } + + arg_allocated = file_read(arg); + if (!arg_allocated) { + av_log(NULL, AV_LOG_FATAL, + "Error reading the value for option '%s' from file: %s\n", + opt, arg); + return AVERROR(EINVAL); + } + + arg = arg_allocated; + } if (po->flags & OPT_FLAG_SPEC) { char *p = strchr(opt, ':'); @@ -250,32 +277,42 @@ static int write_option(void *optctx, const OptionDef *po, const char *opt, sol = dst; ret = GROW_ARRAY(sol->opt, sol->nb_opt); if (ret < 0) - return ret; + goto finish; str = av_strdup(p ? p + 1 : ""); - if (!str) - return AVERROR(ENOMEM); + if (!str) { + ret = AVERROR(ENOMEM); + goto finish; + } sol->opt[sol->nb_opt - 1].specifier = str; dst = &sol->opt[sol->nb_opt - 1].u; } if (po->type == OPT_TYPE_STRING) { char *str; - str = av_strdup(arg); + if (arg_allocated) { + str = arg_allocated; + arg_allocated = NULL; + } else + str = av_strdup(arg); av_freep(dst); - if (!str) - return AVERROR(ENOMEM); + + if (!str) { + ret = AVERROR(ENOMEM); + goto finish; + } + *(char **)dst = str; } else if (po->type == OPT_TYPE_BOOL || po->type == OPT_TYPE_INT) { ret = parse_number(opt, arg, OPT_TYPE_INT64, INT_MIN, INT_MAX, &num); if (ret < 0) - return ret; + goto finish; *(int *)dst = num; } else if (po->type == OPT_TYPE_INT64) { ret = parse_number(opt, arg, OPT_TYPE_INT64, INT64_MIN, INT64_MAX, &num); if (ret < 0) - return ret; + goto finish; *(int64_t *)dst = num; } else if (po->type == OPT_TYPE_TIME) { @@ -283,18 +320,18 @@ static int write_option(void *optctx, const OptionDef *po, const char *opt, if (ret < 0) { av_log(NULL, AV_LOG_ERROR, "Invalid duration for option %s: %s\n", opt, arg); - return ret; + goto finish; } } else if (po->type == OPT_TYPE_FLOAT) { ret = parse_number(opt, arg, OPT_TYPE_FLOAT, -INFINITY, INFINITY, &num); if (ret < 0) - return ret; + goto finish; *(float *)dst = num; } else if (po->type == OPT_TYPE_DOUBLE) { ret = parse_number(opt, arg, OPT_TYPE_DOUBLE, -INFINITY, INFINITY, &num); if (ret < 0) - return ret; + goto finish; *(double *)dst = num; } else { @@ -307,11 +344,13 @@ static int write_option(void *optctx, const OptionDef *po, const char *opt, av_log(NULL, AV_LOG_ERROR, "Failed to set value '%s' for option '%s': %s\n", arg, opt, av_err2str(ret)); - return ret; + goto finish; } } - if (po->flags & OPT_EXIT) - return AVERROR_EXIT; + if (po->flags & OPT_EXIT) { + ret = AVERROR_EXIT; + goto finish; + } if (sol) { sol->type = po->type; @@ -319,7 +358,9 @@ static int write_option(void *optctx, const OptionDef *po, const char *opt, find_option(defs, po->u1.name_canon) : po; } - return 0; +finish: + av_freep(&arg_allocated); + return ret; } int parse_option(void *optctx, const char *opt, const char *arg, @@ -1088,3 +1129,29 @@ double get_rotation(const int32_t *displaymatrix) return theta; } + +/* read file contents into a string */ +char *file_read(const char *filename) +{ + AVIOContext *pb = NULL; + int ret = avio_open(&pb, filename, AVIO_FLAG_READ); + AVBPrint bprint; + char *str; + + if (ret < 0) { + av_log(NULL, AV_LOG_ERROR, "Error opening file %s.\n", filename); + return NULL; + } + + av_bprint_init(&bprint, 0, AV_BPRINT_SIZE_UNLIMITED); + ret = avio_read_to_bprint(pb, &bprint, SIZE_MAX); + avio_closep(&pb); + if (ret < 0) { + av_bprint_finalize(&bprint, NULL); + return NULL; + } + ret = av_bprint_finalize(&bprint, &str); + if (ret < 0) + return NULL; + return str; +} diff --git a/fftools/cmdutils.h b/fftools/cmdutils.h index 53227abb47..8fa5ad4fc7 100644 --- a/fftools/cmdutils.h +++ b/fftools/cmdutils.h @@ -470,4 +470,7 @@ void *allocate_array_elem(void *array, size_t elem_size, int *nb_elems); double get_rotation(const int32_t *displaymatrix); +/* read file contents into a string */ +char *file_read(const char *filename); + #endif /* FFTOOLS_CMDUTILS_H */ diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h index 6137ac991e..cdde3c2c03 100644 --- a/fftools/ffmpeg.h +++ b/fftools/ffmpeg.h @@ -652,7 +652,6 @@ void remove_avoptions(AVDictionary **a, AVDictionary *b); int check_avoptions(AVDictionary *m); int assert_file_overwrite(const char *filename); -char *file_read(const char *filename); AVDictionary *strip_specifiers(const AVDictionary *dict); int find_codec(void *logctx, const char *name, enum AVMediaType type, int encoder, const AVCodec **codec); diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index 563f443bd8..ffb2c42421 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -765,32 +765,6 @@ int assert_file_overwrite(const char *filename) return 0; } -/* read file contents into a string */ -char *file_read(const char *filename) -{ - AVIOContext *pb = NULL; - int ret = avio_open(&pb, filename, AVIO_FLAG_READ); - AVBPrint bprint; - char *str; - - if (ret < 0) { - av_log(NULL, AV_LOG_ERROR, "Error opening file %s.\n", filename); - return NULL; - } - - av_bprint_init(&bprint, 0, AV_BPRINT_SIZE_UNLIMITED); - ret = avio_read_to_bprint(pb, &bprint, SIZE_MAX); - avio_closep(&pb); - if (ret < 0) { - av_bprint_finalize(&bprint, NULL); - return NULL; - } - ret = av_bprint_finalize(&bprint, &str); - if (ret < 0) - return NULL; - return str; -} - /* arg format is "output-stream-index:streamid-value". */ static int opt_streamid(void *optctx, const char *opt, const char *arg) { From patchwork Wed Jan 17 09:22:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 45632 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c58a:b0:199:de12:6fa6 with SMTP id gn10csp232115pzb; Wed, 17 Jan 2024 01:23:34 -0800 (PST) X-Google-Smtp-Source: AGHT+IFSu+3vPPDlhN0748W4owXtMgy85lu07XSsrfiDEsdYE/49XkyVxhkXHvvbZIyTe17YOGdH X-Received: by 2002:aa7:c445:0:b0:559:d116:99b8 with SMTP id n5-20020aa7c445000000b00559d11699b8mr424050edr.53.1705483414331; Wed, 17 Jan 2024 01:23:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1705483414; cv=none; d=google.com; s=arc-20160816; b=VLoP1/FP4XwVSvEqN4IioqG3H6kfpVz7flE49Qjc1roeVywjYBmUsEeqXtqnadwXy3 XKUXHkE2Dmq/dRMOU7AUizY7fH/1yJdK/b5IeSLGYjHdJvBjrF4mu5QIbpjdbCvWnwaY nsec4VPIAv0WJiVrWookskJCNmIeLfqa5j0JvBQspaz1xOZmhDIg2/Hn/xyuVgzYVMdG wb+jwAo5x19Ci7ic4LUyMdiGoIpjmDZTs8kgsHyRqSLSn/D8ALwrASLcPejh16Ck8S24 tFWagtBqo9rqqzCmBUncAJQrEtYzZNjkt/+tUwC/HYl5TZ2xuHeVxZJ6Q1a+bEW2EK4J EOZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=3CcfhgHyX7JEyf9MfsEfvDR5G/fPYQ66TFYCTWeAs2o=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=WCLHyDRpPDNsunOUEBubFllbLGkuw/pIyc5XTQsW5Nn51yFo4qgllYSEeX9tspomj0 IpONFn4UsMH3bKHYpA1cGou7nsJKseuSzzBqr1uDW4y6FHmI48ZFQWTBNWoN958Xlve8 L/WbF+4HOebw9xIavgASWnO/VmfapXKFNsi3Dasjs5O+1s7Iu9mlnF9RFsP077aaCmkR Z7FJE/YJPHZdnShQLBQB+ihQuef2Tp8aoLg/v8gdk8i20Ipzj6iHVk4uau0ivkgFfSU4 y+gCXSKL9Uf9cKvce7Z6vUh7Y1DCV/LhuZV2uWP84mwNavmj45CLiGZVfiAODUSxz4xn aHAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=e+ji1gKS; 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 k7-20020aa7c387000000b005540ba82f12si5821706edq.489.2024.01.17.01.23.33; Wed, 17 Jan 2024 01:23:34 -0800 (PST) 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=e+ji1gKS; 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 298BF68D07A; Wed, 17 Jan 2024 11:22:54 +0200 (EET) 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 7083E68CFA7 for ; Wed, 17 Jan 2024 11:22:45 +0200 (EET) 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=e+ji1gKS; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id BD5D519B9 for ; Wed, 17 Jan 2024 10:22:40 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id IgqtChOYjISj for ; Wed, 17 Jan 2024 10:22:40 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1705483358; bh=KhN5X8gJpnc7t3WespmP39TiDDZQcXTxy4kto3Xuex4=; h=From:To:Subject:Date:In-Reply-To:References:From; b=e+ji1gKSIscT/UrStTYtUqHrbzbo2vPcC5eN3VdjD+vc45C7XXVlvjHs2u8s+cZmN hwr1yqWBpIav8zoed1RfW/iAYGoRO4m9DVLuptQmdEQb7v/flHTjGAw37d8IIZkq3r Ye7p5JGSQ7CSzmtCNrMQVak9+lkX2TwlTHVZpiozRcqOLMBj1L/4M7stE43tVhY7ex k5wuf84KvWosqWAjUYUeW54f/hLfuYS3CdPJ7xaUkX1jAoRs52LO4llN3hNfT5LNU1 QO2L1Qf3Cj2hL0PDw5sVfiLeVD8yZd1pGUf7FMtliu0fFxpFsicDVXg1r9YcSlIkrZ KRUZD0SH4TXmg== 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 375FA19BC for ; Wed, 17 Jan 2024 10:22:38 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 1FB363A0634 for ; Wed, 17 Jan 2024 10:22:38 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Jan 2024 10:22:32 +0100 Message-ID: <20240117092233.8503-5-anton@khirnov.net> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20240117092233.8503-1-anton@khirnov.net> References: <20240117092233.8503-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 5/6] fftools/ffmpeg: deprecate -filter_complex_script 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: HYEAsHgqTyn+ It is equivalent to -/filter_complex. --- doc/ffmpeg.texi | 9 +-------- doc/filters.texi | 3 +-- fftools/ffmpeg.h | 1 + fftools/ffmpeg_opt.c | 9 ++++++++- tests/fate/ffmpeg.mak | 2 +- tests/fate/filter-audio.mak | 8 ++++---- tests/fate/filter-video.mak | 26 +++++++++++++------------- tests/fate/mov.mak | 4 ++-- 8 files changed, 31 insertions(+), 31 deletions(-) diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi index e7d026ebf5..31a2b90b34 100644 --- a/doc/ffmpeg.texi +++ b/doc/ffmpeg.texi @@ -1675,8 +1675,7 @@ Set the size of the canvas used to render subtitles. Create one or more streams in the output file. This option has two forms for specifying the data source(s): the first selects one or more streams from some input file (specified with @code{-i}), the second takes an output from some -complex filtergraph (specified with @code{-filter_complex} or -@code{-filter_complex_script}). +complex filtergraph (specified with @code{-filter_complex}). In the first form, an output stream is created for every stream from the input file with the index @var{input_file_id}. If @var{stream_specifier} is given, @@ -2207,12 +2206,6 @@ The default is the number of available CPUs. Define a complex filtergraph, i.e. one with arbitrary number of inputs and/or outputs. Equivalent to @option{-filter_complex}. -@anchor{filter_complex_script option} -@item -filter_complex_script @var{filename} (@emph{global}) -This option is similar to @option{-filter_complex}, the only difference is that -its argument is the name of the file from which a complex filtergraph -description is to be read. - @item -accurate_seek (@emph{input}) This option enables or disables accurate seeking in input files with the @option{-ss} option. It is enabled by default, so seeking is accurate when diff --git a/doc/filters.texi b/doc/filters.texi index 20c91bab3a..6ec7d54b5f 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -308,8 +308,7 @@ use the @option{textfile} option in place of @option{text} to specify the text to render. When using the @command{ffmpeg} tool, you might consider to use the -@ref{filter_script option,,-filter_script option,ffmpeg} or -@ref{filter_complex_script option,,-filter_complex_script option,ffmpeg}. +@ref{filter_script option,,-filter_script option,ffmpeg}. @chapter Timeline editing diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h index cdde3c2c03..c73fb91c14 100644 --- a/fftools/ffmpeg.h +++ b/fftools/ffmpeg.h @@ -62,6 +62,7 @@ #define FFMPEG_OPT_FORCE_KF_SOURCE_NO_DROP 1 #define FFMPEG_OPT_VSYNC_DROP 1 #define FFMPEG_OPT_VSYNC 1 +#define FFMPEG_OPT_FILTER_SCRIPT 1 #define FFMPEG_ERROR_RATE_EXCEEDED FFERRTAG('E', 'R', 'E', 'D') diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index ffb2c42421..d5bc7e9c8b 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -1158,6 +1158,7 @@ static int opt_filter_complex(void *optctx, const char *opt, const char *arg) return fg_create(NULL, graph_desc, sch); } +#if FFMPEG_OPT_FILTER_SCRIPT static int opt_filter_complex_script(void *optctx, const char *opt, const char *arg) { Scheduler *sch = optctx; @@ -1165,8 +1166,12 @@ static int opt_filter_complex_script(void *optctx, const char *opt, const char * if (!graph_desc) return AVERROR(EINVAL); + av_log(NULL, AV_LOG_WARNING, "-%s is deprecated, use -/filter_complex %s instead\n", + opt, arg); + return fg_create(NULL, graph_desc, sch); } +#endif void show_help_default(const char *opt, const char *arg) { @@ -1635,9 +1640,11 @@ const OptionDef options[] = { { "lavfi", OPT_TYPE_FUNC, OPT_FUNC_ARG | OPT_EXPERT, { .func_arg = opt_filter_complex }, "create a complex filtergraph", "graph_description" }, +#if FFMPEG_OPT_FILTER_SCRIPT { "filter_complex_script", OPT_TYPE_FUNC, OPT_FUNC_ARG | OPT_EXPERT, { .func_arg = opt_filter_complex_script }, - "read complex filtergraph description from a file", "filename" }, + "deprecated, use -/filter_complex instead", "filename" }, +#endif { "auto_conversion_filters", OPT_TYPE_BOOL, OPT_EXPERT, { &auto_conversion_filters }, "enable automatic conversion filters globally" }, diff --git a/tests/fate/ffmpeg.mak b/tests/fate/ffmpeg.mak index df955df4d0..84489e9fea 100644 --- a/tests/fate/ffmpeg.mak +++ b/tests/fate/ffmpeg.mak @@ -36,7 +36,7 @@ fate-ffmpeg-attached_pics: CMD = threads=2 framecrc -i $(TARGET_SAMPLES)/lossles FATE_SAMPLES_FFMPEG-$(call FILTERDEMDEC, COLORKEY OVERLAY SCALE, MPEGPS IMAGE_PPM_PIPE, CAVS PPM, CAVSVIDEO_PARSER) += fate-ffmpeg-filter_colorkey fate-ffmpeg-filter_colorkey: tests/data/filtergraphs/colorkey -fate-ffmpeg-filter_colorkey: CMD = framecrc -auto_conversion_filters -idct simple -fflags +bitexact -flags +bitexact -sws_flags +accurate_rnd+bitexact -i $(TARGET_SAMPLES)/cavs/cavs.mpg -fflags +bitexact -flags +bitexact -sws_flags +accurate_rnd+bitexact -i $(TARGET_SAMPLES)/lena.pnm -an -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/colorkey -sws_flags +accurate_rnd+bitexact -fflags +bitexact -flags +bitexact -qscale 2 -frames:v 10 +fate-ffmpeg-filter_colorkey: CMD = framecrc -auto_conversion_filters -idct simple -fflags +bitexact -flags +bitexact -sws_flags +accurate_rnd+bitexact -i $(TARGET_SAMPLES)/cavs/cavs.mpg -fflags +bitexact -flags +bitexact -sws_flags +accurate_rnd+bitexact -i $(TARGET_SAMPLES)/lena.pnm -an -/filter_complex $(TARGET_PATH)/tests/data/filtergraphs/colorkey -sws_flags +accurate_rnd+bitexact -fflags +bitexact -flags +bitexact -qscale 2 -frames:v 10 FATE_FFMPEG-$(call FILTERFRAMECRC, COLOR) += fate-ffmpeg-lavfi fate-ffmpeg-lavfi: CMD = framecrc -lavfi color=d=1:r=5 -fflags +bitexact diff --git a/tests/fate/filter-audio.mak b/tests/fate/filter-audio.mak index adf61cf074..1d6f7c7f4e 100644 --- a/tests/fate/filter-audio.mak +++ b/tests/fate/filter-audio.mak @@ -82,7 +82,7 @@ FATE_AFILTER-$(call FILTERDEMDECENCMUX, ANEQUALIZER, WAV, PCM_S16LE, PCM_S16LE, fate-filter-anequalizer: tests/data/asynth-44100-2.wav fate-filter-anequalizer: tests/data/filtergraphs/anequalizer fate-filter-anequalizer: SRC = $(TARGET_PATH)/tests/data/asynth-44100-2.wav -fate-filter-anequalizer: CMD = framecrc -auto_conversion_filters -i $(SRC) -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/anequalizer +fate-filter-anequalizer: CMD = framecrc -auto_conversion_filters -i $(SRC) -/filter_complex $(TARGET_PATH)/tests/data/filtergraphs/anequalizer FATE_AFILTER-$(call FILTERDEMDECENCMUX, ASETNSAMPLES, WAV, PCM_S16LE, PCM_S16LE, WAV) += fate-filter-asetnsamples-pad fate-filter-asetnsamples-pad: tests/data/asynth-44100-2.wav @@ -202,7 +202,7 @@ FATE_AFILTER-$(call FILTERDEMDECENCMUX, COMPAND, WAV, PCM_S16LE, PCM_S16LE, WAV) fate-filter-compand: tests/data/asynth-44100-2.wav fate-filter-compand: tests/data/filtergraphs/compand fate-filter-compand: SRC = $(TARGET_PATH)/tests/data/asynth-44100-2.wav -fate-filter-compand: CMD = framecrc -auto_conversion_filters -i $(SRC) -frames:a 20 -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/compand +fate-filter-compand: CMD = framecrc -auto_conversion_filters -i $(SRC) -frames:a 20 -/filter_complex $(TARGET_PATH)/tests/data/filtergraphs/compand tests/data/hls-list.m3u8: TAG = GEN tests/data/hls-list.m3u8: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data @@ -292,7 +292,7 @@ FATE_FILTER_CHANNELMAP += fate-filter-channelmap-one-int fate-filter-channelmap-one-int: tests/data/filtergraphs/channelmap_one_int fate-filter-channelmap-one-int: SRC = $(TARGET_PATH)/tests/data/asynth-44100-6.wav fate-filter-channelmap-one-int: tests/data/asynth-44100-6.wav -fate-filter-channelmap-one-int: CMD = md5 -auto_conversion_filters -i $(SRC) -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/channelmap_one_int -f wav -fflags +bitexact +fate-filter-channelmap-one-int: CMD = md5 -auto_conversion_filters -i $(SRC) -/filter_complex $(TARGET_PATH)/tests/data/filtergraphs/channelmap_one_int -f wav -fflags +bitexact fate-filter-channelmap-one-int: CMP = oneline fate-filter-channelmap-one-int: REF = 8cfe553d65ed4696756d8c1b824fcdd3 @@ -300,7 +300,7 @@ FATE_FILTER_CHANNELMAP += fate-filter-channelmap-one-str fate-filter-channelmap-one-str: tests/data/filtergraphs/channelmap_one_str fate-filter-channelmap-one-str: SRC = $(TARGET_PATH)/tests/data/asynth-44100-2.wav fate-filter-channelmap-one-str: tests/data/asynth-44100-2.wav -fate-filter-channelmap-one-str: CMD = md5 -auto_conversion_filters -i $(SRC) -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/channelmap_one_str -f wav -fflags +bitexact +fate-filter-channelmap-one-str: CMD = md5 -auto_conversion_filters -i $(SRC) -/filter_complex $(TARGET_PATH)/tests/data/filtergraphs/channelmap_one_str -f wav -fflags +bitexact fate-filter-channelmap-one-str: CMP = oneline fate-filter-channelmap-one-str: REF = 0ea3052e482c95d5d3bd9da6dac1b5fa diff --git a/tests/fate/filter-video.mak b/tests/fate/filter-video.mak index c8bd8c2e1f..576f5a7dd0 100644 --- a/tests/fate/filter-video.mak +++ b/tests/fate/filter-video.mak @@ -200,28 +200,28 @@ fate-filter-vectorscope_xy: CMD = framecrc -auto_conversion_filters -c:v pgmyuv FATE_FILTER_VSYNTH_PGMYUV-$(CONFIG_MERGEPLANES_FILTER) += fate-filter-mergeplanes fate-filter-mergeplanes: tests/data/filtergraphs/mergeplanes -fate-filter-mergeplanes: CMD = framecrc -c:v pgmyuv -i $(SRC) -c:v pgmyuv -i $(SRC) -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/mergeplanes +fate-filter-mergeplanes: CMD = framecrc -c:v pgmyuv -i $(SRC) -c:v pgmyuv -i $(SRC) -/filter_complex $(TARGET_PATH)/tests/data/filtergraphs/mergeplanes FATE_FILTER_VSYNTH_PGMYUV-$(CONFIG_HSTACK_FILTER) += fate-filter-hstack fate-filter-hstack: tests/data/filtergraphs/hstack -fate-filter-hstack: CMD = framecrc -c:v pgmyuv -i $(SRC) -c:v pgmyuv -i $(SRC) -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/hstack +fate-filter-hstack: CMD = framecrc -c:v pgmyuv -i $(SRC) -c:v pgmyuv -i $(SRC) -/filter_complex $(TARGET_PATH)/tests/data/filtergraphs/hstack FATE_FILTER_VSYNTH_PGMYUV-$(CONFIG_VSTACK_FILTER) += fate-filter-vstack fate-filter-vstack: tests/data/filtergraphs/vstack -fate-filter-vstack: CMD = framecrc -c:v pgmyuv -i $(SRC) -c:v pgmyuv -i $(SRC) -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/vstack +fate-filter-vstack: CMD = framecrc -c:v pgmyuv -i $(SRC) -c:v pgmyuv -i $(SRC) -/filter_complex $(TARGET_PATH)/tests/data/filtergraphs/vstack FATE_FILTER_OVERLAY-$(call FILTERDEMDEC, SCALE OVERLAY, IMAGE2, PGMYUV) += fate-filter-overlay -fate-filter-overlay: CMD = framecrc -c:v pgmyuv -i $(SRC) -c:v pgmyuv -i $(SRC) -filter_complex_script $(FILTERGRAPH) +fate-filter-overlay: CMD = framecrc -c:v pgmyuv -i $(SRC) -c:v pgmyuv -i $(SRC) -/filter_complex $(FILTERGRAPH) FATE_FILTER_OVERLAY-$(call FILTERDEMDEC, SPLIT SCALE PAD OVERLAY, IMAGE2, PGMYUV) += $(addprefix fate-filter-overlay_, rgb yuv420 yuv420p10 nv12 nv21 yuv422 yuv422p10 yuv444 yuv444p10) -fate-filter-overlay_%: CMD = framecrc -auto_conversion_filters -c:v pgmyuv -i $(SRC) -filter_complex_script $(FILTERGRAPH) -fate-filter-overlay_yuv420: CMD = framecrc -c:v pgmyuv -i $(SRC) -filter_complex_script $(FILTERGRAPH) -fate-filter-overlay_%p10: CMD = framecrc -auto_conversion_filters -c:v pgmyuv -i $(SRC) -filter_complex_script $(FILTERGRAPH) -pix_fmt $(@:fate-filter-overlay_%=%)le -frames:v 3 +fate-filter-overlay_%: CMD = framecrc -auto_conversion_filters -c:v pgmyuv -i $(SRC) -/filter_complex $(FILTERGRAPH) +fate-filter-overlay_yuv420: CMD = framecrc -c:v pgmyuv -i $(SRC) -/filter_complex $(FILTERGRAPH) +fate-filter-overlay_%p10: CMD = framecrc -auto_conversion_filters -c:v pgmyuv -i $(SRC) -/filter_complex $(FILTERGRAPH) -pix_fmt $(@:fate-filter-overlay_%=%)le -frames:v 3 $(addprefix fate-filter-overlay_, nv12 nv21): REF = $(SRC_PATH)/tests/ref/fate/filter-overlay_yuv420 FATE_FILTER_OVERLAY_SAMPLES-$(call FILTERDEMDEC, SCALE OVERLAY, MATROSKA, H264 DVDSUB) += fate-filter-overlay-dvdsub-2397 -fate-filter-overlay-dvdsub-2397: CMD = framecrc -auto_conversion_filters -flags bitexact -i $(TARGET_SAMPLES)/filter/242_4.mkv -filter_complex_script $(FILTERGRAPH) -c:a copy +fate-filter-overlay-dvdsub-2397: CMD = framecrc -auto_conversion_filters -flags bitexact -i $(TARGET_SAMPLES)/filter/242_4.mkv -/filter_complex $(FILTERGRAPH) -c:a copy FATE_FILTER_OVERLAY := $(FATE_FILTER_OVERLAY-yes) $(FATE_FILTER_OVERLAY_SAMPLES-yes) $(FATE_FILTER_OVERLAY): FILTERGRAPH = $(TARGET_PATH)/tests/data/filtergraphs/$(@:fate-filter-%=%) @@ -335,7 +335,7 @@ fate-filter-unsharp-yuv420p10: CMD = framecrc -lavfi testsrc2=r=2:d=10,scale,for FATE_FILTER_SAMPLES-$(call FILTERDEMDEC, PERMS HQDN3D, SMJPEG, MJPEG) += fate-filter-hqdn3d-sample fate-filter-hqdn3d-sample: tests/data/filtergraphs/hqdn3d -fate-filter-hqdn3d-sample: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/smjpeg/scenwin.mjpg -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/hqdn3d -an +fate-filter-hqdn3d-sample: CMD = framecrc -idct simple -i $(TARGET_SAMPLES)/smjpeg/scenwin.mjpg -/filter_complex $(TARGET_PATH)/tests/data/filtergraphs/hqdn3d -an FATE_FILTER_EPX-$(call FILTERDEMDEC, SCALE EPX, IMAGE2, PNG) = fate-filter-ep2x fate-filter-ep3x FATE_FILTER_SAMPLES-yes += $(FATE_FILTER_EPX-yes) @@ -366,9 +366,9 @@ fate-filter-gradfun-sample: CMD = framecrc -auto_conversion_filters -i $(TARGET_ FATE_FILTER-$(call FILTERFRAMECRC, TESTSRC SINE CONCAT, FILE_PROTOCOL) += fate-filter-concat fate-filter-concat-vfr fate-filter-concat: tests/data/filtergraphs/concat -fate-filter-concat: CMD = framecrc -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/concat +fate-filter-concat: CMD = framecrc -/filter_complex $(TARGET_PATH)/tests/data/filtergraphs/concat fate-filter-concat-vfr: tests/data/filtergraphs/concat-vfr -fate-filter-concat-vfr: CMD = framecrc -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/concat-vfr +fate-filter-concat-vfr: CMD = framecrc -/filter_complex $(TARGET_PATH)/tests/data/filtergraphs/concat-vfr FATE_FILTER-$(call FILTERFRAMECRC, TESTSRC2 CHROMASHIFT) += fate-filter-chromashift-smear fate-filter-chromashift-wrap fate-filter-chromashift-smear: CMD = framecrc -lavfi testsrc2=r=5:d=1,chromashift=cbh=-1:cbv=1:crh=2:crv=-2:edge=smear -pix_fmt yuv420p @@ -404,7 +404,7 @@ fate-filter-fsync-down: CMD = framecrc -lavfi testsrc2=r=25:d=1,fsync=f=tests/da FATE_FILTER_ALPHAEXTRACT_ALPHAMERGE := $(addprefix fate-filter-alphaextract_alphamerge_, rgb yuv) FATE_FILTER_VSYNTH_PGMYUV-$(call ALLYES, SCALE_FILTER FORMAT_FILTER SPLIT_FILTER ALPHAEXTRACT_FILTER ALPHAMERGE_FILTER) += $(FATE_FILTER_ALPHAEXTRACT_ALPHAMERGE) $(FATE_FILTER_ALPHAEXTRACT_ALPHAMERGE): fate-filter-alphaextract_alphamerge_%: tests/data/filtergraphs/alphamerge_alphaextract_% -$(FATE_FILTER_ALPHAEXTRACT_ALPHAMERGE): CMD = framecrc -auto_conversion_filters -c:v pgmyuv -i $(SRC) -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/alphamerge_alphaextract$(@:fate-filter-alphaextract_alphamerge%=%) +$(FATE_FILTER_ALPHAEXTRACT_ALPHAMERGE): CMD = framecrc -auto_conversion_filters -c:v pgmyuv -i $(SRC) -/filter_complex $(TARGET_PATH)/tests/data/filtergraphs/alphamerge_alphaextract$(@:fate-filter-alphaextract_alphamerge%=%) FATE_FILTER_VSYNTH_VIDEO_FILTER-$(CONFIG_CROP_FILTER) += fate-filter-crop fate-filter-crop: CMD = video_filter "crop=iw-100:ih-100:100:100" @@ -429,7 +429,7 @@ fate-filter-scale500: CMD = video_filter "scale=w=500:h=500" FATE_FILTER_VSYNTH-$(call ALLYES, TESTSRC_FILTER SCALE2REF_FILTER NULLSINK_FILTER FRAMEMD5_MUXER FILE_PROTOCOL PIPE_PROTOCOL) += fate-filter-scale2ref_keep_aspect fate-filter-scale2ref_keep_aspect: tests/data/filtergraphs/scale2ref_keep_aspect -fate-filter-scale2ref_keep_aspect: CMD = framemd5 -frames:v 5 -filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/scale2ref_keep_aspect -map "[main]" +fate-filter-scale2ref_keep_aspect: CMD = framemd5 -frames:v 5 -/filter_complex $(TARGET_PATH)/tests/data/filtergraphs/scale2ref_keep_aspect -map "[main]" FATE_FILTER_VSYNTH-$(call FILTERDEMDEC, SCALE, RAWVIDEO, RAWVIDEO) += fate-filter-scalechroma fate-filter-scalechroma: tests/data/vsynth1.yuv diff --git a/tests/fate/mov.mak b/tests/fate/mov.mak index 3dae929014..f202f36d96 100644 --- a/tests/fate/mov.mak +++ b/tests/fate/mov.mak @@ -170,13 +170,13 @@ FATE_SAMPLES_FFMPEG_FFPROBE += $(FATE_MOV_FFMPEG_FFPROBE-yes) FATE_MOV_FFMPEG-$(call TRANSCODE, PCM_S16LE, MOV, WAV_DEMUXER PAN_FILTER) \ += fate-mov-channel-description fate-mov-channel-description: tests/data/asynth-44100-1.wav tests/data/filtergraphs/mov-channel-description -fate-mov-channel-description: CMD = transcode wav $(TARGET_PATH)/tests/data/asynth-44100-1.wav mov "-filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/mov-channel-description -map [outFL] -map [outFR] -map [outFC] -map [outLFE] -map [outBL] -map [outBR] -map [outDL] -map [outDR] -c:a pcm_s16le" "-map 0 -c copy -frames:a 0" +fate-mov-channel-description: CMD = transcode wav $(TARGET_PATH)/tests/data/asynth-44100-1.wav mov "-/filter_complex $(TARGET_PATH)/tests/data/filtergraphs/mov-channel-description -map [outFL] -map [outFR] -map [outFC] -map [outLFE] -map [outBL] -map [outBR] -map [outDL] -map [outDR] -c:a pcm_s16le" "-map 0 -c copy -frames:a 0" # Test PCM in mp4 and channel layout FATE_MOV_FFMPEG-$(call TRANSCODE, PCM_S16LE, MOV, WAV_DEMUXER PAN_FILTER) \ += fate-mov-mp4-pcm fate-mov-mp4-pcm: tests/data/asynth-44100-1.wav tests/data/filtergraphs/mov-mp4-pcm -fate-mov-mp4-pcm: CMD = transcode wav $(TARGET_PATH)/tests/data/asynth-44100-1.wav mp4 "-filter_complex_script $(TARGET_PATH)/tests/data/filtergraphs/mov-mp4-pcm -map [mono] -map [stereo] -map [2.1] -map [5.1] -map [7.1] -c:a pcm_s16le" "-map 0 -c copy -frames:a 0" +fate-mov-mp4-pcm: CMD = transcode wav $(TARGET_PATH)/tests/data/asynth-44100-1.wav mp4 "-/filter_complex $(TARGET_PATH)/tests/data/filtergraphs/mov-mp4-pcm -map [mono] -map [stereo] -map [2.1] -map [5.1] -map [7.1] -c:a pcm_s16le" "-map 0 -c copy -frames:a 0" # Test floating sample format PCM in mp4 and unusual channel layout FATE_MOV_FFMPEG-$(call TRANSCODE, PCM_S16LE, MOV, WAV_DEMUXER PAN_FILTER) \ From patchwork Wed Jan 17 09:22:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 45631 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c58a:b0:199:de12:6fa6 with SMTP id gn10csp232074pzb; Wed, 17 Jan 2024 01:23:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IF1sP+EEjznzpW7pFSj+WkWiZTQ+72wsNhGpPGbGtKvBA93dst5pj1+d+uVqPq5Zkk1KJB7 X-Received: by 2002:a17:907:500a:b0:a27:5446:27d9 with SMTP id fw10-20020a170907500a00b00a27544627d9mr3236305ejc.5.1705483405564; Wed, 17 Jan 2024 01:23:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1705483405; cv=none; d=google.com; s=arc-20160816; b=gBj9U7rqN3+VV7TwDbsR4I8IkF6y1Z0L5Zr7lonZ6RBSPixYfDGXE/SwmMWjlqm4lt Op57WDs65/my15T+YrLfOCgvJKOveENWQ9l1NdCvl+MyC8QJUfVftMjtBRvGpDASiFly lW8VZbHYjh6Q1wR72hM4rtPluGbzdry/J6V4tEoQCKfnK9I2cskJPS0cUARZLNtaxx0P pZzgWgnJ14IV96phbV5Ixzh/7CjXXo1YUGuclI7nOzKVyj57JrLvh3A8Rnr36VLchvEo Z3YPiZo+OiaKxPJ6AvZS1JbqC3mPXHjhY3ewT472FP/qK0ZqkeaxyIAcxNHkfo/wXVmh Cweg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=IDWCzGjxVeSqwcIwSzczGRGcj/tp5IrOE59kDe0gTNQ=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=znHZ2zaAPgkjJ2NU66BkWg4gT2ctpI4EnUIYvBU4ua/cbJSkGiBYaJAF77kT4WbaRf LDrOrvAGxRjD6fHadi1hQgabbc9TMsYt+3FvTmaxxqUTLNMBGf1CSBGO/HWnQ3TYlAnM md7HowAJXs6oyWiKdnFlmgPlPchnhHR/uf5oa5RA/CrsFbkwByuA1fkx5SrUq28zbQBA cWpxCspUa3vdf2JMLzgIyUc9BeaJYB4FDdA3HS+HqjCleAHhVwITcIIuP7SgKdepC+5D zJXg0e9pdiVoAIV3koIbe2O9ENGU6jI3MAJvNRvcNr9B0YIdur8Vxb+fOCYTYmqk6cwR bA6A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=BY8cIfBt; 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 h2-20020a1709063c0200b00a2ed24c42d0si430094ejg.390.2024.01.17.01.23.25; Wed, 17 Jan 2024 01:23:25 -0800 (PST) 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=BY8cIfBt; 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 EFB3968D05F; Wed, 17 Jan 2024 11:22:52 +0200 (EET) 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 CA67E68CD77 for ; Wed, 17 Jan 2024 11:22:40 +0200 (EET) 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=BY8cIfBt; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 6767719C2 for ; Wed, 17 Jan 2024 10:22:40 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id h--4e2slLQK2 for ; Wed, 17 Jan 2024 10:22:39 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1705483358; bh=Ldoxe/mkZo3nm0hAKBdrmUnbhmEkRmYbUdHJ4AdgbmM=; h=From:To:Subject:Date:In-Reply-To:References:From; b=BY8cIfBtwaRdtdOZJ7ewPHfY0ig3Tn+TBooOdxnNptQ0KIrOem9QZHZZP7C6R2Vgo TsuOOqH6DZpqYAcb+nwn3cnqg3XYu2NrwU/QAJ+7gdMANYNgSwvq1Ei0rN/CbQEBLf tWrerT1tRicysku1QSnyIV7tzcYctMDjOo/s4bo14qrIGoRR2oBqWymAjDi+bn5uHO C+hbDM2Y8E9Lz/teg/VvlRpHw/rSSGowWxfd0t9siSnZHSr1Za/xb1mZBjWINWzxe4 eU2QHVNQiZ+HMsACqyWGaAKD6564LGkJE0NrY16fQcM/zKBwOBKjtDhmqyjBWF+GEU YWySjSwElayHw== 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 6763519BE for ; Wed, 17 Jan 2024 10:22:38 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 2B86A3A07AE for ; Wed, 17 Jan 2024 10:22:38 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Jan 2024 10:22:33 +0100 Message-ID: <20240117092233.8503-6-anton@khirnov.net> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20240117092233.8503-1-anton@khirnov.net> References: <20240117092233.8503-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 6/6] fftools/ffmpeg: deprecate -filter_script 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: JKXvl2QMDjl+ It is equivalent to -/filter. --- doc/ffmpeg.texi | 6 ------ doc/filters.texi | 3 --- fftools/ffmpeg.h | 2 ++ fftools/ffmpeg_mux_init.c | 36 ++++++++++++++++++++++++++++++------ fftools/ffmpeg_opt.c | 4 +++- tests/fate/filter-audio.mak | 2 +- tests/fate/filter-video.mak | 6 +++--- 7 files changed, 39 insertions(+), 20 deletions(-) diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi index 31a2b90b34..f58103810a 100644 --- a/doc/ffmpeg.texi +++ b/doc/ffmpeg.texi @@ -977,12 +977,6 @@ syntax. See the @ref{filter_complex_option,,-filter_complex option} if you want to create filtergraphs with multiple inputs and/or outputs. -@anchor{filter_script option} -@item -filter_script[:@var{stream_specifier}] @var{filename} (@emph{output,per-stream}) -This option is similar to @option{-filter}, the only difference is that its -argument is the name of the file from which a filtergraph description is to be -read. - @item -reinit_filter[:@var{stream_specifier}] @var{integer} (@emph{input,per-stream}) This boolean option determines if the filtergraph(s) to which this stream is fed gets reinitialized when input frame parameters change mid-stream. This option is enabled by diff --git a/doc/filters.texi b/doc/filters.texi index 6ec7d54b5f..1d70f4d934 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -307,9 +307,6 @@ For example, in case of the @ref{drawtext,,drawtext filter}, you might prefer to use the @option{textfile} option in place of @option{text} to specify the text to render. -When using the @command{ffmpeg} tool, you might consider to use the -@ref{filter_script option,,-filter_script option,ffmpeg}. - @chapter Timeline editing Some filters support a generic @option{enable} option. For the filters diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h index c73fb91c14..3014a626b4 100644 --- a/fftools/ffmpeg.h +++ b/fftools/ffmpeg.h @@ -221,7 +221,9 @@ typedef struct OptionsContext { SpecifierOptList copy_initial_nonkeyframes; SpecifierOptList copy_prior_start; SpecifierOptList filters; +#if FFMPEG_OPT_FILTER_SCRIPT SpecifierOptList filter_scripts; +#endif SpecifierOptList reinit_filters; SpecifierOptList fix_sub_duration; SpecifierOptList fix_sub_duration_heartbeat; diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c index 80109df0ae..5422a64cbc 100644 --- a/fftools/ffmpeg_mux_init.c +++ b/fftools/ffmpeg_mux_init.c @@ -415,36 +415,58 @@ static MuxStream *mux_stream_alloc(Muxer *mux, enum AVMediaType type) static int ost_get_filters(const OptionsContext *o, AVFormatContext *oc, OutputStream *ost, char **dst) { - const char *filters = NULL, *filters_script = NULL; + const char *filters = NULL; +#if FFMPEG_OPT_FILTER_SCRIPT + const char *filters_script = NULL; MATCH_PER_STREAM_OPT(filter_scripts, str, filters_script, oc, ost->st); +#endif MATCH_PER_STREAM_OPT(filters, str, filters, oc, ost->st); if (!ost->enc) { - if (filters_script || filters) { + if ( +#if FFMPEG_OPT_FILTER_SCRIPT + filters_script || +#endif + filters) { av_log(ost, AV_LOG_ERROR, "%s '%s' was specified, but codec copy was selected. " "Filtering and streamcopy cannot be used together.\n", +#if FFMPEG_OPT_FILTER_SCRIPT filters ? "Filtergraph" : "Filtergraph script", - filters ? filters : filters_script); + filters ? filters : filters_script +#else + "Filtergraph", filters +#endif + ); return AVERROR(ENOSYS); } return 0; } if (!ost->ist) { - if (filters_script || filters) { + if ( +#if FFMPEG_OPT_FILTER_SCRIPT + filters_script || +#endif + filters) { av_log(ost, AV_LOG_ERROR, "%s '%s' was specified for a stream fed from a complex " "filtergraph. Simple and complex filtering cannot be used " "together for the same stream.\n", +#if FFMPEG_OPT_FILTER_SCRIPT filters ? "Filtergraph" : "Filtergraph script", - filters ? filters : filters_script); + filters ? filters : filters_script +#else + "Filtergraph", filters +#endif + ); return AVERROR(EINVAL); } return 0; } +#if FFMPEG_OPT_FILTER_SCRIPT if (filters_script && filters) { av_log(ost, AV_LOG_ERROR, "Both -filter and -filter_script set\n"); return AVERROR(EINVAL); @@ -452,7 +474,9 @@ static int ost_get_filters(const OptionsContext *o, AVFormatContext *oc, if (filters_script) *dst = file_read(filters_script); - else if (filters) + else +#endif + if (filters) *dst = av_strdup(filters); else *dst = av_strdup(ost->type == AVMEDIA_TYPE_VIDEO ? "null" : "anull"); diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index d5bc7e9c8b..1978f438fe 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -1625,9 +1625,11 @@ const OptionDef options[] = { { "filter_threads", OPT_TYPE_FUNC, OPT_FUNC_ARG | OPT_EXPERT, { .func_arg = opt_filter_threads }, "number of non-complex filter threads" }, +#if FFMPEG_OPT_FILTER_SCRIPT { "filter_script", OPT_TYPE_STRING, OPT_SPEC | OPT_EXPERT | OPT_OUTPUT, { .off = OFFSET(filter_scripts) }, - "read stream filtergraph description from a file", "filename" }, + "deprecated, use -/filter", "filename" }, +#endif { "reinit_filter", OPT_TYPE_INT, OPT_SPEC | OPT_INPUT | OPT_EXPERT, { .off = OFFSET(reinit_filters) }, "reinit filtergraph on input parameter changes", "" }, diff --git a/tests/fate/filter-audio.mak b/tests/fate/filter-audio.mak index 1d6f7c7f4e..05df1bb213 100644 --- a/tests/fate/filter-audio.mak +++ b/tests/fate/filter-audio.mak @@ -128,7 +128,7 @@ FATE_AFILTER-$(call FILTERDEMDECENCMUX, FIREQUALIZER ATRIM VOLUME, WAV, PCM_S16L fate-filter-firequalizer: tests/data/asynth-44100-2.wav fate-filter-firequalizer: tests/data/filtergraphs/firequalizer fate-filter-firequalizer: REF = tests/data/asynth-44100-2.wav -fate-filter-firequalizer: CMD = ffmpeg -auto_conversion_filters -i $(TARGET_PATH)/tests/data/asynth-44100-2.wav -filter_script $(TARGET_PATH)/tests/data/filtergraphs/firequalizer -f wav -c:a pcm_s16le - +fate-filter-firequalizer: CMD = ffmpeg -auto_conversion_filters -i $(TARGET_PATH)/tests/data/asynth-44100-2.wav -/filter $(TARGET_PATH)/tests/data/filtergraphs/firequalizer -f wav -c:a pcm_s16le - fate-filter-firequalizer: CMP = oneoff fate-filter-firequalizer: CMP_UNIT = s16 fate-filter-firequalizer: SIZE_TOLERANCE = 1058400 - 1097208 diff --git a/tests/fate/filter-video.mak b/tests/fate/filter-video.mak index 576f5a7dd0..ee9f0f5e40 100644 --- a/tests/fate/filter-video.mak +++ b/tests/fate/filter-video.mak @@ -269,11 +269,11 @@ fate-filter-weave: CMD = framecrc -c:v pgmyuv -i $(SRC) -vf weave=bottom FATE_FILTER_VSYNTH_PGMYUV-$(CONFIG_SELECT_FILTER) += fate-filter-select-alternate fate-filter-select-alternate: tests/data/filtergraphs/select-alternate -fate-filter-select-alternate: CMD = framecrc -c:v pgmyuv -i $(SRC) -filter_script $(TARGET_PATH)/tests/data/filtergraphs/select-alternate +fate-filter-select-alternate: CMD = framecrc -c:v pgmyuv -i $(SRC) -/filter $(TARGET_PATH)/tests/data/filtergraphs/select-alternate FATE_FILTER_VSYNTH_PGMYUV-$(call ALLYES, SETPTS_FILTER SETTB_FILTER) += fate-filter-setpts fate-filter-setpts: tests/data/filtergraphs/setpts -fate-filter-setpts: CMD = framecrc -c:v pgmyuv -i $(SRC) -filter_script $(TARGET_PATH)/tests/data/filtergraphs/setpts +fate-filter-setpts: CMD = framecrc -c:v pgmyuv -i $(SRC) -/filter $(TARGET_PATH)/tests/data/filtergraphs/setpts FATE_SHUFFLEFRAMES += fate-filter-shuffleframes fate-filter-shuffleframes: CMD = framecrc -c:v pgmyuv -i $(SRC) -vf shuffleframes="2|1|0" @@ -362,7 +362,7 @@ fate-filter-curves: CMD = framecrc -i $(TARGET_SAMPLES)/utvideo/utvideo_rgb_medi FATE_FILTER_SAMPLES-$(call FILTERDEMDEC, FORMAT PERMS GRADFUN SCALE, VMD, VMDVIDEO) += fate-filter-gradfun-sample fate-filter-gradfun-sample: tests/data/filtergraphs/gradfun -fate-filter-gradfun-sample: CMD = framecrc -auto_conversion_filters -i $(TARGET_SAMPLES)/vmd/12.vmd -filter_script $(TARGET_PATH)/tests/data/filtergraphs/gradfun -an -frames:v 20 +fate-filter-gradfun-sample: CMD = framecrc -auto_conversion_filters -i $(TARGET_SAMPLES)/vmd/12.vmd -/filter $(TARGET_PATH)/tests/data/filtergraphs/gradfun -an -frames:v 20 FATE_FILTER-$(call FILTERFRAMECRC, TESTSRC SINE CONCAT, FILE_PROTOCOL) += fate-filter-concat fate-filter-concat-vfr fate-filter-concat: tests/data/filtergraphs/concat