Skip to content
  • Timothy B. Terriberry's avatar
    cb4x4: Fix reset_skip_context() without chroma_2x2 · a2d5cdef
    Timothy B. Terriberry authored
    reset_skip_context() was always clearing the entropy contexts for
    all three color planes, using a block size that corresponded with
    the luma plane.
    
    However, when chroma_2x2 is disabled, then for sub-8x8 luma block
    sizes, the corresponding chroma block size is always 4x4, and the
    skip flag only affects the chroma blocks corresponding to the
    upper-left luma block.
    
    This patch makes reset_skip_context() reset the contexts that
    actually correspond to the chroma blocks that are skipped (if any).
    It also moves reset_skip_context() to av1_reset_skip_context() in
    blockd.c, because blockd.h gets included before onyx_int.h, which
    declares the required is_chroma_reference() function.
    reset_skip_context() was too large and used in too many places to
    be a reasonable candidate for inlining, anyway.
    
    AWCY results on objective-1-fast:
    
    cb4x4-fix-base@2017-05-11T06:26:50.159Z -> cb4x4-fix-reset_skip@2017-05-11T06:28:45.482Z
      PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
    0.0301 |  0.1068 |  0.1463 |   0.0359 | 0.0260 |  0.0347 |     0.0479
    
    A regression (near the noise range), but without this fix, the line
    buffer size required by the entropy contexts will be doubled.
    
    Change-Id: I12fa6e60d9c1c7c85927742775a346ea22b3193f
    a2d5cdef