1. 15 Mar, 2017 1 commit
    • Thomas Davies's avatar
      EC_ADAPT: Perform backwards updates directly on CDFs. · 028b57f5
      Thomas Davies authored
      The initial CDF for each frame is stored in
      the frame context. CDFs for actual coding are
      stored in the tile structures, and these are
      what get adapted. The initial CDF is replaced
      by an average CDF derived from these tile CDFs.
      This is carried forward to future frames when
      backward adaptation is on.
      
      CDFs are no longer set from the 8 bit probabilities
      in backwards adaptation.
      
      For now, 8 bit probabilities are maintained for
      use in the encoder and for symbols which do not
      have a CDF.
      
      Change-Id: I106b30510bfad1fa57d077f7702acc1864378a09
      028b57f5
  2. 09 Mar, 2017 1 commit
  3. 08 Mar, 2017 1 commit
  4. 07 Mar, 2017 2 commits
    • Fangwen Fu's avatar
      dependent tiles togeter with tile groups · 73126c08
      Fangwen Fu authored
      Change-Id: I378eb5b2c03a4c30d261128bcf9ef00ea987ed40
      73126c08
    • hui su's avatar
      Fork the entropy experiment · 0d103578
      hui su authored
      Split it into two experiments:
      q_adapt_probs: multiple initial coeff prob tables based on q-index
      subframe_prob_update: multiple backward prob updates within frame
      
      Change-Id: I78041ebd4ba34afc9152f6861225f63c2e8eb686
      0d103578
  5. 06 Mar, 2017 1 commit
    • 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
  6. 27 Feb, 2017 2 commits
    • Alex Converse's avatar
      Remove aom_realloc() · 7f094f10
      Alex Converse authored
      It only handles the realloc constraint (preserving low elements) by
      serendipity, and we don't actually rely on that behavior anyway.
      Meanwhile the calls may do extra copying that gets immediately clobbered
      by the callers.
      
      Cherry-pick from libvpx:
      3063c3760 Remove vpx_realloc()
      
      Change-Id: I8dfa89e4a81084b084889c27bd272fdf85184e8d
      7f094f10
    • Alex Converse's avatar
      loop_restoration: Cleanup allocations · 232e3847
      Alex Converse authored
      Change-Id: Id3824c09cbaae814df1d8fb029215f28e8c7a6b1
      232e3847
  7. 18 Feb, 2017 1 commit
  8. 17 Feb, 2017 2 commits
    • Debargha Mukherjee's avatar
      Support trapezoidal models for global motion · 5dfa9300
      Debargha Mukherjee authored
      Adds functinoality for least-squares, RANSAC as well as encoding and
      decoding with new constrained homographies that warp blocks to horizontal
      and/or vertical trapezoids. This is for future experimentation. None
      of the models are actually enabled in the code.
      
      Change-Id: I1936018c6b11587d6fd83c3a2c63548cb641b33f
      5dfa9300
    • Rostislav Pehlivanov's avatar
      Implement a new rate control system · 002e7b7a
      Rostislav Pehlivanov authored
      This commit implements a new rate control system which was ported from
      Daala's rate control system (which was based off of Theora's rate
      control system) to the encoder. Its aim is to address the weaknesses of
      the current rate control system and eventually serve as its replacement.
      
      This is still work in progress. So far this commit only implements
      support for single pass encoding for constant quality and bitrate
      targeting.
      Additional commits which implement two-pass support and the rest to
      match the feature set of the current rate control system are coming
      soon.
      
      The rate control system hasn't been fully tuned (and will likely need
      additional tuning as the encoder's development progresses) and does
      contain some "hacks", to convert the quality to a quantizer value
      (empirical) and to tweak the quantizer in between golden frames (which
      uses some code from the current rate control system as well as code
      which attempts to model what that code does), the latter of which is
      only in the constant quality codepath.
      
      Bitrate targeting works much better than the current rate control
      system's targeting and will actually closely match the rate specified by
      the user without the current rate control system's bursty behaviour.
      
      Change-Id: I588fbfd2e80a3d21ce7176903115d6a96ef1700a
      002e7b7a
  9. 14 Feb, 2017 1 commit
  10. 12 Feb, 2017 1 commit
    • David Barker's avatar
      Fix segfault with loop-restoration on x86. · befcc425
      David Barker authored
      The WienerInfo struct requires a 16-byte alignment on x86,
      since it contains filter coefficients which are loaded using
      SSE aligned load instructions. But on 32-bit x86, the default
      alignment of aom_malloc/aom_realloc is only 8 bytes, leading
      to occasional segfaults.
      
      To fix this, rather than using aom_realloc to resize WienerInfo
      structures, we always free and re-allocate them using aom_memalign
      
      BUG=aomedia:345
      
      Change-Id: Ib1b2a42d4a2fa215dcc81ea481c51271ab068a37
      befcc425
  11. 04 Feb, 2017 1 commit
  12. 03 Feb, 2017 1 commit
  13. 25 Jan, 2017 1 commit
    • hui su's avatar
      Cleanup for the entropy experiment · 0161a932
      hui su authored
      Minor performance changes
      0.03% better on lowres
      0.01% better on midres
      
      Change-Id: I7a7168f3a2a4d17a03353841a416eff6edf1e241
      0161a932
  14. 23 Jan, 2017 2 commits
  15. 19 Jan, 2017 1 commit
  16. 11 Jan, 2017 1 commit
  17. 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
  18. 04 Jan, 2017 2 commits
    • 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
    • Ryan Lei's avatar
      Add an experiment to disable lpf on tile boundaries · 7386eda0
      Ryan Lei authored
      This commit adds a new experiment to allow disabling of loop filtering
      on tile boundaries. It is implemented by adding a syntax field
      "loopfilter_across_tiles_enabled" into the uncompressed frame header. 
      If it is set to 0, decoder and encoder will disables loop filtering for
      block edges that are also tile boundaries.
      
      Change-Id: Ib80bfd82d49c74f1ba46ae18ceedb30704ac8aa5
      7386eda0
  19. 03 Jan, 2017 1 commit
  20. 23 Dec, 2016 1 commit
  21. 20 Dec, 2016 1 commit
  22. 17 Dec, 2016 1 commit
  23. 16 Dec, 2016 3 commits
  24. 15 Dec, 2016 2 commits
  25. 14 Dec, 2016 1 commit
  26. 13 Dec, 2016 1 commit
    • Yunqing Wang's avatar
      Not to call reset_use_upsampled_references() while encoding key frames · fe1e58ec
      Yunqing Wang authored
      A crash was reported while encoding >1080p file using best mode.
      (aom issue 107 and issue 108). The cause was that the speed features
      were initialized using good mode in AV1. The patch(commit f330ca)
      disabled the upsampled reference usage only for good mode, but not for
      best mode. So, for 1st key frame, the encoder incorrectly called
      reset_use_upsampled_references() that caused the segfault.
      
      The patch(commit e4e93b) disabled the upsampled reference usage for all
      encoding modes and resolved the issue. This patch fixed issue 108 and
      further made sure the upsampled references would be used correctly.
      
      BUG=aomedia:108
      
      Change-Id: I8362cc7cd82be324fd77f0bec315aeba509903bd
      fe1e58ec
  27. 12 Dec, 2016 1 commit
    • Debargha Mukherjee's avatar
      Refines the recode loop · 705544c2
      Debargha Mukherjee authored
      Uses number of 4x4 blocks using global motion as metric to
      decide whether to recode or not.
      
      Improves performance a little.
      lowres: -0.658%
      
      Change-Id: I6b1913b7bd31d7a25ca8ca5c75c9b6bb87151a78
      705544c2
  28. 09 Dec, 2016 1 commit
    • Debargha Mukherjee's avatar
      Support affine/homography models for global motion · b0f6bd44
      Debargha Mukherjee authored
      With this patch affine or homography models can be enabled
      by simply changing the value of the GLOBAL_TRANS_TYPES
      macro in common/mv.h to 4 and 5 respectively. Currently
      it is left at supporting only rotzoom. There is a small
      gain with enabling affine.
      
      Also refactors costing to change based on the model type.
      
      Change-Id: I46c1759de06c42c176c64ec21307ff347ddcc259
      b0f6bd44
  29. 07 Dec, 2016 2 commits
    • David Barker's avatar
      Fix segfault for reference-buffer&aom-highbitdepth · 49a76560
      David Barker authored
      The commit fixes the segfault shown in  test AV1/ActiveMapTestLarge
      when build with the following config:
      ../../aom/configure --disable-install-docs --enable-unit-tests
      --enable-debug --disable-optimizations --enable-aom-highbitdepth
      --enable-experimental --enable-ans --enable-bidir-pred
      --enable-dual-filter --enable-entropy --enable-ext-inter
      --enable-ext-interp --enable-ext-intra --enable-ext-partition
      --enable-ext-partition-types --enable-ext-refs --enable-ext-tx
      --enable-loop-restoration --enable-filter-intra --enable-motion-var
      --enable-new-quant --enable-ref-mv --enable-supertx --enable-var-tx
      
      BUG=aomedia:99
      
      Change-Id: I900d5e1d5458c482a1f0a3dde769c1ad93acdca7
      49a76560
    • Jingning Han's avatar
      Add 2x2 variance function · 9e7c49fc
      Jingning Han authored
      Change-Id: I73bcb8ab5727e2d07e34ca35e9e014f3c6f63d56
      9e7c49fc
  30. 02 Dec, 2016 1 commit
  31. 01 Dec, 2016 1 commit