diff options
author | Gyan Doshi <ffmpeg@gyani.pro> | 2020-12-21 14:16:49 +0530 |
---|---|---|
committer | Gyan Doshi <ffmpeg@gyani.pro> | 2020-12-23 00:41:07 +0530 |
commit | 842714b5cb4112ec6805ed228b34d711024ad9e2 (patch) | |
tree | 74ad01f5af35ea046040dc5ead7c8fc310b90e57 /fftools | |
parent | 686c07fb1e0455c4205eaad18e8a01bf64058dec (diff) | |
download | ffmpeg-842714b5cb4112ec6805ed228b34d711024ad9e2.tar.gz |
ffmpeg: add option stats_period
At present, progress stats are updated at a hardcoded interval of
half a second. For long processes, this can lead to bloated
logs and progress reports.
Users can now set a custom period using option -stats_period
Default is kept at 0.5 seconds.
Diffstat (limited to 'fftools')
-rw-r--r-- | fftools/ffmpeg.c | 2 | ||||
-rw-r--r-- | fftools/ffmpeg.h | 1 | ||||
-rw-r--r-- | fftools/ffmpeg_opt.c | 18 |
3 files changed, 20 insertions, 1 deletions
diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index b446d9b206..6d25f1bca9 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -1699,7 +1699,7 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti last_time = cur_time; return; } - if ((cur_time - last_time) < 500000) + if ((cur_time - last_time) < stats_period) return; last_time = cur_time; } diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h index 3b54dab7fc..8046e75026 100644 --- a/fftools/ffmpeg.h +++ b/fftools/ffmpeg.h @@ -614,6 +614,7 @@ extern int debug_ts; extern int exit_on_error; extern int abort_on_flags; extern int print_stats; +extern int64_t stats_period; extern int qp_hist; extern int stdin_interaction; extern int frame_bits_per_raw_sample; diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index 7ee034c9c9..242468fc64 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -174,6 +174,7 @@ int filter_nbthreads = 0; int filter_complex_nbthreads = 0; int vstats_version = 2; int auto_conversion_filters = 1; +int64_t stats_period = 500000; static int intra_only = 0; @@ -282,6 +283,21 @@ static int opt_abort_on(void *optctx, const char *opt, const char *arg) return av_opt_eval_flags(&pclass, &opts[0], arg, &abort_on_flags); } +static int opt_stats_period(void *optctx, const char *opt, const char *arg) +{ + int64_t user_stats_period = parse_time_or_die(opt, arg, 1); + + if (user_stats_period <= 0) { + av_log(NULL, AV_LOG_ERROR, "stats_period %s must be positive.\n", arg); + return AVERROR(EINVAL); + } + + stats_period = user_stats_period; + av_log(NULL, AV_LOG_INFO, "ffmpeg stats and -progress period set to %s.\n", arg); + + return 0; +} + static int opt_sameq(void *optctx, const char *opt, const char *arg) { av_log(NULL, AV_LOG_ERROR, "Option '%s' was removed. " @@ -3557,6 +3573,8 @@ const OptionDef options[] = { "enable automatic conversion filters globally" }, { "stats", OPT_BOOL, { &print_stats }, "print progress report during encoding", }, + { "stats_period", HAS_ARG | OPT_EXPERT, { .func_arg = opt_stats_period }, + "set the period at which ffmpeg updates stats and -progress output", "time" }, { "attach", HAS_ARG | OPT_PERFILE | OPT_EXPERT | OPT_OUTPUT, { .func_arg = opt_attach }, "add an attachment to the output file", "filename" }, |