1. 19 Jan, 2017 1 commit
  2. 18 Jan, 2017 1 commit
  3. 11 Jan, 2017 1 commit
  4. 09 Jan, 2017 2 commits
  5. 07 Jan, 2017 2 commits
    • David Barker's avatar
      Optimize Wiener filter selection · 33f3bfde
      David Barker authored
      * Change the behaviour of search_wiener at borders to match
        the behaviour of the Wiener filter itself
      * Reorder the calculation in compute_stats, saving ~5% of
        encode time at low bitrates (tested on bus_cif.y4m at 200kbps)
      
      Change-Id: I5f649d77fd66584451aaf37697ce9c9af69524e4
      33f3bfde
    • David Barker's avatar
      Various loop-restoration optimizations · 6928a5d2
      David Barker authored
      * Optimize the self-guided and domaintxfmrf filters
      * Save 576KiB of buffers in the encoder and decoder
      * Disable self-guided filter for videos whose width or
        height is < 5, in order to help simplify the filter.
      
      This results in an overall 30-40% improvement in decoder
      speed with loop-restoration enabled (depending on source
      and bitate), with no effect on video quality, *except* for
      videos with width or height < 5 pixels.
      
      Change-Id: Ide9181118ec3a63a0335338f316505b08df2d831
      6928a5d2
  6. 06 Jan, 2017 1 commit
    • Debargha Mukherjee's avatar
      Add UV wiener loop restoration · a43a2d98
      Debargha Mukherjee authored
      Enables Wiener based loop restoration only for the UV
      frames. The selfguided and domaintranform filters do not
      work very well for UV components, hence they are disabled.
      For each UV frame a single set of wiener parameters are
      sent. They are applied tile-wise, but all tiles use the
      same parameters.
      
      BDRATE (Global PSNR) results:
      -----------------------------
      lowres: -1.266% (up from -0.666%, good improvement)
      midres: -1.815% (up from -1.792%, tiny improvement)
      
      Tiling on UV components will be explored subsequently.
      
      Change-Id: Ib5be93121c4e88e05edf3c36c46488df3cfcd1e2
      a43a2d98
  7. 04 Jan, 2017 1 commit
    • David Barker's avatar
      Simplify buffer management for self-guided restoration filter · 3a0df186
      David Barker authored
      * Remove some unused variables
      * Reduce need for casts by typing intermediate buffers appropriately
      * Avoid copying data which is never modified; use the original data
        instead.
      * Reduce number of intermediate buffers required, saving allocations
        of 576KiB in the decoder and ~1MiB in the encoder
      
      No effect on performance
      
      Change-Id: I55243904dd8e818fb6d43fa431903736475d23ff
      3a0df186
  8. 03 Jan, 2017 1 commit
    • David Barker's avatar
      Add new convolve variant for loop-restoration · be6cc07d
      David Barker authored
      The convolve filters generated by loop_wiener_filter_tile
      are not compatible with some existing convolve implementations
      (they can have coefficients >128, sums of (certain subsets of)
      coefficients >128, etc.)
      
      So we implement a new variant, which takes a filter with 128
      subtracted from its central element and which adds an extra copy
      of the source just before clipping to a pixel (reinstating the
      128 we subtracted). This should be easy to adapt from the existing
      convolve functions, and this patch includes SSE2 highbd and
      SSSE3 lowbd implementations.
      
      Change-Id: I0abf4c2915f0665c49d88fe450dbc77b783f69e1
      be6cc07d
  9. 16 Dec, 2016 3 commits
  10. 15 Dec, 2016 2 commits
  11. 14 Dec, 2016 3 commits
    • David Barker's avatar
      Change Wiener filter in loop-restoration · 025b2545
      David Barker authored
      The Wiener filter now uses the same convolution code as the
      inter predictors.
      
      Change-Id: Ia3bfbc778171eb25c6a0141426d1f69d92c17992
      025b2545
    • David Barker's avatar
      Remove feedback between tiles in loop-restoration · 9666e756
      David Barker authored
      This is intended to simplify hardware and multithreaded
      implementations.
      
      Change-Id: I6aa95b67c03b794a0f3d5cf2f65c576d05f2ca7d
      9666e756
    • Debargha Mukherjee's avatar
      Disable filtering for Cb and Cr components · 818e42a7
      Debargha Mukherjee authored
      The parameters are optimized only on Y, so disable chrominance
      filtering for now. Later we can extend the syntax to have
      separate parameters for the chrominance, or optimize the
      parameters jointly over luminance and chrominance components.
      
      lowres: -0.676% (from -0.759%) becomes a little worse
      midres: -1.837% (from -1.520%) substantial improvement
      hdres: pending
      
      Change-Id: I98d71f48de98394b05fd9036de259cb43d007614
      818e42a7
  12. 12 Dec, 2016 1 commit
    • Debargha Mukherjee's avatar
      Replace bilateral filter with domain transform RF · 0e67b25c
      Debargha Mukherjee authored
      The main objective is to reduce computational complexity.
      The domain transform filter has an effect of edge preserving smoothing
      at a lower computational cost than the bilateral filter, and can be
      readily paralelized.
      
      A little drop in coding efficiency about 0.06% for lowres, 0.16% for
      midres.
      
      Change-Id: Id949406b7e5afe9b64588d130065c63a76e4f3f9
      0e67b25c
  13. 07 Dec, 2016 1 commit
    • Debargha Mukherjee's avatar
      Modify boxnum to fix degenerate size videos · 1ee98b6c
      Debargha Mukherjee authored
      Fixes a memory issue and computes values correctly for 1x1 and
      1xn or nx1 videos.
      This also fixes a test failure in AV1FrameSizeTestsLarge.OneByOneVideo.
      
      Change-Id: Ib5a4efd094763fb6ceb119383c11f776784f58a4
      1ee98b6c
  14. 06 Dec, 2016 1 commit
    • Debargha Mukherjee's avatar
      Add domain transform recursive filter · 3981be93
      Debargha Mukherjee authored
      This filter is meant to replace the bilateral filter,
      but is currently added in addition to the bilateral filter
      for testing.
      
      Change-Id: Ia529701e69833d47c11b3367d5bf804eb8498079
      3981be93
  15. 01 Dec, 2016 2 commits
  16. 10 Nov, 2016 1 commit
  17. 03 Nov, 2016 1 commit
  18. 04 Oct, 2016 1 commit
  19. 30 Sep, 2016 1 commit
  20. 21 Sep, 2016 1 commit
  21. 19 Sep, 2016 1 commit
  22. 17 Sep, 2016 1 commit
    • Debargha Mukherjee's avatar
      Enable tile-adaptive restoration · 5cd2ab95
      Debargha Mukherjee authored
      Includes a major refactoring/enhancement to support
      tile-adaptive switchable restoration. The framework can be
      readily extended to add more restoration schemes in the
      future. Also includes various cleanups and fixes.
      
      Specifically the framework allows restoration to be conducted
      on tiles such that each tile can be either left unrestored, or
      use bilateral or wiener filtering.
      
      There is a modest improvemnt in coding efficiency (0.1 - 0.2%).
      
      Further enhancements will be added subsequently to improve coding
      efficiency and complexity.
      
      Change-Id: I5ebedb04785ce1ef6f324abe209e925c2d6cbe8a
      5cd2ab95
  23. 15 Sep, 2016 1 commit
  24. 07 Sep, 2016 1 commit
  25. 02 Sep, 2016 1 commit
  26. 01 Sep, 2016 2 commits
  27. 29 Aug, 2016 1 commit
    • Aamir Anis's avatar
      Tiling in loop restoration + cosmetics · e40e6e57
      Aamir Anis authored
      Frame can be split into rectangular tiles for application of separate
      bilateral or Wiener filters per tile. Some variable names changed for
      better readability.
      
      Change-Id: I13ebc4d0b0baf368e524db5ce276f03ed76af9c8
      e40e6e57
  28. 12 Aug, 2016 1 commit
  29. 29 Jul, 2016 1 commit
  30. 12 Feb, 2016 1 commit
    • Debargha Mukherjee's avatar
      Adding loop wiener restoration · 8b0a5b87
      Debargha Mukherjee authored
      Adds a wiener filter based restoration scheme in loop which can
      be optionally selected instead of the bilateral filter.
      
      The LMMSE filter generated per frame is a separable symmetric 7
      tap filter. Three parameters for each of horizontal and vertical
      filters are transmitted in the bitstream. The fourth parameter
      is obtained assuming the sum is normalized to 1.
      Also integerizes the bilateral filters, along with other
      refactoring necessary in order to support the new switchable
      restoration type framework.
      
      derflr: -0.75% BDRATE
      
      [A lot of videos still prefer bilateral, however since many frames
      now use the simpler separable filter, the decoding speed is
      much better].
      
      Further experiments to follow, related to replacing the bilateral.
      
      Change-Id: I6b1879983d50aab7ec5647340b6aef6b22299636
      8b0a5b87
  31. 05 Feb, 2016 1 commit