• David Barker's avatar
    Fix global-motion + error-resilient-mode · d7c8bd51
    David Barker authored
    Patch https://aomedia-review.googlesource.com/c/21783
    changed things so that error-resilient frames use the default
    global motion parameters as a reference, rather than taking
    the reference from the previous frame.
    
    This was implemented by clearing out cm->prev_frame->global_motion
    when we have an error-resilient frame. Unfortunately, this causes
    an issue: if we have an error resilient frame which isn't stored
    into any reference slots, followed by a non-error-resilient frame,
    then both frames refer to the same prev_frame. The second frame
    then delta-codes against cm->prev_frame->global_motion, but
    this was reset to the default values by the intervening
    error-resilient frame!
    
    In order to allow the above case to work as intended, expand the
    default warp parameter set to a full WarpedMotionParams struct,
    and use that as the reference for error-resilient frames.
    
    This also allows us to remove set_default_warp_params, as we
    can now just copy directly from default_warp_params.
    
    Change-Id: I9645615db2700c1d3810e6e42f4f1da626fcd5e3
    d7c8bd51
decodeframe.c 222 KB