mirror of https://git.ffmpeg.org/ffmpeg.git
avconv: make the -pass option per-stream.
This commit is contained in:
parent
e2785fa728
commit
038c0b1e06
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
2
avconv.h
2
avconv.h
|
@ -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 {
|
||||||
|
|
13
avconv_opt.c
13
avconv_opt.c
|
@ -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)
|
||||||
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)
|
||||||
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:
|
||||||
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[] = {
|
||||||
"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).
|
||||||
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),
|
||||||
|
|
Loading…
Reference in New Issue