From 2fc5eabcde3c29e7461b50a3c8e542705e18c09f Mon Sep 17 00:00:00 2001 From: Marco Paniconi Date: Tue, 27 Nov 2018 16:16:04 -0800 Subject: 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 --- vp9/encoder/vp9_svc_layercontext.c | 17 ++++++++++------- 1 file 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; } } -- cgit v1.2.1