diff options
author | Anton Khirnov <anton@khirnov.net> | 2015-06-28 09:37:58 +0300 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2015-07-19 10:34:24 +0300 |
commit | 6d5d9246042acb804a652e6fedfb7afe0ca85614 (patch) | |
tree | 1b34594230e1194eded43bccd6dd682ae2d3dc76 /avconv_opt.c | |
parent | 59245e0c5e10a849e67c632cccf4f677b2442e82 (diff) |
avconv: move handling the 2pass logfile into avconv_opt
It more logically belongs there.
Diffstat (limited to 'avconv_opt.c')
-rw-r--r-- | avconv_opt.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/avconv_opt.c b/avconv_opt.c index 7adf051978..86989d66f6 100644 --- a/avconv_opt.c +++ b/avconv_opt.c @@ -41,6 +41,8 @@ #include "libavutil/pixdesc.h" #include "libavutil/pixfmt.h" +#define DEFAULT_PASS_LOGFILENAME_PREFIX "av2pass" + #define MATCH_PER_STREAM_OPT(name, type, outvar, fmtctx, st)\ {\ int i, ret;\ @@ -1174,6 +1176,38 @@ static OutputStream *new_video_stream(OptionsContext *o, AVFormatContext *oc) !(ost->logfile_prefix = av_strdup(ost->logfile_prefix))) exit_program(1); + if (do_pass) { + char logfilename[1024]; + FILE *f; + + snprintf(logfilename, sizeof(logfilename), "%s-%d.log", + ost->logfile_prefix ? ost->logfile_prefix : + DEFAULT_PASS_LOGFILENAME_PREFIX, + i); + if (!strcmp(ost->enc->name, "libx264")) { + av_dict_set(&ost->encoder_opts, "stats", logfilename, AV_DICT_DONT_OVERWRITE); + } else { + if (video_enc->flags & CODEC_FLAG_PASS1) { + f = fopen(logfilename, "wb"); + if (!f) { + av_log(NULL, AV_LOG_FATAL, "Cannot write log file '%s' for pass-1 encoding: %s\n", + logfilename, strerror(errno)); + exit_program(1); + } + ost->logfile = f; + } else { + char *logbuffer; + size_t logbuffer_size; + if (cmdutils_read_file(logfilename, &logbuffer, &logbuffer_size) < 0) { + av_log(NULL, AV_LOG_FATAL, "Error reading log file '%s' for pass-2 encoding\n", + logfilename); + exit_program(1); + } + video_enc->stats_in = logbuffer; + } + } + } + MATCH_PER_STREAM_OPT(forced_key_frames, str, ost->forced_keyframes, oc, st); if (ost->forced_keyframes) ost->forced_keyframes = av_strdup(ost->forced_keyframes); |