Hello everyone, I was heavily using the -filter_script option lately and was missing a way to put comments into the filtergraph file. So here’s a proposal to add that functionality.
Happy new year!
From 067cb553e5ad5e47c0cbad3c78a55f3aa5c4fe7e Mon Sep 17 00:00:00 2001 From: Daniel Musketa <=> Date: Thu, 31 Dec 2020 00:50:14 +0100 Subject: [PATCH 2/2] document the behaviour of -filter_script to ignore commented lines --- doc/ffmpeg.texi | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi index 62015d7565..b97002b9d3 100644 --- a/doc/ffmpeg.texi +++ b/doc/ffmpeg.texi @@ -663,6 +663,8 @@ 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. +Lines beginning with "#" in the filtergraph description will be ignored. + @item -filter_threads @var{nb_threads} (@emph{global}) Defines how many threads are used to process a filter pipeline. Each pipeline will produce a thread pool with this many threads available for parallel processing. @@ -1678,6 +1680,8 @@ 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. +Lines beginning with "#" in the filtergraph description will be ignored. + @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 -- 2.17.1
From 4a51956edcd7c4959972207d9f05e3e21d90dbd1 Mon Sep 17 00:00:00 2001 From: Daniel Musketa <=> Date: Thu, 31 Dec 2020 00:44:06 +0100 Subject: [PATCH 1/2] add function to remove commented lines from filtergraph Lines beginning with "#" will be removed (or rather cruelly overridden with white space) to be able to have comments in a filtergraph file. --- fftools/ffmpeg_opt.c | 55 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index 242468fc64..f776f4bd7f 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -20,6 +20,7 @@ */ #include <stdint.h> +#include <stdbool.h> #include "ffmpeg.h" #include "cmdutils.h" @@ -1658,6 +1659,50 @@ static uint8_t *read_file(const char *filename) return str; } +/* remove lines beginning with "#" (from filtergraph) */ +static void remove_commented_lines(char *str) +{ + #define COMMENT '#' + #define EOL '\n' + + + bool in_commented_line = false; + bool next_char_is_first_of_line = true; + int lines_affected = 0; + + for (int i = 0; i < strlen(str); i++) { + if (str[i] == EOL) { + in_commented_line = false; + next_char_is_first_of_line = true; + continue; + } + + if (next_char_is_first_of_line && str[i] == COMMENT) { + in_commented_line = true; + lines_affected++; + } + + if (in_commented_line) { + str[i] = ' '; + } + + next_char_is_first_of_line = false; + } + + if (lines_affected) { + av_log( + NULL, + AV_LOG_INFO, + "%s: %s() removed %i commented lines from filtergraph.\n", + __FILE__, + __FUNCTION__, + lines_affected + ); + } + + return; +} + static char *get_ost_filters(OptionsContext *o, AVFormatContext *oc, OutputStream *ost) { @@ -1669,8 +1714,11 @@ static char *get_ost_filters(OptionsContext *o, AVFormatContext *oc, exit_program(1); } - if (ost->filters_script) - return read_file(ost->filters_script); + if (ost->filters_script) { + uint8_t *graph_desc = read_file(ost->filters_script); + remove_commented_lines(graph_desc); + return graph_desc; + } else if (ost->filters) return av_strdup(ost->filters); @@ -3200,6 +3248,9 @@ static int opt_filter_complex(void *optctx, const char *opt, const char *arg) static int opt_filter_complex_script(void *optctx, const char *opt, const char *arg) { uint8_t *graph_desc = read_file(arg); + + remove_commented_lines(graph_desc); + if (!graph_desc) return AVERROR(EINVAL); -- 2.17.1
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".