ref: 57038c687d6074f2de80620640410ad539c1638c
parent: 7554416063b194714740f459715629dbde2bfd94
author: Marco Paniconi <[email protected]>
date: Tue Sep 4 05:08:49 EDT 2018
vp9-svc: Fix to first_spatial_to_encode for pattern constraint. Change-Id: I876f69acf9420b3b013cb3048bbfa8ff059e2e50
--- a/vp9/encoder/vp9_svc_layercontext.c
+++ b/vp9/encoder/vp9_svc_layercontext.c
@@ -1047,7 +1047,7 @@
void vp9_svc_assert_constraints_pattern(VP9_COMP *const cpi) {
SVC *const svc = &cpi->svc;
- // For fixed/non-flexible mode, the folllowing constraint are expected,
+ // For fixed/non-flexible mode, the following constraint are expected,
// when inter-layer prediciton is on (default).
if (svc->temporal_layering_mode != VP9E_TEMPORAL_LAYERING_MODE_BYPASS &&
svc->disable_inter_layer_pred == INTER_LAYER_PRED_ON &&
@@ -1063,7 +1063,7 @@
assert(svc->fb_idx_temporal_layer_id[cpi->lst_fb_idx] <
svc->temporal_layer_id);
if (svc->spatial_layer_id > 0 && cpi->ref_frame_flags & VP9_GOLD_FLAG &&
- svc->first_spatial_layer_to_encode >= svc->spatial_layer_id - 1) {
+ svc->spatial_layer_id > svc->first_spatial_layer_to_encode) {
// Non-base spatial only predicts from lower spatial layer with same
// temporal_id.
assert(svc->fb_idx_spatial_layer_id[cpi->gld_fb_idx] ==
@@ -1071,7 +1071,8 @@
assert(svc->fb_idx_temporal_layer_id[cpi->gld_fb_idx] ==
svc->temporal_layer_id);
}
- } else if (svc->spatial_layer_id > 0) {
+ } else if (svc->spatial_layer_id > 0 &&
+ svc->spatial_layer_id > svc->first_spatial_layer_to_encode) {
// Only 1 reference for frame whose base is key; reference may be LAST
// or GOLDEN, so we check both.
if (cpi->ref_frame_flags & VP9_LAST_FLAG) {