multi-res: work around reference mismatch
authorJohn Koleszar <jkoleszar@google.com>
Mon, 8 Oct 2012 15:39:47 +0000 (08:39 -0700)
committerJohn Koleszar <jkoleszar@google.com>
Mon, 8 Oct 2012 15:39:47 +0000 (08:39 -0700)
commit30d8ba541ede1d79b3d1d72f66ff05fcab6b5f92
treea6e2a28c738a53c1089bbea7bacbc6221b9d1266
parent0e213fb999665b382b3937cb7ab1ff2385cd5265
multi-res: work around reference mismatch

In some situations, believed to be an interaction between temporal
scalability and dropped frames, the references available to an
encoder may not be the same references available to its parent.
Previously, the code tried to force the reference frame chosen by
the parent to be used on this frame, even if it was disabled. This
was preventing the pick mode loop from running even once, which led
to a crash.

Attempts to reproduce this bug locally were unsuccessful, so it is
still undetermined what the underlying cause of this issue is. In
the specific case that was failing, the application did not set
any flags which influenced the reference selection on that frame.
ref_frame_flags indicated that the golden frame was disabled,
believed to be because the last frame updated the last and golden
frames, so golden was shut off by default. It's not clear why this
wouldn't have also been true in the lower res encoder, ie, why the
lower res encoder decided to use and/or was allowed to use the
golden frame. We weren't able to debug into the non-crashing
lower res encoder as the crash couldn't be reproduced locally.

Change-Id: Ifb265253d26963ac2afde0e20cf6792788be6af7
vp8/encoder/pickinter.c