Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
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
2a506e33
Commit
2a506e33
authored
Oct 28, 2014
by
Yaowu Xu
Committed by
Gerrit Code Review
Oct 28, 2014
Browse files
Merge "Add a new control of golden frame boost in CBR mode"
parents
422d7bc9
03a60b78
Changes
4
Hide whitespace changes
Inline
Side-by-side
vp9/encoder/vp9_encoder.h
View file @
2a506e33
...
...
@@ -127,6 +127,8 @@ typedef struct VP9EncoderConfig {
unsigned
int
rc_max_intra_bitrate_pct
;
// maximum allowed bitrate for any inter frame in % of bitrate target.
unsigned
int
rc_max_inter_bitrate_pct
;
// percent of rate boost for golden frame in CBR mode.
unsigned
int
gf_cbr_boost_pct
;
MODE
mode
;
int
pass
;
...
...
vp9/vp9_cx_iface.c
View file @
2a506e33
...
...
@@ -34,6 +34,7 @@ struct vp9_extracfg {
unsigned
int
cq_level
;
// constrained quality level
unsigned
int
rc_max_intra_bitrate_pct
;
unsigned
int
rc_max_inter_bitrate_pct
;
unsigned
int
gf_cbr_boost_pct
;
unsigned
int
lossless
;
unsigned
int
frame_parallel_decoding_mode
;
AQ_MODE
aq_mode
;
...
...
@@ -56,6 +57,7 @@ static struct vp9_extracfg default_extra_cfg = {
10
,
// cq_level
0
,
// rc_max_intra_bitrate_pct
0
,
// rc_max_inter_bitrate_pct
0
,
// gf_cbr_boost_pct
0
,
// lossless
0
,
// frame_parallel_decoding_mode
NO_AQ
,
// aq_mode
...
...
@@ -383,6 +385,7 @@ static vpx_codec_err_t set_encoder_config(
oxcf
->
target_bandwidth
=
1000
*
cfg
->
rc_target_bitrate
;
oxcf
->
rc_max_intra_bitrate_pct
=
extra_cfg
->
rc_max_intra_bitrate_pct
;
oxcf
->
rc_max_inter_bitrate_pct
=
extra_cfg
->
rc_max_inter_bitrate_pct
;
oxcf
->
gf_cbr_boost_pct
=
extra_cfg
->
gf_cbr_boost_pct
;
oxcf
->
best_allowed_q
=
extra_cfg
->
lossless
?
0
:
vp9_quantizer_to_qindex
(
cfg
->
rc_min_quantizer
);
...
...
@@ -660,6 +663,14 @@ static vpx_codec_err_t ctrl_set_rc_max_inter_bitrate_pct(
return
update_extra_cfg
(
ctx
,
&
extra_cfg
);
}
static
vpx_codec_err_t
ctrl_set_rc_gf_cbr_boost_pct
(
vpx_codec_alg_priv_t
*
ctx
,
va_list
args
)
{
struct
vp9_extracfg
extra_cfg
=
ctx
->
extra_cfg
;
extra_cfg
.
gf_cbr_boost_pct
=
CAST
(
VP8E_SET_GF_CBR_BOOST_PCT
,
args
);
return
update_extra_cfg
(
ctx
,
&
extra_cfg
);
}
static
vpx_codec_err_t
ctrl_set_lossless
(
vpx_codec_alg_priv_t
*
ctx
,
va_list
args
)
{
struct
vp9_extracfg
extra_cfg
=
ctx
->
extra_cfg
;
...
...
@@ -1278,6 +1289,7 @@ static vpx_codec_ctrl_fn_map_t encoder_ctrl_maps[] = {
{
VP8E_SET_CQ_LEVEL
,
ctrl_set_cq_level
},
{
VP8E_SET_MAX_INTRA_BITRATE_PCT
,
ctrl_set_rc_max_intra_bitrate_pct
},
{
VP8E_SET_MAX_INTER_BITRATE_PCT
,
ctrl_set_rc_max_inter_bitrate_pct
},
{
VP8E_SET_GF_CBR_BOOST_PCT
,
ctrl_set_rc_gf_cbr_boost_pct
},
{
VP9E_SET_LOSSLESS
,
ctrl_set_lossless
},
{
VP9E_SET_FRAME_PARALLEL_DECODING
,
ctrl_set_frame_parallel_decoding_mode
},
{
VP9E_SET_AQ_MODE
,
ctrl_set_aq_mode
},
...
...
vpx/vp8cx.h
View file @
2a506e33
...
...
@@ -208,6 +208,19 @@ enum vp8e_enc_control_id {
*/
VP8E_SET_MAX_INTER_BITRATE_PCT
,
/*!\brief Boost percentage for Golden Frame in CBR mode
*
* This value controls the amount of boost given to Golden Frame in
* CBR mode. It is expressed as a percentage of the average
* per-frame bitrate, with the special (and default) value 0 meaning
* the feature is off, i.e., no golden frame boost in CBR mode and
* average bitrate target is used.
*
* For example, to allow 100% more bits, i.e, 2X, in a golden frame
* than average frame, set this to 100.
*
*/
VP8E_SET_GF_CBR_BOOST_PCT
,
/* TODO(jkoleszar): Move to vp9cx.h */
VP9E_SET_LOSSLESS
,
...
...
@@ -376,6 +389,7 @@ VPX_CTRL_USE_TYPE(VP8E_GET_LAST_QUANTIZER_64, int *)
VPX_CTRL_USE_TYPE
(
VP8E_SET_MAX_INTRA_BITRATE_PCT
,
unsigned
int
)
VPX_CTRL_USE_TYPE
(
VP8E_SET_MAX_INTER_BITRATE_PCT
,
unsigned
int
)
VPX_CTRL_USE_TYPE
(
VP8E_SET_GF_CBR_BOOST_PCT
,
unsigned
int
)
VPX_CTRL_USE_TYPE
(
VP9E_SET_LOSSLESS
,
unsigned
int
)
VPX_CTRL_USE_TYPE
(
VP9E_SET_FRAME_PARALLEL_DECODING
,
unsigned
int
)
...
...
vpxenc.c
View file @
2a506e33
...
...
@@ -351,6 +351,8 @@ static const arg_def_t max_intra_rate_pct = ARG_DEF(
NULL
,
"max-intra-rate"
,
1
,
"Max I-frame bitrate (pct)"
);
static
const
arg_def_t
max_inter_rate_pct
=
ARG_DEF
(
NULL
,
"max-inter-rate"
,
1
,
"Max P-frame bitrate (pct)"
);
static
const
arg_def_t
gf_cbr_boost_pct
=
ARG_DEF
(
NULL
,
"gf-cbr-boost"
,
1
,
"Boost for Golden Frame in CBR mode (pct)"
);
#if CONFIG_VP8_ENCODER
static
const
arg_def_t
token_parts
=
ARG_DEF
(
...
...
@@ -416,7 +418,8 @@ static const arg_def_t tune_content = ARG_DEF_ENUM(
static
const
arg_def_t
*
vp9_args
[]
=
{
&
cpu_used
,
&
auto_altref
,
&
sharpness
,
&
static_thresh
,
&
tile_cols
,
&
tile_rows
,
&
arnr_maxframes
,
&
arnr_strength
,
&
arnr_type
,
&
tune_ssim
,
&
cq_level
,
&
max_intra_rate_pct
,
&
max_inter_rate_pct
,
&
lossless
,
&
tune_ssim
,
&
cq_level
,
&
max_intra_rate_pct
,
&
max_inter_rate_pct
,
&
gf_cbr_boost_pct
,
&
lossless
,
&
frame_parallel_decoding
,
&
aq_mode
,
&
frame_periodic_boost
,
&
noise_sens
,
&
tune_content
,
#if CONFIG_VP9 && CONFIG_VP9_HIGHBITDEPTH
...
...
@@ -430,7 +433,7 @@ static const int vp9_arg_ctrl_map[] = {
VP9E_SET_TILE_COLUMNS
,
VP9E_SET_TILE_ROWS
,
VP8E_SET_ARNR_MAXFRAMES
,
VP8E_SET_ARNR_STRENGTH
,
VP8E_SET_ARNR_TYPE
,
VP8E_SET_TUNING
,
VP8E_SET_CQ_LEVEL
,
VP8E_SET_MAX_INTRA_BITRATE_PCT
,
VP8E_SET_MAX_INTER_BITRATE_PCT
,
VP8E_SET_MAX_INTER_BITRATE_PCT
,
VP8E_SET_GF_CBR_BOOST_PCT
,
VP9E_SET_LOSSLESS
,
VP9E_SET_FRAME_PARALLEL_DECODING
,
VP9E_SET_AQ_MODE
,
VP9E_SET_FRAME_PERIODIC_BOOST
,
VP9E_SET_NOISE_SENSITIVITY
,
VP9E_SET_TUNE_CONTENT
,
...
...
Write
Preview
Markdown
is supported
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