1. 27 Feb, 2017 1 commit
  2. 10 Feb, 2017 1 commit
    • Steinar Midtskogen's avatar
      Retune the CLPF kernel · 4f0b3ed8
      Steinar Midtskogen authored
      CLPF performance had degraded by about 0.5% over the past six months,
      which isn't totally surprising since the codec is a moving target.
      About half of that degradation comes from the improved 7 bit filter
      coefficients.  Therefore, CLPF needs to be retuned for the current
      codec.
      
      This patch makes two (normative) changes to the CLPF kernel:
      
      * The clipping function was changed from clamp(x, -s, s) to
            sign(x) * max(0, abs(x) - max(0, abs(x) - s +
                   (abs(x) >> (bitdepth - 3 - log2(s)))))
        This adds a rampdown to 0 at -32 and 32 (for 8 bit, -128 & 128
        for 10 bit, etc), so large differences are ignored.
      
      * 8 taps instead of 6 taps:
                     1
          4          3
        13 31  ->  13 31
          4          3
                     1
      
      AWCY results: low delay  high delay
      PSNR:           -0.40%     -0.47%
      PSNR HVS:        0.00%     -0.11%
      SSIM:           -0.31%     -0.39%
      CIEDE 2000:     -0.22%     -0.31%
      APSNR:          -0.40%     -0.48%
      MS SSIM:         0.01%     -0.12%
      
      About 3/4 of the gains come from the new clipping function.
      
      Change-Id: Idad9dc4004e71a9c7ec81ba62ebd12fb76fb044a
      4f0b3ed8
  3. 08 Feb, 2017 1 commit
  4. 14 Oct, 2016 2 commits
  5. 13 Oct, 2016 1 commit
    • Steinar Midtskogen's avatar
      Move CLPF block signals from frame to SB level. · 97535038
      Steinar Midtskogen authored
      These signals were in the uncompressed frame header (as a temporary
      hack), which caused two problems:
      
      * We don't want that header to be duplicated in the slice header
      * It was necessary to signal the number of bits to transmit up front
      
      However, the filter size can be 128x128 which is greater than the SB
      size, and a decoder wouldn't be able to know whether to read a bit or
      not until the final SB of that 128x128 block has been decoded
      (depending on whether the 128x128 is all skip or not).  Therefore the
      signalling was changed for 128x128 blocks so that every top left SB of
      a 128x128 filter block contains a signal regardless of whether the
      block is all skip or not.  Also, all the MB's of 128x128 block are
      filtered even if they are skip MB's.  This gives the signal a purpose
      even when the 128x128 block is all skip, and it also gives a slight
      coding gain as it leaves a way to filter skip blocks, which was
      previously forbidden.
      
      Low latency:
      PSNR YCbCr:     -0.19%     -0.14%     -0.06%
         PSNRHVS:     -0.15%
            SSIM:     -0.13%
          MSSSIM:     -0.15%
       CIEDE2000:     -0.19%
      
      High latency:
      PSNR YCbCr:     -0.03%     -0.01%     -0.09%
         PSNRHVS:      0.04%
            SSIM:      0.00%
          MSSSIM:      0.02%
       CIEDE2000:     -0.02%
      
      Change-Id: I69ba7144d07d388b4f0968f6a53558f480979171
      97535038
  6. 11 Oct, 2016 2 commits
    • Steinar Midtskogen's avatar
      Clean up and speed up CLPF clipping · e66fc87c
      Steinar Midtskogen authored
      * Move clipping tests from inside to outside loops
      * Let sizex and sizey to clpf_block() be the clipped block size rather
        than both just bs
      * Make fallback tests to C more accurate
      
      Change-Id: Icdc57540ce21b41a95403fdcc37988a4ebf546c7
      e66fc87c
    • Steinar Midtskogen's avatar
      Bugfix in the CLPF RDO. · 2e40cc4c
      Steinar Midtskogen authored
      When CLPF was extended to chroma, the chroma RDO accidentally
      discarded the optimal block size found in the luma RDO.
      
      PSNR YCbCr:     -0.25%      0.05%      0.06%
         PSNRHVS:     -0.19%
            SSIM:     -0.36%
          MSSSIM:     -0.23%
      
      Conflicts:
      	av1/common/clpf.c
      
      Change-Id: Ie49cd30f9276a311ada88cb2f13d14757617f030
      2e40cc4c
  7. 10 Oct, 2016 10 commits
  8. 06 Oct, 2016 1 commit
  9. 04 Oct, 2016 1 commit
    • Steinar Midtskogen's avatar
      Move CLPF block signals from frame to SB level. · 85437b21
      Steinar Midtskogen authored
      These signals were in the uncompressed frame header (as a temporary
      hack), which caused two problems:
      
      * We don't want that header to be duplicated in the slice header
      * It was necessary to signal the number of bits to transmit up front
      
      However, the filter size can be 128x128 which is greater than the SB
      size, and a decoder wouldn't be able to know whether to read a bit or
      not until the final SB of that 128x128 block has been decoded
      (depending on whether the 128x128 is all skip or not).  Therefore the
      signalling was changed for 128x128 blocks so that every top left SB of
      a 128x128 filter block contains a signal regardless of whether the
      block is all skip or not.  Also, all the MB's of 128x128 block are
      filtered even if they are skip MB's.  This gives the signal a purpose
      even when the 128x128 block is all skip, and it also gives a slight
      coding gain as it leaves a way to filter skip blocks, which was
      previously forbidden.
      
      Low latency:
      PSNR YCbCr:     -0.19%     -0.14%     -0.06%
         PSNRHVS:     -0.15%
            SSIM:     -0.13%
          MSSSIM:     -0.15%
       CIEDE2000:     -0.19%
      
      High latency:
      PSNR YCbCr:     -0.03%     -0.01%     -0.09%
         PSNRHVS:      0.04%
            SSIM:      0.00%
          MSSSIM:      0.02%
       CIEDE2000:     -0.02%
      
      Change-Id: I69ba7144d07d388b4f0968f6a53558f480979171
      85437b21
  10. 28 Sep, 2016 1 commit
    • Steinar Midtskogen's avatar
      Clean up and speed up CLPF clipping · ae95e6db
      Steinar Midtskogen authored
      * Move clipping tests from inside to outside loops
      * Let sizex and sizey to clpf_block() be the clipped block size rather
        than both just bs
      * Make fallback tests to C more accurate
      
      Change-Id: Icdc57540ce21b41a95403fdcc37988a4ebf546c7
      ae95e6db
  11. 21 Sep, 2016 1 commit
    • Steinar Midtskogen's avatar
      Bugfix in the CLPF RDO. · 3b780f20
      Steinar Midtskogen authored
      When CLPF was extended to chroma, the chroma RDO accidentally
      discarded the optimal block size found in the luma RDO.
      
      PSNR YCbCr:     -0.25%      0.05%      0.06%
         PSNRHVS:     -0.19%
            SSIM:     -0.36%
          MSSSIM:     -0.23%
      
      Change-Id: Idf9f4a18ad774d7b4ff8e907df0180225ea0ccaf
      3b780f20
  12. 20 Sep, 2016 1 commit
  13. 16 Sep, 2016 1 commit
    • Steinar Midtskogen's avatar
      Extend CLPF to chroma. · a25c6c3b
      Steinar Midtskogen authored
      Objective quality impact (low latency):
      
      PSNR YCbCr:      0.13%     -1.37%     -1.79%
         PSNRHVS:      0.03%
            SSIM:      0.24%
          MSSSIM:      0.10%
       CIEDE2000:     -0.83%
      
      Change-Id: I8ddf0def569286775f0f9d4d4005932766a7fc27
      a25c6c3b
  14. 13 Sep, 2016 3 commits
  15. 12 Sep, 2016 1 commit
  16. 08 Sep, 2016 1 commit
    • Steinar Midtskogen's avatar
      Reduce memory footprint for CLPF decoding. · eb5794da
      Steinar Midtskogen authored
      Instead of having CLPF write to an entire new frame and
      copy the result back into the original frame, make the
      filter able to work in-place by keeping a buffer of size
      frame_width*filter_block_size and delay the write-back
      by one filter_block_size row.
      
      This reduces the cycles spent in the filter to ~75%.
      
      Change-Id: I78ca74380c45492daa8935d08d766851edb5fbc1
      eb5794da
  17. 07 Sep, 2016 1 commit
  18. 05 Sep, 2016 2 commits
  19. 02 Sep, 2016 1 commit
  20. 01 Sep, 2016 3 commits
  21. 16 Aug, 2016 1 commit
    • Yaowu Xu's avatar
      Port commits related to clpf and qm experiments · 0818a7c8
      Yaowu Xu authored
      Manually cherry-picked following commits from AOMedia git repository:
      bb2727c2 Sort includess for "clpf.h"
      c297fd00 Add quantisation matrix range parameters.
      0527894f Add encoder option and signaling for quant matrix control.
      4106232b Turn off trellis coding for quantization matrices.
      4017fca3 Modify tests to allow quantization matrices.
      1c122c24 Add quant and dequant functions for new quant matrices.
      95a89994 Enable CLPF
      f72782bb Fix a build issue
      73bae509 Add quantisation matrices and selection functions
      33208d20 Added support for constrained low pass filter (CLPF)
      
      Change-Id: I60fc1ee1ac40e6b9d1d00affd97547ee5d5dd6be
      0818a7c8
  22. 22 Mar, 2016 1 commit
    • Yaowu Xu's avatar
      vp10/ -> av1/ · cfea7dd7
      Yaowu Xu authored
      Change-Id: Ia055d03656ad1580447eced8687949583fdf4089
      cfea7dd7
  23. 23 Feb, 2016 1 commit