Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Xiph.Org
aom-rav1e
Commits
c217423a
Commit
c217423a
authored
Mar 24, 2014
by
Minghai Shang
Committed by
Gerrit Code Review
Mar 24, 2014
Browse files
Merge "[svc] Add min/max q and min/max bitrate in svc test app"
parents
b458bb7c
6c3c66fb
Changes
2
Hide whitespace changes
Inline
Side-by-side
examples/vp9_spatial_scalable_encoder.c
View file @
c217423a
...
...
@@ -67,13 +67,22 @@ static const arg_def_t pass_arg =
ARG_DEF
(
NULL
,
"pass"
,
1
,
"Pass to execute (1/2)"
);
static
const
arg_def_t
fpf_name_arg
=
ARG_DEF
(
NULL
,
"fpf"
,
1
,
"First pass statistics file name"
);
static
const
arg_def_t
min_q_arg
=
ARG_DEF
(
NULL
,
"min-q"
,
1
,
"Minimum quantizer"
);
static
const
arg_def_t
max_q_arg
=
ARG_DEF
(
NULL
,
"max-q"
,
1
,
"Maximum quantizer"
);
static
const
arg_def_t
min_bitrate_arg
=
ARG_DEF
(
NULL
,
"min-bitrate"
,
1
,
"Minimum bitrate"
);
static
const
arg_def_t
max_bitrate_arg
=
ARG_DEF
(
NULL
,
"max-bitrate"
,
1
,
"Maximum bitrate"
);
static
const
arg_def_t
*
svc_args
[]
=
{
&
encoding_mode_arg
,
&
frames_arg
,
&
width_arg
,
&
height_arg
,
&
timebase_arg
,
&
bitrate_arg
,
&
skip_frames_arg
,
&
layers_arg
,
&
kf_dist_arg
,
&
scale_factors_arg
,
&
quantizers_arg
,
&
quantizers_keyframe_arg
,
&
passes_arg
,
&
pass_arg
,
&
fpf_name_arg
,
NULL
&
quantizers_keyframe_arg
,
&
passes_arg
,
&
pass_arg
,
&
fpf_name_arg
,
&
min_q_arg
,
&
max_q_arg
,
&
min_bitrate_arg
,
&
max_bitrate_arg
,
NULL
};
static
const
SVC_ENCODING_MODE
default_encoding_mode
=
...
...
@@ -120,6 +129,8 @@ static void parse_command_line(int argc, const char **argv_,
int
passes
=
0
;
int
pass
=
0
;
const
char
*
fpf_file_name
=
NULL
;
unsigned
int
min_bitrate
=
0
;
unsigned
int
max_bitrate
=
0
;
// initialize SvcContext with parameters that will be passed to vpx_svc_init
svc_ctx
->
log_level
=
SVC_LOG_DEBUG
;
...
...
@@ -186,6 +197,14 @@ static void parse_command_line(int argc, const char **argv_,
}
}
else
if
(
arg_match
(
&
arg
,
&
fpf_name_arg
,
argi
))
{
fpf_file_name
=
arg
.
val
;
}
else
if
(
arg_match
(
&
arg
,
&
min_q_arg
,
argi
))
{
enc_cfg
->
rc_min_quantizer
=
arg_parse_uint
(
&
arg
);
}
else
if
(
arg_match
(
&
arg
,
&
max_q_arg
,
argi
))
{
enc_cfg
->
rc_max_quantizer
=
arg_parse_uint
(
&
arg
);
}
else
if
(
arg_match
(
&
arg
,
&
min_bitrate_arg
,
argi
))
{
min_bitrate
=
arg_parse_uint
(
&
arg
);
}
else
if
(
arg_match
(
&
arg
,
&
max_bitrate_arg
,
argi
))
{
max_bitrate
=
arg_parse_uint
(
&
arg
);
}
else
{
++
argj
;
}
...
...
@@ -221,6 +240,17 @@ static void parse_command_line(int argc, const char **argv_,
app_input
->
pass
=
pass
;
}
if
(
enc_cfg
->
rc_target_bitrate
>
0
)
{
if
(
min_bitrate
>
0
)
{
enc_cfg
->
rc_2pass_vbr_minsection_pct
=
min_bitrate
*
100
/
enc_cfg
->
rc_target_bitrate
;
}
if
(
max_bitrate
>
0
)
{
enc_cfg
->
rc_2pass_vbr_maxsection_pct
=
max_bitrate
*
100
/
enc_cfg
->
rc_target_bitrate
;
}
}
// Check for unrecognized options
for
(
argi
=
argv
;
*
argi
;
++
argi
)
if
(
argi
[
0
][
0
]
==
'-'
&&
strlen
(
argi
[
0
])
>
1
)
...
...
vpx/src/svc_encodeframe.c
View file @
c217423a
...
...
@@ -583,8 +583,12 @@ vpx_codec_err_t vpx_svc_init(SvcContext *svc_ctx, vpx_codec_ctx_t *codec_ctx,
enc_cfg
->
rc_dropframe_thresh
=
0
;
enc_cfg
->
rc_end_usage
=
VPX_CBR
;
enc_cfg
->
rc_resize_allowed
=
0
;
enc_cfg
->
rc_min_quantizer
=
33
;
enc_cfg
->
rc_max_quantizer
=
33
;
if
(
enc_cfg
->
g_pass
==
VPX_RC_ONE_PASS
)
{
enc_cfg
->
rc_min_quantizer
=
33
;
enc_cfg
->
rc_max_quantizer
=
33
;
}
enc_cfg
->
rc_undershoot_pct
=
100
;
enc_cfg
->
rc_overshoot_pct
=
15
;
enc_cfg
->
rc_buf_initial_sz
=
500
;
...
...
@@ -784,12 +788,17 @@ static void set_svc_parameters(SvcContext *svc_ctx,
}
layer_index
=
layer
+
VPX_SS_MAX_LAYERS
-
si
->
layers
;
if
(
vpx_svc_is_keyframe
(
svc_ctx
))
{
svc_params
.
min_quantizer
=
si
->
quantizer_keyframe
[
layer_index
];
svc_params
.
max_quantizer
=
si
->
quantizer_keyframe
[
layer_index
];
if
(
codec_ctx
->
config
.
enc
->
g_pass
==
VPX_RC_ONE_PASS
)
{
if
(
vpx_svc_is_keyframe
(
svc_ctx
))
{
svc_params
.
min_quantizer
=
si
->
quantizer_keyframe
[
layer_index
];
svc_params
.
max_quantizer
=
si
->
quantizer_keyframe
[
layer_index
];
}
else
{
svc_params
.
min_quantizer
=
si
->
quantizer
[
layer_index
];
svc_params
.
max_quantizer
=
si
->
quantizer
[
layer_index
];
}
}
else
{
svc_params
.
min_quantizer
=
si
->
quantizer
[
layer_index
]
;
svc_params
.
max_quantizer
=
si
->
quantizer
[
layer_index
]
;
svc_params
.
min_quantizer
=
codec_ctx
->
config
.
enc
->
rc_min_quantizer
;
svc_params
.
max_quantizer
=
codec_ctx
->
config
.
enc
->
rc_max_quantizer
;
}
svc_params
.
distance_from_i_frame
=
si
->
frame_within_gop
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment