summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_svc_layercontext.c
diff options
context:
space:
mode:
authorMarco Paniconi <marpan@google.com>2018-11-27 16:16:04 -0800
committerJerome Jiang <jianj@google.com>2018-11-27 16:38:14 -0800
commit2fc5eabcde3c29e7461b50a3c8e542705e18c09f (patch)
treed138e5f92e6b6b0353aac60e20c95576abcc2e29 /vp9/encoder/vp9_svc_layercontext.c
parentb1022a018ba83da817036ce34349197d4f4b1b61 (diff)
downloadlibvpx-2fc5eabcde3c29e7461b50a3c8e542705e18c09f.tar
libvpx-2fc5eabcde3c29e7461b50a3c8e542705e18c09f.tar.gz
libvpx-2fc5eabcde3c29e7461b50a3c8e542705e18c09f.tar.bz2
libvpx-2fc5eabcde3c29e7461b50a3c8e542705e18c09f.zip
vp9-svc: Add check/reset for long term reference.
Add check and reset (turn off) usage of long term reference if some conditons (layer id of reference vs current frame) are not met. Change-Id: Ie3a84e3618f4fc4d5f8da4e67316cfbefb8bae78
Diffstat (limited to 'vp9/encoder/vp9_svc_layercontext.c')
-rw-r--r--vp9/encoder/vp9_svc_layercontext.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/vp9/encoder/vp9_svc_layercontext.c b/vp9/encoder/vp9_svc_layercontext.c
index c4c5b5a9f..0296d03d8 100644
--- a/vp9/encoder/vp9_svc_layercontext.c
+++ b/vp9/encoder/vp9_svc_layercontext.c
@@ -1092,13 +1092,16 @@ void vp9_svc_assert_constraints_pattern(VP9_COMP *const cpi) {
}
} else if (svc->use_gf_temporal_ref_current_layer &&
!svc->layer_context[svc->temporal_layer_id].is_key_frame) {
- // If the usage of golden as second long term reference is enabled for this
- // layer, then temporal_layer_id of that reference must be base temporal
- // layer 0, and spatial_layer_id of that reference must be same as current
- // spatial_layer_id.
- assert(svc->fb_idx_spatial_layer_id[cpi->gld_fb_idx] ==
- svc->spatial_layer_id);
- assert(svc->fb_idx_temporal_layer_id[cpi->gld_fb_idx] == 0);
+ // For the usage of golden as second long term reference: the
+ // temporal_layer_id of that reference must be base temporal layer 0, and
+ // spatial_layer_id of that reference must be same as current
+ // spatial_layer_id. If not, disable feature.
+ // TODO(marpan): Investigate when this can happen, and maybe put this check
+ // and reset in a different place.
+ if (svc->fb_idx_spatial_layer_id[cpi->gld_fb_idx] !=
+ svc->spatial_layer_id ||
+ svc->fb_idx_temporal_layer_id[cpi->gld_fb_idx] != 0)
+ svc->use_gf_temporal_ref_current_layer = 0;
}
}