Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Guillaume Martres
aom-rav1e
Commits
3a8deeb8
Commit
3a8deeb8
authored
Feb 27, 2014
by
Minghai Shang
Committed by
Gerrit Code Review
Feb 27, 2014
Browse files
Merge "[svc] Add target bitrate settings for each layers."
parents
20da0653
8c196b27
Changes
5
Hide whitespace changes
Inline
Side-by-side
vp8/vp8_cx_iface.c
View file @
3a8deeb8
...
...
@@ -1265,6 +1265,7 @@ static vpx_codec_enc_cfg_map_t vp8e_usage_cfg_map[] =
"vp8.fpf"
/* first pass filename */
#endif
VPX_SS_DEFAULT_LAYERS
,
/* ss_number_layers */
{
0
},
/* ss_target_bitrate */
1
,
/* ts_number_layers */
{
0
},
/* ts_target_bitrate */
{
0
},
/* ts_rate_decimator */
...
...
vp9/common/vp9_onyx.h
View file @
3a8deeb8
...
...
@@ -149,6 +149,8 @@ extern "C" {
// Spatial and temporal scalability.
int
ss_number_layers
;
// Number of spatial layers.
int
ts_number_layers
;
// Number of temporal layers.
// Bitrate allocation for spatial layers.
int
ss_target_bitrate
[
VPX_SS_MAX_LAYERS
];
// Bitrate allocation (CBR mode) and framerate factor, for temporal layers.
int
ts_target_bitrate
[
VPX_TS_MAX_LAYERS
];
int
ts_rate_decimator
[
VPX_TS_MAX_LAYERS
];
...
...
vp9/vp9_cx_iface.c
View file @
3a8deeb8
...
...
@@ -355,6 +355,13 @@ static vpx_codec_err_t set_vp9e_config(VP9_CONFIG *oxcf,
oxcf
->
ss_number_layers
=
cfg
.
ss_number_layers
;
if
(
oxcf
->
ss_number_layers
>
1
)
{
memcpy
(
oxcf
->
ss_target_bitrate
,
cfg
.
ss_target_bitrate
,
sizeof
(
cfg
.
ss_target_bitrate
));
}
else
if
(
oxcf
->
ss_number_layers
==
1
)
{
oxcf
->
ss_target_bitrate
[
0
]
=
oxcf
->
target_bandwidth
;
}
oxcf
->
ts_number_layers
=
cfg
.
ts_number_layers
;
if
(
oxcf
->
ts_number_layers
>
1
)
{
...
...
@@ -1160,6 +1167,7 @@ static vpx_codec_enc_cfg_map_t vp9e_usage_cfg_map[] = {
9999
,
/* kf_max_dist */
VPX_SS_DEFAULT_LAYERS
,
/* ss_number_layers */
{
0
},
/* ss_target_bitrate */
1
,
/* ts_number_layers */
{
0
},
/* ts_target_bitrate */
{
0
},
/* ts_rate_decimator */
...
...
vpx/src/svc_encodeframe.c
View file @
3a8deeb8
...
...
@@ -537,6 +537,29 @@ vpx_codec_err_t vpx_svc_init(SvcContext *svc_ctx, vpx_codec_ctx_t *codec_ctx,
res
=
parse_options
(
svc_ctx
,
si
->
options
);
if
(
res
!=
VPX_CODEC_OK
)
return
res
;
// Assign target bitrate for each layer. We calculate the ratio
// from the resolution for now.
// TODO(Minghai): Optimize the mechanism of allocating bits after
// implementing svc two pass rate control.
if
(
si
->
layers
>
1
)
{
int
i
;
float
total
=
0
;
float
alloc_ratio
[
VPX_SS_MAX_LAYERS
]
=
{
0
};
for
(
i
=
0
;
i
<
si
->
layers
;
++
i
)
{
int
pos
=
i
+
VPX_SS_MAX_LAYERS
-
svc_ctx
->
spatial_layers
;
alloc_ratio
[
i
]
=
si
->
scaling_factor_num
[
pos
]
*
1
.
0
/
si
->
scaling_factor_den
[
pos
];
alloc_ratio
[
i
]
*=
alloc_ratio
[
i
];
total
+=
alloc_ratio
[
i
];
}
for
(
i
=
0
;
i
<
si
->
layers
;
++
i
)
{
enc_cfg
->
ss_target_bitrate
[
i
]
=
enc_cfg
->
rc_target_bitrate
*
alloc_ratio
[
i
]
/
total
;
}
}
// modify encoder configuration
enc_cfg
->
ss_number_layers
=
si
->
layers
;
enc_cfg
->
ts_number_layers
=
1
;
// Temporal layers not used in this encoder.
...
...
vpx/vpx_encoder.h
View file @
3a8deeb8
...
...
@@ -610,6 +610,13 @@ extern "C" {
*/
unsigned
int
ss_number_layers
;
/*!\brief Target bitrate for each spatial layer.
*
* These values specify the target coding bitrate to be used for each
* spatial layer.
*/
unsigned
int
ss_target_bitrate
[
VPX_SS_MAX_LAYERS
];
/*!\brief Number of temporal coding layers.
*
* This value specifies the number of temporal layers to be used.
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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