-
David Barker authored
This patch modifies the interpretation of SEG_LVL_SKIP and SEG_LVL_ZEROMV slightly, to fix a decoder crash and to save bits in the intended use cases of these segment flags. Previously, blocks using either of these segment flags could signal reference frames just like any other block. But the mode was implicitly taken to be ZEROMV. This worked fine in VP9, but crashed for compound blocks in AV1 since those should use ZERO_ZEROMV instead. Now we make it so that SEG_LVL_SKIP and SEG_LVL_ZEROMV imply that the block is single-reference. The reference to use is taken from the SEG_LVL_REF_FRAME segment feature if that is present, or is set to LAST_FRAME if not. See the attached bug report for the reasoning behind this. As a related change, we also teach the encoder how to deal with the combination of SEG_LVL_SKIP + SEG_LVL_REF_FRAME. BUG=aomedia:675 Change-Id: I5e657cbfc1f08395a0301cba701edfb1682502a5
d92f3560