Commit 038c0b1e authored by Anton Khirnov's avatar Anton Khirnov

avconv: make the -pass option per-stream.

parent e2785fa7
...@@ -42,7 +42,8 @@ version <next>: ...@@ -42,7 +42,8 @@ version <next>:
- RTMPE protocol support - RTMPE protocol support
- RTMPTE protocol support - RTMPTE protocol support
- Canopus Lossless Codec decoder - Canopus Lossless Codec decoder
- avconv -shortest option is now per-output file - avconv -shortest option is now per-output file,
-pass is now per-output stream
- Ut Video encoder - Ut Video encoder
......
...@@ -158,6 +158,8 @@ typedef struct OptionsContext { ...@@ -158,6 +158,8 @@ typedef struct OptionsContext {
int nb_copy_initial_nonkeyframes; int nb_copy_initial_nonkeyframes;
SpecifierOpt *filters; SpecifierOpt *filters;
int nb_filters; int nb_filters;
SpecifierOpt *pass;
int nb_pass;
} OptionsContext; } OptionsContext;
typedef struct InputFilter { typedef struct InputFilter {
......
...@@ -77,7 +77,6 @@ int same_quant = 0; ...@@ -77,7 +77,6 @@ int same_quant = 0;
static int file_overwrite = 0; static int file_overwrite = 0;
static int video_discard = 0; static int video_discard = 0;
static int intra_dc_precision = 8; static int intra_dc_precision = 8;
static int do_pass = 0;
static int using_stdin = 0; static int using_stdin = 0;
static int input_sync; static int input_sync;
...@@ -886,6 +885,7 @@ static OutputStream *new_video_stream(OptionsContext *o, AVFormatContext *oc) ...@@ -886,6 +885,7 @@ static OutputStream *new_video_stream(OptionsContext *o, AVFormatContext *oc)
char *frame_aspect_ratio = NULL, *frame_pix_fmt = NULL; char *frame_aspect_ratio = NULL, *frame_pix_fmt = NULL;
char *intra_matrix = NULL, *inter_matrix = NULL; char *intra_matrix = NULL, *inter_matrix = NULL;
const char *filters = "null"; const char *filters = "null";
int do_pass = 0;
int i; int i;
MATCH_PER_STREAM_OPT(frame_rates, str, frame_rate, oc, st); MATCH_PER_STREAM_OPT(frame_rates, str, frame_rate, oc, st);
...@@ -958,6 +958,7 @@ static OutputStream *new_video_stream(OptionsContext *o, AVFormatContext *oc) ...@@ -958,6 +958,7 @@ static OutputStream *new_video_stream(OptionsContext *o, AVFormatContext *oc)
video_enc->intra_dc_precision = intra_dc_precision - 8; video_enc->intra_dc_precision = intra_dc_precision - 8;
/* two pass mode */ /* two pass mode */
MATCH_PER_STREAM_OPT(pass, i, do_pass, oc, st);
if (do_pass) { if (do_pass) {
if (do_pass == 1) { if (do_pass == 1) {
video_enc->flags |= CODEC_FLAG_PASS1; video_enc->flags |= CODEC_FLAG_PASS1;
...@@ -1495,14 +1496,6 @@ loop_end: ...@@ -1495,14 +1496,6 @@ loop_end:
reset_options(o); reset_options(o);
} }
/* same option as mencoder */
static int opt_pass(const char *opt, const char *arg)
{
do_pass = parse_number_or_die(opt, arg, OPT_INT, 1, 2);
return 0;
}
static int opt_target(void *optctx, const char *opt, const char *arg) static int opt_target(void *optctx, const char *opt, const char *arg)
{ {
OptionsContext *o = optctx; OptionsContext *o = optctx;
...@@ -1972,7 +1965,7 @@ const OptionDef options[] = { ...@@ -1972,7 +1965,7 @@ const OptionDef options[] = {
"force video codec ('copy' to copy stream)", "codec" }, "force video codec ('copy' to copy stream)", "codec" },
{ "same_quant", OPT_VIDEO | OPT_BOOL | OPT_EXPERT, { &same_quant }, { "same_quant", OPT_VIDEO | OPT_BOOL | OPT_EXPERT, { &same_quant },
"use same quantizer as source (implies VBR)" }, "use same quantizer as source (implies VBR)" },
{ "pass", OPT_VIDEO | HAS_ARG , { opt_pass }, { "pass", OPT_VIDEO | HAS_ARG | OPT_SPEC | OPT_INT, { .off = OFFSET(pass) },
"select the pass number (1 or 2)", "n" }, "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, { &pass_logfilename_prefix },
"select two pass log file name prefix", "prefix" }, "select two pass log file name prefix", "prefix" },
......
...@@ -479,7 +479,7 @@ Use same quantizer as source (implies VBR). ...@@ -479,7 +479,7 @@ Use same quantizer as source (implies VBR).
Note that this is NOT SAME QUALITY. Do not use this option unless you know you Note that this is NOT SAME QUALITY. Do not use this option unless you know you
need it. need it.
@item -pass @var{n} @item -pass[:@var{stream_specifier}] @var{n} (@emph{output,per-stream})
Select the pass number (1 or 2). It is used to do two-pass Select the pass number (1 or 2). It is used to do two-pass
video encoding. The statistics of the video are recorded in the first video encoding. The statistics of the video are recorded in the first
pass into a log file (see also the option -passlogfile), pass into a log file (see also the option -passlogfile),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment