]> granicus.if.org Git - libvpx/commit
New interpolation filter selection algorithm
authorAdrian Grange <agrange@google.com>
Thu, 20 Dec 2012 22:56:19 +0000 (14:56 -0800)
committerAdrian Grange <agrange@google.com>
Thu, 3 Jan 2013 16:12:43 +0000 (08:12 -0800)
commit259b800832bd8555d60895ee68ad108cd515ecb9
treebe73be2fa7b50aba0f361185168b6bda37b4772f
parent37166d5c1e4d3959cf26b8981bc6a545e511c92e
New interpolation filter selection algorithm

Old Scheme:
When SWITCHABLE filter selection is enabled the encoder
evaluates the use of each interpolation filter type and
selects the best one to use at the MB level. A frame-
level flag can be set to force the use of a particular
filter type for all MBs in a frame if it is more efficient
to encode that way. The logic here involved a Q dependent
threshold that assumed that the second 8-tap filter was
a high-pass filter. However, this requires a trip around
the recode loop. If the frame-level flag indicates use
of a particular filter, the other filters are not
evaluated in the pick_mode loop.

New Scheme:
Each filter type is evaluated at the MB level and a record
of the best filter is kept, irrespective of what filter
is signaled at the frame-level. Once all MBs have been
encoded, a decision is made as to what frame-level mode
to set for the *next* frame. If one filter is used by 80%
or more of the MBs, then this filter is forced since it
is assumed that this will be more efficient if the
next frame has similar characteristics. i.e. there is a
one-frame lag between measuring the filter selection and
setting the frame-level mode to use.

Change-Id: I6a7e7ced8f27e120fafb99db2dc9c6293f8d20f7
vp9/encoder/vp9_encodeframe.c
vp9/encoder/vp9_onyx_if.c
vp9/encoder/vp9_onyx_int.h
vp9/encoder/vp9_rdopt.c