• John Koleszar's avatar
    Correct clamping in use of vp8_find_near_mvs() · 83cef816
    John Koleszar authored
    Commit e06c242b introduced a change to call vp8_find_near_mvs() only
    once instead of once per reference frame by observing that the only
    effect that the frame had was on the bias applied to the motion
    vector. By keeping track of the sign_bias value, the mv to use could
    be flip-flopped by multiplying its components by -1.
    This behavior was subtley wrong in the case when clamping was applied
    to the motion vectors found by vp8_find_near_mvs(). A motion vector
    could be in-bounds with one sign bias, but out of bounds after
    inverting the sign, or vice versa. The clamping must match that done
    by the decoder.
    This change modifies vp8_find_near_mvs() to remove the clamping from
    that function. The vp8_pick_inter_mode() and vp8_rd_pick_inter_mode()
    functions instead track the correctly clamped values for both bias
    values, switching between them by simple assignment. The common
    clamping and inversion code is in vp8_find_near_mvs_bias()
    Change-Id: I17e1a348d1643497eca0be232e2fbe2acf8478e1
findnearmv.h 4.95 KB