aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2012-08-19 09:15:48 +0200
committerAnton Khirnov <anton@khirnov.net>2012-08-30 13:56:25 +0200
commitbbcedade008b5471c71122944cf4dee1951138ec (patch)
tree96f36fc9549f7d6508e66afccc935c4e9036879d
parent038c0b1e06cadffdd6ac50f058dcc6bc075b9019 (diff)
downloadffmpeg-bbcedade008b5471c71122944cf4dee1951138ec.tar.gz
avconv: make the -passlogfile option per-stream.
-rw-r--r--Changelog2
-rw-r--r--avconv.c4
-rw-r--r--avconv.h4
-rw-r--r--avconv_opt.c8
-rw-r--r--doc/avconv.texi2
5 files changed, 14 insertions, 6 deletions
diff --git a/Changelog b/Changelog
index d175c127d7..4fcce0e630 100644
--- a/Changelog
+++ b/Changelog
@@ -43,7 +43,7 @@ version <next>:
- RTMPTE protocol support
- Canopus Lossless Codec decoder
- avconv -shortest option is now per-output file,
- -pass is now per-output stream
+ -pass and -passlogfile are now per-output stream
- Ut Video encoder
diff --git a/avconv.c b/avconv.c
index 592e9a8aba..0114f4f21f 100644
--- a/avconv.c
+++ b/avconv.c
@@ -183,6 +183,7 @@ void exit_program(int ret)
av_freep(&output_streams[i]->forced_keyframes);
av_freep(&output_streams[i]->avfilter);
+ av_freep(&output_streams[i]->logfile_prefix);
av_freep(&output_streams[i]->filtered_frame);
av_freep(&output_streams[i]);
}
@@ -1747,7 +1748,8 @@ static int transcode_init(void)
FILE *f;
snprintf(logfilename, sizeof(logfilename), "%s-%d.log",
- pass_logfilename_prefix ? pass_logfilename_prefix : DEFAULT_PASS_LOGFILENAME_PREFIX,
+ ost->logfile_prefix ? ost->logfile_prefix :
+ DEFAULT_PASS_LOGFILENAME_PREFIX,
i);
if (!strcmp(ost->enc->name, "libx264")) {
av_dict_set(&ost->opts, "stats", logfilename, AV_DICT_DONT_OVERWRITE);
diff --git a/avconv.h b/avconv.h
index 7a51ccbec1..2d6f60b451 100644
--- a/avconv.h
+++ b/avconv.h
@@ -160,6 +160,8 @@ typedef struct OptionsContext {
int nb_filters;
SpecifierOpt *pass;
int nb_pass;
+ SpecifierOpt *passlogfiles;
+ int nb_passlogfiles;
} OptionsContext;
typedef struct InputFilter {
@@ -284,6 +286,7 @@ typedef struct OutputStream {
int forced_kf_index;
char *forced_keyframes;
+ char *logfile_prefix;
FILE *logfile;
OutputFilter *filter;
@@ -323,7 +326,6 @@ extern int nb_output_files;
extern FilterGraph **filtergraphs;
extern int nb_filtergraphs;
-extern char *pass_logfilename_prefix;
extern char *vstats_filename;
extern float audio_drift_threshold;
diff --git a/avconv_opt.c b/avconv_opt.c
index 28bd926c2f..1859af8cf0 100644
--- a/avconv_opt.c
+++ b/avconv_opt.c
@@ -54,7 +54,6 @@
}\
}
-char *pass_logfilename_prefix = NULL;
char *vstats_filename;
float audio_drift_threshold = 0.1;
@@ -967,6 +966,11 @@ static OutputStream *new_video_stream(OptionsContext *o, AVFormatContext *oc)
}
}
+ MATCH_PER_STREAM_OPT(passlogfiles, str, ost->logfile_prefix, oc, st);
+ if (ost->logfile_prefix &&
+ !(ost->logfile_prefix = av_strdup(ost->logfile_prefix)))
+ exit_program(1);
+
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);
@@ -1967,7 +1971,7 @@ const OptionDef options[] = {
"use same quantizer as source (implies VBR)" },
{ "pass", OPT_VIDEO | HAS_ARG | OPT_SPEC | OPT_INT, { .off = OFFSET(pass) },
"select the pass number (1 or 2)", "n" },
- { "passlogfile", OPT_VIDEO | HAS_ARG | OPT_STRING | OPT_EXPERT, { &pass_logfilename_prefix },
+ { "passlogfile", OPT_VIDEO | HAS_ARG | OPT_STRING | OPT_EXPERT | OPT_SPEC, { .off = OFFSET(passlogfiles) },
"select two pass log file name prefix", "prefix" },
{ "deinterlace", OPT_VIDEO | OPT_EXPERT , { .func_arg = opt_deinterlace },
"this option is deprecated, use the yadif filter instead" },
diff --git a/doc/avconv.texi b/doc/avconv.texi
index 58b530c0af..ecf7192817 100644
--- a/doc/avconv.texi
+++ b/doc/avconv.texi
@@ -492,7 +492,7 @@ avconv -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y NUL
avconv -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y /dev/null
@end example
-@item -passlogfile @var{prefix} (@emph{global})
+@item -passlogfile[:@var{stream_specifier}] @var{prefix} (@emph{output,per-stream})
Set two-pass log file name prefix to @var{prefix}, the default file name
prefix is ``av2pass''. The complete file name will be
@file{PREFIX-N.log}, where N is a number specific to the output