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
7d7b43b9
Commit
7d7b43b9
authored
Oct 28, 2014
by
Yaowu Xu
Committed by
Gerrit Code Review
Oct 28, 2014
Browse files
Merge "Allow update of golden refernce buffer in CBR mode"
parents
2a506e33
e5cd5188
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
30 additions
and
7 deletions
+30
-7
vp9/encoder/vp9_pickmode.c
vp9/encoder/vp9_pickmode.c
+3
-1
vp9/encoder/vp9_ratectrl.c
vp9/encoder/vp9_ratectrl.c
+27
-6
No files found.
vp9/encoder/vp9_pickmode.c
View file @
7d7b43b9
...
...
@@ -617,6 +617,8 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
continue
;
if
(
this_mode
==
NEWMV
)
{
if
(
ref_frame
>
LAST_FRAME
)
continue
;
if
(
cpi
->
sf
.
partition_search_type
!=
VAR_BASED_PARTITION
&&
this_rdc
.
rdcost
<
(
int64_t
)(
1
<<
num_pels_log2_lookup
[
bsize
]))
continue
;
...
...
@@ -757,7 +759,7 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
}
// If the current reference frame is valid and we found a usable mode,
// we are done.
if
(
best_rdc
.
rdcost
<
INT64_MAX
)
if
(
best_rdc
.
rdcost
<
INT64_MAX
&&
ref_frame
==
GOLDEN_FRAME
)
break
;
}
...
...
vp9/encoder/vp9_ratectrl.c
View file @
7d7b43b9
...
...
@@ -1339,7 +1339,18 @@ static int calc_pframe_target_size_one_pass_cbr(const VP9_COMP *cpi) {
const
int64_t
diff
=
rc
->
optimal_buffer_level
-
rc
->
buffer_level
;
const
int64_t
one_pct_bits
=
1
+
rc
->
optimal_buffer_level
/
100
;
int
min_frame_target
=
MAX
(
rc
->
avg_frame_bandwidth
>>
4
,
FRAME_OVERHEAD_BITS
);
int
target
=
rc
->
avg_frame_bandwidth
;
int
target
;
if
(
oxcf
->
gf_cbr_boost_pct
)
{
const
int
af_ratio_pct
=
oxcf
->
gf_cbr_boost_pct
+
100
;
target
=
cpi
->
refresh_golden_frame
?
(
rc
->
avg_frame_bandwidth
*
rc
->
baseline_gf_interval
*
af_ratio_pct
)
/
(
rc
->
baseline_gf_interval
*
100
+
af_ratio_pct
-
100
)
:
(
rc
->
avg_frame_bandwidth
*
rc
->
baseline_gf_interval
*
100
)
/
(
rc
->
baseline_gf_interval
*
100
+
af_ratio_pct
-
100
);
}
else
{
target
=
rc
->
avg_frame_bandwidth
;
}
if
(
svc
->
number_temporal_layers
>
1
&&
oxcf
->
rc_mode
==
VPX_CBR
)
{
// Note that for layers, avg_frame_bandwidth is the cumulative
...
...
@@ -1453,15 +1464,25 @@ void vp9_rc_get_one_pass_cbr_params(VP9_COMP *cpi) {
rc
->
frames_to_key
=
cpi
->
oxcf
.
key_freq
;
rc
->
kf_boost
=
DEFAULT_KF_BOOST
;
rc
->
source_alt_ref_active
=
0
;
target
=
calc_iframe_target_size_one_pass_cbr
(
cpi
);
}
else
{
cm
->
frame_type
=
INTER_FRAME
;
target
=
calc_pframe_target_size_one_pass_cbr
(
cpi
);
}
if
(
rc
->
frames_till_gf_update_due
==
0
)
{
rc
->
baseline_gf_interval
=
DEFAULT_GF_INTERVAL
;
rc
->
frames_till_gf_update_due
=
rc
->
baseline_gf_interval
;
// NOTE: frames_till_gf_update_due must be <= frames_to_key.
if
(
rc
->
frames_till_gf_update_due
>
rc
->
frames_to_key
)
rc
->
frames_till_gf_update_due
=
rc
->
frames_to_key
;
cpi
->
refresh_golden_frame
=
1
;
rc
->
gfu_boost
=
DEFAULT_GF_BOOST
;
}
if
(
cm
->
frame_type
==
KEY_FRAME
)
target
=
calc_iframe_target_size_one_pass_cbr
(
cpi
);
else
target
=
calc_pframe_target_size_one_pass_cbr
(
cpi
);
vp9_rc_set_frame_target
(
cpi
,
target
);
// Don't use gf_update by default in CBR mode.
rc
->
frames_till_gf_update_due
=
INT_MAX
;
rc
->
baseline_gf_interval
=
INT_MAX
;
}
int
vp9_compute_qdelta
(
const
RATE_CONTROL
*
rc
,
double
qstart
,
double
qtarget
,
...
...
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