fftools/ffmpeg: deprecate -filter_script

It is equivalent to -/filter.
This commit is contained in:
Anton Khirnov 2024-01-12 15:54:11 +01:00
parent c316c4c77b
commit a8bc79c3fd
7 changed files with 39 additions and 20 deletions

View File

@ -977,12 +977,6 @@ syntax.
See the @ref{filter_complex_option,,-filter_complex option} if you See the @ref{filter_complex_option,,-filter_complex option} if you
want to create filtergraphs with multiple inputs and/or outputs. 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}) @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 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 reinitialized when input frame parameters change mid-stream. This option is enabled by

View File

@ -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 use the @option{textfile} option in place of @option{text} to specify the text
to render. 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 @chapter Timeline editing
Some filters support a generic @option{enable} option. For the filters Some filters support a generic @option{enable} option. For the filters

View File

@ -221,7 +221,9 @@ typedef struct OptionsContext {
SpecifierOptList copy_initial_nonkeyframes; SpecifierOptList copy_initial_nonkeyframes;
SpecifierOptList copy_prior_start; SpecifierOptList copy_prior_start;
SpecifierOptList filters; SpecifierOptList filters;
#if FFMPEG_OPT_FILTER_SCRIPT
SpecifierOptList filter_scripts; SpecifierOptList filter_scripts;
#endif
SpecifierOptList reinit_filters; SpecifierOptList reinit_filters;
SpecifierOptList fix_sub_duration; SpecifierOptList fix_sub_duration;
SpecifierOptList fix_sub_duration_heartbeat; SpecifierOptList fix_sub_duration_heartbeat;

View File

@ -415,36 +415,58 @@ static MuxStream *mux_stream_alloc(Muxer *mux, enum AVMediaType type)
static int ost_get_filters(const OptionsContext *o, AVFormatContext *oc, static int ost_get_filters(const OptionsContext *o, AVFormatContext *oc,
OutputStream *ost, char **dst) 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); MATCH_PER_STREAM_OPT(filter_scripts, str, filters_script, oc, ost->st);
#endif
MATCH_PER_STREAM_OPT(filters, str, filters, oc, ost->st); MATCH_PER_STREAM_OPT(filters, str, filters, oc, ost->st);
if (!ost->enc) { if (!ost->enc) {
if (filters_script || filters) { if (
#if FFMPEG_OPT_FILTER_SCRIPT
filters_script ||
#endif
filters) {
av_log(ost, AV_LOG_ERROR, av_log(ost, AV_LOG_ERROR,
"%s '%s' was specified, but codec copy was selected. " "%s '%s' was specified, but codec copy was selected. "
"Filtering and streamcopy cannot be used together.\n", "Filtering and streamcopy cannot be used together.\n",
#if FFMPEG_OPT_FILTER_SCRIPT
filters ? "Filtergraph" : "Filtergraph script", filters ? "Filtergraph" : "Filtergraph script",
filters ? filters : filters_script); filters ? filters : filters_script
#else
"Filtergraph", filters
#endif
);
return AVERROR(ENOSYS); return AVERROR(ENOSYS);
} }
return 0; return 0;
} }
if (!ost->ist) { if (!ost->ist) {
if (filters_script || filters) { if (
#if FFMPEG_OPT_FILTER_SCRIPT
filters_script ||
#endif
filters) {
av_log(ost, AV_LOG_ERROR, av_log(ost, AV_LOG_ERROR,
"%s '%s' was specified for a stream fed from a complex " "%s '%s' was specified for a stream fed from a complex "
"filtergraph. Simple and complex filtering cannot be used " "filtergraph. Simple and complex filtering cannot be used "
"together for the same stream.\n", "together for the same stream.\n",
#if FFMPEG_OPT_FILTER_SCRIPT
filters ? "Filtergraph" : "Filtergraph script", filters ? "Filtergraph" : "Filtergraph script",
filters ? filters : filters_script); filters ? filters : filters_script
#else
"Filtergraph", filters
#endif
);
return AVERROR(EINVAL); return AVERROR(EINVAL);
} }
return 0; return 0;
} }
#if FFMPEG_OPT_FILTER_SCRIPT
if (filters_script && filters) { if (filters_script && filters) {
av_log(ost, AV_LOG_ERROR, "Both -filter and -filter_script set\n"); av_log(ost, AV_LOG_ERROR, "Both -filter and -filter_script set\n");
return AVERROR(EINVAL); return AVERROR(EINVAL);
@ -452,7 +474,9 @@ static int ost_get_filters(const OptionsContext *o, AVFormatContext *oc,
if (filters_script) if (filters_script)
*dst = file_read(filters_script); *dst = file_read(filters_script);
else if (filters) else
#endif
if (filters)
*dst = av_strdup(filters); *dst = av_strdup(filters);
else else
*dst = av_strdup(ost->type == AVMEDIA_TYPE_VIDEO ? "null" : "anull"); *dst = av_strdup(ost->type == AVMEDIA_TYPE_VIDEO ? "null" : "anull");

View File

@ -1625,9 +1625,11 @@ const OptionDef options[] = {
{ "filter_threads", OPT_TYPE_FUNC, OPT_FUNC_ARG | OPT_EXPERT, { "filter_threads", OPT_TYPE_FUNC, OPT_FUNC_ARG | OPT_EXPERT,
{ .func_arg = opt_filter_threads }, { .func_arg = opt_filter_threads },
"number of non-complex filter threads" }, "number of non-complex filter threads" },
#if FFMPEG_OPT_FILTER_SCRIPT
{ "filter_script", OPT_TYPE_STRING, OPT_SPEC | OPT_EXPERT | OPT_OUTPUT, { "filter_script", OPT_TYPE_STRING, OPT_SPEC | OPT_EXPERT | OPT_OUTPUT,
{ .off = OFFSET(filter_scripts) }, { .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, { "reinit_filter", OPT_TYPE_INT, OPT_SPEC | OPT_INPUT | OPT_EXPERT,
{ .off = OFFSET(reinit_filters) }, { .off = OFFSET(reinit_filters) },
"reinit filtergraph on input parameter changes", "" }, "reinit filtergraph on input parameter changes", "" },

View File

@ -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/asynth-44100-2.wav
fate-filter-firequalizer: tests/data/filtergraphs/firequalizer fate-filter-firequalizer: tests/data/filtergraphs/firequalizer
fate-filter-firequalizer: REF = tests/data/asynth-44100-2.wav 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 = oneoff
fate-filter-firequalizer: CMP_UNIT = s16 fate-filter-firequalizer: CMP_UNIT = s16
fate-filter-firequalizer: SIZE_TOLERANCE = 1058400 - 1097208 fate-filter-firequalizer: SIZE_TOLERANCE = 1058400 - 1097208

View File

@ -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_VSYNTH_PGMYUV-$(CONFIG_SELECT_FILTER) += fate-filter-select-alternate
fate-filter-select-alternate: tests/data/filtergraphs/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_VSYNTH_PGMYUV-$(call ALLYES, SETPTS_FILTER SETTB_FILTER) += fate-filter-setpts
fate-filter-setpts: tests/data/filtergraphs/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_SHUFFLEFRAMES += fate-filter-shuffleframes
fate-filter-shuffleframes: CMD = framecrc -c:v pgmyuv -i $(SRC) -vf shuffleframes="2|1|0" 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_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: 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-$(call FILTERFRAMECRC, TESTSRC SINE CONCAT, FILE_PROTOCOL) += fate-filter-concat fate-filter-concat-vfr
fate-filter-concat: tests/data/filtergraphs/concat fate-filter-concat: tests/data/filtergraphs/concat