[FFmpeg-devel] [PATCH] fftools/cmdutils: add an option to append to the report file
Dan Zwell
dzwell at gmail.com
Tue Feb 1 13:58:38 EET 2022
There are times when we want ffmpeg to log, but we don't want it to
overwrite the log file. In addition to the use case described in the
ticket, a third party tool that invokes ffmpeg may write additional
information to the log file, such as why the encoding options were
chosen.
This implements:
https://trac.ffmpeg.org/ticket/3059
Note: unknown keys are ignored, so adding a new "append" key does not
break backward compatibility.
Signed-off-by: Dan Zwell <devel at zwell.net>
---
doc/fftools-common-opts.texi | 3 +++
fftools/cmdutils.c | 8 +++++++-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/doc/fftools-common-opts.texi b/doc/fftools-common-opts.texi
index d9145704d6..4c6c297315 100644
--- a/doc/fftools-common-opts.texi
+++ b/doc/fftools-common-opts.texi
@@ -270,6 +270,9 @@ of the program, @code{%t} is expanded to a
timestamp, @code{%%} is expanded
to a plain @code{%}
@item level
set the log verbosity level using a numerical value (see
@code{-loglevel}).
+ at item append
+ at code{append=1} tells ffmpeg to append to a report file if it exists
instead
+of overwriting it.
@end table
For example, to output a report to a file named @file{ffreport.log}
diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c
index 4b50e15eef..350329ee8b 100644
--- a/fftools/cmdutils.c
+++ b/fftools/cmdutils.c
@@ -983,6 +983,7 @@ static int init_report(const char *env)
time_t now;
struct tm *tm;
AVBPrint filename;
+ int append = 0;
if (report_file) /* already opened */
return 0;
@@ -1012,6 +1013,8 @@ static int init_report(const char *env)
exit_program(1);
}
envlevel = 1;
+ } else if (!strcmp(key, "append")) {
+ append = strtol(val, NULL, 10);
} else {
av_log(NULL, AV_LOG_ERROR, "Unknown key '%s' in
FFREPORT\n", key);
}
@@ -1032,7 +1035,10 @@ static int init_report(const char *env)
if (!envlevel)
report_file_level = FFMAX(report_file_level, prog_loglevel);
- report_file = fopen(filename.str, "w");
+ if (append)
+ report_file = fopen(filename.str, "a");
+ else
+ report_file = fopen(filename.str, "w");
if (!report_file) {
int ret = AVERROR(errno);
av_log(NULL, AV_LOG_ERROR, "Failed to open report \"%s\": %s\n",
--
2.25.1
More information about the ffmpeg-devel
mailing list