• David Barker's avatar
    loop-restoration: Fix + refactor stripe boundary setup · 16ff7ef3
    David Barker authored
    * Setup and restore the correct number of left/right boundary
      pixels at vertical tile edges, and save them in the correct
      buffers.
      Also fix the restore process in high-bitdepth mode.
    
    * When loop filtering across tiles is enabled, we were previously
      acting inconsistently at horizontal tile borders: The stripe
      just above the boundary would use CDEF pixels from the tile below
      for context, while the stripe just below would use deblocked
      pixels from the stripe above.
    
      The intended design appears to have been to use CDEF pixels on
      both sides (so we logically have a 64-pixel high stripe, it's just
      split into an 8-pixel and a 56-pixel high stripe in order to keep
      the coefficient sets aligned to tiles)
    
      Implement that behaviour by disabling the context setup process
      when at a horizontal tile border.
    
    * Pull some common calculations out of
      {setup,restore}_processing_stripe_boundary and into their
      common caller. This allows us to reduce the number of arguments
      going into each function and their internal complexity.
    
    * Add more design comments around stripe boundary setup,
      as there are quite a lot of constraints to be aware of
    
    Change-Id: Ic1586c149b7f764b9c1a711df3f11fb0f130b38a
    16ff7ef3
restoration.c 81.7 KB