]> granicus.if.org Git - libvpx/commit
vp9-svc: Fix on disabling inter_layer prediction.
authorMarco Paniconi <marpan@google.com>
Fri, 18 May 2018 22:09:55 +0000 (15:09 -0700)
committerMarco Paniconi <marpan@google.com>
Sun, 20 May 2018 02:11:42 +0000 (19:11 -0700)
commite447a1a33426f249f67875bbbf31aac08b82d52a
treecfb162ce7fbe93be3f2e163ca89aa2c4923a7a12
parente5b858740aed35a6f2eb7bf84adb993ccd1962f2
vp9-svc: Fix on disabling inter_layer prediction.

In vp9_svc_constrain_inter_layer_pred() we disable the
inter_layer prediction if anything but only the previous
spatial layer (from same supeframe) is used for inter_layer
prediction. This check and disabling was only allowed when
the control VP9E_SET_SVC_INTER_LAYER_PRED is set to
INTER_LAYER_PRED_ON_CONSTRAINED.

But the control VP9E_SET_SVC_INTER_LAYER_PRED is needed for setting:
INTER_LAYER_PRED_ON/INTER_LAYER_PRED_OFF/INTER_LAYER_PRED_OFF_NONKEY.
So there is a conflict with setting INTER_LAYER_PRED_ON_CONSTRAINED.

Fix for now is to always allow for this disabling check
(disable inter_layer reference if its not previous spatial layer) as
long as inter_layer prediction is used (i.e., not set to _OFF).

A separate fix if needed may be to invoke another control for setting
INTER_LAYER_PRED_ON_CONSTRAINED.

This was causing an issue with enabling spatial layers on the fly
(say spatial layer 2), where since INTER_LAYER_PRED_ON_CONSTRAINED was
not set (default), the inter_layer prediction was then using a reference
from 2 spatial layers below (spatial layer 0).

Change-Id: Ic6434000665f63aab27c509b5eb7b8fc965827bc
vp9/encoder/vp9_svc_layercontext.c