summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinghai Shang <minghai@google.com>2014-07-25 13:24:27 -0700
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2014-07-25 13:24:27 -0700
commit8433c8f92df4e6e0e724624c44521de92639f251 (patch)
treebc130bbcbe9aeb77a8da74e58d493097564c9cb7
parent071c95d8a13fbfceb53923122312524b646c22a7 (diff)
parent929001bf22049cb3ec4679d8919237483128ea0a (diff)
downloadlibvpx-8433c8f92df4e6e0e724624c44521de92639f251.tar
libvpx-8433c8f92df4e6e0e724624c44521de92639f251.tar.gz
libvpx-8433c8f92df4e6e0e724624c44521de92639f251.tar.bz2
libvpx-8433c8f92df4e6e0e724624c44521de92639f251.zip
Merge "[spatial svc]Fix reference issues"
-rw-r--r--vp9/encoder/vp9_encoder.c6
-rw-r--r--vp9/encoder/vp9_ratectrl.c4
2 files changed, 8 insertions, 2 deletions
diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c
index c440bbb99..f8d26110d 100644
--- a/vp9/encoder/vp9_encoder.c
+++ b/vp9/encoder/vp9_encoder.c
@@ -131,7 +131,8 @@ static void setup_frame(VP9_COMP *cpi) {
}
if (cm->frame_type == KEY_FRAME) {
- cpi->refresh_golden_frame = 1;
+ if (!(cpi->use_svc && cpi->svc.number_temporal_layers == 1))
+ cpi->refresh_golden_frame = 1;
cpi->refresh_alt_ref_frame = 1;
} else {
cm->fc = cm->frame_contexts[cm->frame_context_idx];
@@ -2001,7 +2002,8 @@ static void get_ref_frame_flags(VP9_COMP *cpi) {
if (cpi->gold_is_last)
cpi->ref_frame_flags &= ~VP9_GOLD_FLAG;
- if (cpi->rc.frames_till_gf_update_due == INT_MAX)
+ if (cpi->rc.frames_till_gf_update_due == INT_MAX &&
+ !(cpi->use_svc && cpi->svc.number_temporal_layers == 1))
cpi->ref_frame_flags &= ~VP9_GOLD_FLAG;
if (cpi->alt_is_last)
diff --git a/vp9/encoder/vp9_ratectrl.c b/vp9/encoder/vp9_ratectrl.c
index f0f9afcd5..1adbad9cf 100644
--- a/vp9/encoder/vp9_ratectrl.c
+++ b/vp9/encoder/vp9_ratectrl.c
@@ -1238,6 +1238,7 @@ void vp9_rc_get_svc_params(VP9_COMP *cpi) {
if (cpi->use_svc && cpi->svc.number_temporal_layers == 1) {
cpi->svc.layer_context[cpi->svc.spatial_layer_id].is_key_frame = 1;
+ cpi->ref_frame_flags &= (~VP9_ALT_FLAG);
}
if (cpi->pass == 0 && cpi->oxcf.rc_mode == VPX_CBR) {
@@ -1252,7 +1253,10 @@ void vp9_rc_get_svc_params(VP9_COMP *cpi) {
lc->is_key_frame = 0;
} else {
lc->is_key_frame = cpi->svc.layer_context[0].is_key_frame;
+ if (lc->is_key_frame)
+ cpi->ref_frame_flags &= (~VP9_LAST_FLAG);
}
+ cpi->ref_frame_flags &= (~VP9_ALT_FLAG);
}
if (cpi->pass == 0 && cpi->oxcf.rc_mode == VPX_CBR) {