Merge commit '6d5d9246042acb804a652e6fedfb7afe0ca85614'
* commit '6d5d9246042acb804a652e6fedfb7afe0ca85614': avconv: move handling the 2pass logfile into avconv_opt Conflicts: ffmpeg.c Merged-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
commit
247f4d1f18
35
ffmpeg.c
35
ffmpeg.c
@ -136,8 +136,6 @@ AVIOContext *progress_avio = NULL;
|
|||||||
|
|
||||||
static uint8_t *subtitle_out;
|
static uint8_t *subtitle_out;
|
||||||
|
|
||||||
#define DEFAULT_PASS_LOGFILENAME_PREFIX "ffmpeg2pass"
|
|
||||||
|
|
||||||
InputStream **input_streams = NULL;
|
InputStream **input_streams = NULL;
|
||||||
int nb_input_streams = 0;
|
int nb_input_streams = 0;
|
||||||
InputFile **input_files = NULL;
|
InputFile **input_files = NULL;
|
||||||
@ -3053,39 +3051,6 @@ static int transcode_init(void)
|
|||||||
abort();
|
abort();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* two pass mode */
|
|
||||||
if (enc_ctx->flags & (CODEC_FLAG_PASS1 | CODEC_FLAG_PASS2)) {
|
|
||||||
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 (enc_ctx->flags & CODEC_FLAG_PASS2) {
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
enc_ctx->stats_in = logbuffer;
|
|
||||||
}
|
|
||||||
if (enc_ctx->flags & CODEC_FLAG_PASS1) {
|
|
||||||
f = av_fopen_utf8(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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ost->disposition) {
|
if (ost->disposition) {
|
||||||
|
36
ffmpeg_opt.c
36
ffmpeg_opt.c
@ -42,6 +42,8 @@
|
|||||||
#include "libavutil/pixfmt.h"
|
#include "libavutil/pixfmt.h"
|
||||||
#include "libavutil/time_internal.h"
|
#include "libavutil/time_internal.h"
|
||||||
|
|
||||||
|
#define DEFAULT_PASS_LOGFILENAME_PREFIX "ffmpeg2pass"
|
||||||
|
|
||||||
#define MATCH_PER_STREAM_OPT(name, type, outvar, fmtctx, st)\
|
#define MATCH_PER_STREAM_OPT(name, type, outvar, fmtctx, st)\
|
||||||
{\
|
{\
|
||||||
int i, ret;\
|
int i, ret;\
|
||||||
@ -1468,6 +1470,40 @@ static OutputStream *new_video_stream(OptionsContext *o, AVFormatContext *oc, in
|
|||||||
!(ost->logfile_prefix = av_strdup(ost->logfile_prefix)))
|
!(ost->logfile_prefix = av_strdup(ost->logfile_prefix)))
|
||||||
exit_program(1);
|
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_PASS2) {
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
if (video_enc->flags & CODEC_FLAG_PASS1) {
|
||||||
|
f = av_fopen_utf8(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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MATCH_PER_STREAM_OPT(forced_key_frames, str, ost->forced_keyframes, oc, st);
|
MATCH_PER_STREAM_OPT(forced_key_frames, str, ost->forced_keyframes, oc, st);
|
||||||
if (ost->forced_keyframes)
|
if (ost->forced_keyframes)
|
||||||
ost->forced_keyframes = av_strdup(ost->forced_keyframes);
|
ost->forced_keyframes = av_strdup(ost->forced_keyframes);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user