Speed selection support for disabled reference frames
authorJohn Koleszar <jkoleszar@google.com>
Fri, 18 Nov 2011 20:47:16 +0000 (12:47 -0800)
committerJohn Koleszar <jkoleszar@google.com>
Fri, 18 Nov 2011 21:53:21 +0000 (13:53 -0800)
commite55974bf86714e6403f68c010b89fbd62a4f35e5
tree6860d9df983bb66ed7dcbff0b9a3818289592518
parent3c755577b85f5bf0a875e5f8f33ecb99a26d316d
Speed selection support for disabled reference frames

There was an implicit reference frame test order (typically LAST,
GOLD, ARF) in the mode selection logic, but this doesn't provide the
expected results when some reference frames are disabled. For
instance, in real-time mode, the speed selection logic often disables
the ARF modes. So if the user disables the LAST and GOLD frames, the
encoder was always choosing INTRA, when in reality searching the ARF
in this case has the same speed penalty as searching LAST would have
had.

Instead, introduce the notion of a reference frame search order. This
patch preserves the former priorities, so if a frame is disabled, the
other frames bump up a slot to take its place. This patch lays the
groundwork for doing something smarter in the frame test order, for
example considering temporal distance or looking at the frames used by
nearby blocks.

Change-Id: I1199149f8662a408537c653d2c021c7f1d29a700
vp8/encoder/onyx_if.c
vp8/encoder/onyx_int.h
vp8/encoder/pickinter.c
vp8/encoder/ratectrl.c
vp8/encoder/rdopt.c