summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_ratectrl.c
diff options
context:
space:
mode:
authorMarco Paniconi <marpan@google.com>2018-06-11 16:54:43 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-06-11 16:54:43 +0000
commit8fd4b154348f0b0222f8a1b3d62f50a94715a735 (patch)
treec7c04113ee8f627d47cac332e798c4f99b8a685b /vp9/encoder/vp9_ratectrl.c
parent8d49d02a24e40fe9eb8a2ce2820987a9d8d1c0e6 (diff)
parent7d97790438b796620a48dd2cfa6f2c6fe1f16871 (diff)
downloadlibvpx-8fd4b154348f0b0222f8a1b3d62f50a94715a735.tar
libvpx-8fd4b154348f0b0222f8a1b3d62f50a94715a735.tar.gz
libvpx-8fd4b154348f0b0222f8a1b3d62f50a94715a735.tar.bz2
libvpx-8fd4b154348f0b0222f8a1b3d62f50a94715a735.zip
Merge "vp9-svc: Fix to frames_since_golden update for SVC."
Diffstat (limited to 'vp9/encoder/vp9_ratectrl.c')
-rw-r--r--vp9/encoder/vp9_ratectrl.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/vp9/encoder/vp9_ratectrl.c b/vp9/encoder/vp9_ratectrl.c
index d65eff451..224e786b6 100644
--- a/vp9/encoder/vp9_ratectrl.c
+++ b/vp9/encoder/vp9_ratectrl.c
@@ -1601,12 +1601,22 @@ void vp9_rc_postencode_update(VP9_COMP *cpi, uint64_t bytes_used) {
// update the golden frame counter, only for base temporal layer.
if (cpi->use_svc && cpi->svc.use_gf_temporal_ref_current_layer &&
cpi->svc.temporal_layer_id == 0) {
+ int i = 0;
+ SVC *const svc = &cpi->svc;
if (cpi->refresh_golden_frame)
rc->frames_since_golden = 0;
else
rc->frames_since_golden++;
// Decrement count down till next gf
if (rc->frames_till_gf_update_due > 0) rc->frames_till_gf_update_due--;
+ // Update the frames_since_golden for all upper temporal layers.
+ for (i = 1; i < svc->number_temporal_layers; ++i) {
+ const int layer = LAYER_IDS_TO_IDX(svc->spatial_layer_id, i,
+ svc->number_temporal_layers);
+ LAYER_CONTEXT *const lc = &svc->layer_context[layer];
+ RATE_CONTROL *const lrc = &lc->rc;
+ lrc->frames_since_golden = rc->frames_since_golden;
+ }
}
if (cm->frame_type == KEY_FRAME) rc->frames_since_key = 0;