Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
BC
public
external
libvpx
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
Showing
4 changed files
with
33 additions
and
2 deletions
+33
-2
vp9/encoder/vp9_encoder.h
vp9/encoder/vp9_encoder.h
+2
-0
vp9/vp9_cx_iface.c
vp9/vp9_cx_iface.c
+12
-0
vpx/vp8cx.h
vpx/vp8cx.h
+14
-0
vpxenc.c
vpxenc.c
+5
-2
No files found.
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