diff --git a/cmdutils.c b/cmdutils.c index f696700142..248462fd80 100644 --- a/cmdutils.c +++ b/cmdutils.c @@ -528,6 +528,17 @@ int opt_loglevel(void *optctx, const char *opt, const char *arg) return 0; } +int opt_report_file(void *optctx, const char *opt, const char *arg) +{ + report_file = fopen(arg, "w"); + if (!report_file) { + av_log(NULL, AV_LOG_ERROR, "Failed to open report \"%s\": %s\n", + arg, strerror(errno)); + return AVERROR(errno); + } + return 0; +} + int opt_report(const char *opt) { char filename[64]; diff --git a/cmdutils.h b/cmdutils.h index 3885d9412c..4624f195e1 100644 --- a/cmdutils.h +++ b/cmdutils.h @@ -84,6 +84,8 @@ int opt_loglevel(void *optctx, const char *opt, const char *arg); int opt_report(const char *opt); +int opt_report_file(void *optctx, const char *opt, const char *arg); + int opt_max_alloc(void *optctx, const char *opt, const char *arg); int opt_cpuflags(void *optctx, const char *opt, const char *arg); diff --git a/cmdutils_common_opts.h b/cmdutils_common_opts.h index bfd71feb7d..2e1cf7db03 100644 --- a/cmdutils_common_opts.h +++ b/cmdutils_common_opts.h @@ -19,5 +19,6 @@ { "debug" , HAS_ARG, {.func_arg = opt_codec_debug}, "set debug flags", "flags" }, { "fdebug" , HAS_ARG, {.func_arg = opt_codec_debug}, "set debug flags", "flags" }, { "report" , 0, {(void*)opt_report}, "generate a report" }, + { "report_file", HAS_ARG, {.func_arg = opt_report_file}, "filename for storing the report" }, { "max_alloc" , HAS_ARG, {.func_arg = opt_max_alloc}, "set maximum size of a single allocated block", "bytes" }, { "cpuflags" , HAS_ARG | OPT_EXPERT, {.func_arg = opt_cpuflags}, "force specific cpu flags", "flags" },