• Adrian Grange's avatar
    New interpolation filter selection algorithm · 259b8008
    Adrian Grange authored
    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
    259b8008
vp9_encodeframe.c 84.8 KB