1. 01 Oct, 2017 1 commit
  2. 28 Sep, 2017 1 commit
    • Ola Hugosson's avatar
      Add striped_loop_restoration experiment · 1e7f2d0c
      Ola Hugosson authored
      This experiment offset the filter tile grid 8 pixels upwards.
      Deblocked pixels (rather than CDEFed pixels) are used for the
      2 lines above and below the filter processing unit. The 8 pixel
      offset is the offset produced by deblock/cdef. This way the
      loop_restoration does not need additional line buffers in a
      single pass hardware implementation.
      
      Change-Id: I89e0831dc28413a5d3e02d7a426ce2885ab629d7
      1e7f2d0c
  3. 26 Sep, 2017 1 commit
    • Rupert Swarbrick's avatar
      Simplify av1_get_rest_tile_limits · 5d2e729e
      Rupert Swarbrick authored
      The subtile and clamping features are no longer used. This patch
      removes the dead code that implemented them and the parameters to
      support them.
      
      It also changes the return format. Instead of having return type void
      and passing data out through 4 output pointers, the function now just
      returns a RestorationTileLimits structure. Since the function is
      defined inline in a header, I suspect that most callsites will
      actually compile to identical code.
      
      There should be no functional change from this patch.
      
      Change-Id: I6ebc4da66a00676bd988f939a4b4957f743e8004
      5d2e729e
  4. 10 Sep, 2017 2 commits
    • Debargha Mukherjee's avatar
      Refactoring/simplification of buffers used for sgr · 1330dfd1
      Debargha Mukherjee authored
      Inlcudes miscellaneous cleanups, test fixes, and code reorganization
      for loop-restoration components.
      
      Change-Id: I5b2e6419234d945e6f4344b22636119b50df4054
      1330dfd1
    • Debargha Mukherjee's avatar
      Reduce/Eliminate line buffer for loop-restoration. · e168a783
      Debargha Mukherjee authored
      This patch forces the vertical filtering for the top and bottom
      rows of a processing unit for the Wiener filter to not use border
      more than what is set in the WIENER_BORDER_VERT macro.
      This macro is currently set at 0 to eliminate line buffer completely,
      but it could be increased to 1 or 2 to use limited line buffers
      if the coding efficiency is affected too much with a 0 line-buffer.
      
      Also, for the sgr filter we added the option of using overlapping
      windows horizonttally and vertically to improve coding efficiency.
      The vertical border used is set by the SGRPROJ_BORDER_VERT
      macro, while the horizontal border can be set by the
      SGRPROJ_BORDER_HORZ macro set at 2, the max needed. Currently we do not
      recommend changing SGRPROJ_BORDER_HORZ below 2.
      
      The overall line buffer requirement for LR is twice the max of
      WIENER_BORDER_VERT and SGRPROJ_BORDER_VERT.
      Currently both are set as 0, eliminating line buffers completely.
      
      Also this patch extends borders consistently before CDEF / LR.
      
      Change-Id: Ie58a98c784a0db547627b9cfcf55f018c30e8e79
      e168a783
  5. 08 Sep, 2017 1 commit
  6. 07 Sep, 2017 2 commits
    • Tom Finegan's avatar
      Silence logical-op warnings in av1/encoder/pickrst.c · 8af64ae5
      Tom Finegan authored
      Newer gcc's output logical-op warnings when and'ing together
      a duplicate condition. In this case it's because a constant
      was set to an enum value that was also checked locally.
      
      Change-Id: Iada9571d3e59ec9b75aa446fd6690587092af161
      8af64ae5
    • Debargha Mukherjee's avatar
      Reduce line buffer size for Wiener filter. · 22bbe4cc
      Debargha Mukherjee authored
      This patch forces the vertical filtering for the top and bottom
      rows of a processing unit for the Wiener filter to be 5-tap.
      The 5-taps are derived from the primary 7-tap fitler by forcing
      the taps at the end to be zero, and absorbing their weights into
      the other taps to maintain normalization.
      This will effectively reduce the line buffer size for luma Wiener
      filter to 4 (from 6).
      
      Change-Id: I5e21b58369777eabf553a8987387d112f98a5598
      22bbe4cc
  7. 06 Sep, 2017 2 commits
    • Yaowu Xu's avatar
      Silent compiler warning of unused variable · 069cc313
      Yaowu Xu authored
      Change-Id: I1b921e79484e78a272c4f62e30cb85631a65ac25
      069cc313
    • Debargha Mukherjee's avatar
      Make loop-restoration use 64x64 processing units · 7a5587a8
      Debargha Mukherjee authored
      Changes loop-restoration to use processing unit size that is
      64x64 for luma; for chroma the processing unit is coupled to
      64x64 support region for luma.
      Thus for chroma the processing unit size is 32x32 for 4:2:0,
      32x64 for 4:2:2 and 64x64 for 4:4:4, etc.
      
      While the Wiener filter output should not change with this patch,
      the sgr filter will change since the boundary pixel handling in
      sgr is internal within the filter.
      
      Change-Id: I65a9e2df88927a19445420ce400acb1fcf7afa93
      7a5587a8
  8. 04 Sep, 2017 2 commits
  9. 01 Sep, 2017 1 commit
    • Rupert Swarbrick's avatar
      Encode loop restoration coefficients per tile · 09b5b168
      Rupert Swarbrick authored
      This is a baby-step towards encoding the coefficients at the start of
      superblocks at the top-left of loop restoration tiles. Note that this
      patch causes us to reset "wiener_info" and "sgrproj_info" at each tile
      boundary, which will cause a performance drop.
      
      This is necessary because, in order for tiles to be processed in
      parallel, we cannot delta-encode coefficients across tile boundaries
      if the coefficients are signalled within tiles. We could probably do
      better than the current patch by, say, delta-encoding against previous
      frames.
      
      This patch also fixes up the costing in pickrst.c to match
      
      Change-Id: I5b8b91d63aaf49627cde40219c31c0ac776dfd38
      09b5b168
  10. 22 Aug, 2017 1 commit
  11. 31 Jul, 2017 1 commit
    • Yue Chen's avatar
      Move mode costs that can be updated inside a frame to MACROBLOCK · b23d00a0
      Yue Chen authored
      It is a refactoring patch, which aims to make the code ready for
      implementation of in-frame mode cost update in RDO.
      Also add mode cost update per sb row, but it won't affect coding
      results because cdf update in RDO is not there.
      Mode cost arrays are moved to MACROBLOCK because in multi-thread
      coding, threads share the same AV1_COMP.
      
      This patch does not have impact on coding results.
      
      Change-Id: I2e8f7d7d066b23ebfbfc998269023781f359a6ff
      b23d00a0
  12. 24 Jun, 2017 1 commit
  13. 15 Jun, 2017 1 commit
    • Urvang Joshi's avatar
      Remove 'rddiv' member from various structs. · 70006e46
      Urvang Joshi authored
      This was initialized from a const and never modified. But was still
      passed around and stored in multiple structs.
      
      Removed these 'rddiv' member variables and now RDOPT() and RDOPT_DBL()
      always use the const RDDIV_BITS directly.
      
      Change-Id: I1a8dfd2c8fa857d466ad1207b4f0dd6ec07eafb8
      70006e46
  14. 06 Jun, 2017 1 commit
    • Debargha Mukherjee's avatar
      Make loop-restoration compatible w/ frame_superres · 2dd982e4
      Debargha Mukherjee authored
      When frame_superres is on, loop-restoration should work
      on the size of the upscaled frame and not on the internal
      width and height in the common structure. This patch
      makes the necessary changes on the encoder and decoder
      side to enable that.
      
      Change-Id: I1d1c024ac6f95944169d90647b4c5a61354a5cc6
      2dd982e4
  15. 01 Jun, 2017 1 commit
  16. 21 May, 2017 1 commit
    • Debargha Mukherjee's avatar
      Cleans ups and refactoring · d48f573d
      Debargha Mukherjee authored
      Unifies the chroma and luma paths for estimation of the
      restoration parameters.
      
      No change in bit-stream or results.
      
      Change-Id: I9998c269cc00ded8b94d0e660b5441a4f9b94848
      d48f573d
  17. 19 May, 2017 1 commit
  18. 17 May, 2017 1 commit
  19. 15 May, 2017 1 commit
  20. 05 May, 2017 1 commit
    • Debargha Mukherjee's avatar
      Redo / refactor affine and rot-zoom least squares · 7ae7aeaf
      Debargha Mukherjee authored
      Use a simpler least-squares function for affine and rotzoom
      model estimation, instead of computing the pseudo inverse.
      Also refactors the code into a separate mathutils.h file.
      
      The SVD code is currently used only for estimation of the
      homography models which can be removed when we remove the
      homography models.
      
      Coding efficiency change is in noise range, with the small
      difference coming from numerical precision issues.
      
      Change-Id: I0a9eb79495911cea21a7945b397d596e22a2a186
      7ae7aeaf
  21. 03 May, 2017 1 commit
  22. 01 May, 2017 1 commit
    • Debargha Mukherjee's avatar
      Fix a bug in loop-restoration · 865a6f27
      Debargha Mukherjee authored
      Affected the switchable decision mechanism and
      effectively turned off block level switching, even
      though frame level switching was fine.
      
      Change-Id: Id0b19f91ecfae63964e73f1ba7bfeec70179da35
      865a6f27
  23. 17 Apr, 2017 1 commit
    • Jingning Han's avatar
      Singularity handling in Gaussian elimination · 041c67b9
      Jingning Han authored
      When the fwd Gaussian elimination process encounters diagonal
      element as zero value, the linear equation does not have unique
      solution. Return the linear solver state as unsolvable in such
      case. This resolves a floating point exception issue due to divided
      by zero in the loop restoration filter.
      
      BUG=aomedia:437
      
      Change-Id: I3c67525691a3003f9f470e8a0d5b4ee187cba963
      041c67b9
  24. 14 Apr, 2017 1 commit
  25. 12 Apr, 2017 1 commit
  26. 07 Apr, 2017 1 commit
  27. 14 Mar, 2017 1 commit
  28. 10 Mar, 2017 2 commits
    • David Barker's avatar
      Vectorize new highpass filter for loop-restoration · eed824ef
      David Barker authored
      Change-Id: Ibe5d4933f599456cb496f636de244694bc786a4c
      eed824ef
    • Debargha Mukherjee's avatar
      Replace one self guided filter with highpass · b7bb0976
      Debargha Mukherjee authored
      Adds an option controlled by a macro to replace one of
      the guided filters in the self-guided tool with a simple
      bandpass filtered version generated with a 3x3 kernel.
      By default the macro USE_HIGHPASS_IN_SGRPROJ is 0 (turned
      off), that defaults us to the dual self-guided filter.
      When the macro is turned on, the larger radius guided
      filter is replaced by a simpler filter that is much faster.
      
      Results (if USE_HIGHPASS_IN_SGRPROJ is on vs. off):
      lowres: performance drop by +0.14% (BDRATE)
      midres: performance drop by +0.27% (BDRATE)
      
      Further experiments on this variation of guided filters is
      pending.
      
      Change-Id: I7bbcfcad7ee266cd49a8dc6d96795a454feb1a94
      b7bb0976
  29. 09 Mar, 2017 3 commits
  30. 08 Mar, 2017 1 commit
    • David Barker's avatar
      Make encoder use vectorized self-guided filter · 506eb723
      David Barker authored
      By rearranging the code in restoration.c, we can allow the
      encoder to use the SSE4.1 version of the self-guided filter
      while picking the loop-restoration filter.
      
      This also helps us prepare for adding a highbitdepth SSE4.1
      version of the self-guided filter.
      
      No effect on encoder output, but gives an end-to-end speedup
      of 1-2%.
      
      Change-Id: Id17ba4a0963ddce9f70a7cae666e212e138d5f2c
      506eb723
  31. 06 Mar, 2017 2 commits
    • David Barker's avatar
      Vectorize self-guided filter · ce110cc5
      David Barker authored
      Add an SSE4.1 lowbd version of the self-guided filter for
      loop-restoration, and apply some optimizations to the C
      version.
      
      Approximate times per 128x128 / 256x256 tile on the machine
      this was developed on:
      Previous C:  620us / 2800us
      Optimized C: 500us / 2200us ( 24% /  27% faster)
      SSE4.1:      147us / 600us  (320% / 370% faster)
      
      Change-Id: I23ff5a5482a191aeb06f9d1f767a9f036bb357fe
      ce110cc5
    • Debargha Mukherjee's avatar
      Remove unnecessary filtering and buffer copies · 00c54330
      Debargha Mukherjee authored
      Removes redundant deblocking filtering operations and buffer copies,
      during search for the restoration filters.
      Also, makes the order of cdef and loop-restoration consistent.
      
      BUG=AOMEDIA:373
      
      Change-Id: I571e331f9dfadfd2c1494f279e50510ec212ea29
      00c54330
  32. 14 Feb, 2017 1 commit