1. 23 Jan, 2017 2 commits
  2. 19 Jan, 2017 1 commit
  3. 11 Jan, 2017 1 commit
  4. 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
  5. 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
  6. 03 Jan, 2017 1 commit
  7. 23 Dec, 2016 1 commit
  8. 20 Dec, 2016 1 commit
  9. 17 Dec, 2016 1 commit
  10. 16 Dec, 2016 3 commits
  11. 15 Dec, 2016 2 commits
  12. 14 Dec, 2016 1 commit
  13. 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
  14. 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
  15. 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
  16. 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
  17. 02 Dec, 2016 1 commit
  18. 01 Dec, 2016 1 commit
  19. 18 Nov, 2016 1 commit
    • Debargha Mukherjee's avatar
      Add default 64x64 scan orders and entropy models · 153e1f86
      Debargha Mukherjee authored
      Adds 64x64 default scan orders
      Adds 64x64 coefficient entropy models (just copy the 32x32 ones)
      Entropy context updates for 64x64 transform
      Various misc. changes to support 64x64 transforms
      
      Change-Id: I2c0bc4ba540886dd196e87a78b205407ad3e866b
      153e1f86
  20. 17 Nov, 2016 1 commit
  21. 16 Nov, 2016 1 commit
    • Debargha Mukherjee's avatar
      Add recode loop test for global motion usage · b98a702d
      Debargha Mukherjee authored
      Adds a feature to recode if global motion is used for a reference but
      has very few blocks in the frame actually using it.
      
      lowres improves to -0.512% on average.
      
      Change-Id: I61a36770e1b7103b9a27706909443c3f14ee4e42
      b98a702d
  22. 11 Nov, 2016 1 commit
  23. 10 Nov, 2016 1 commit
    • Thomas Davies's avatar
      Add options setting number of tile groups or MTU. · af6df175
      Thomas Davies authored
      Default MTU size is 0, which implies a fixed number
      of tile groups. MTU matching overrides fixed tile
      group. MTU matching will succeed unless a single
      tile is bigger than the MTU.
      
      --mtu-size is in bytes, and includes headers but
      not transport/wrapper overheads
      
      Change-Id: I2b70bd41b175b54273b02d836f2a84011f617a7c
      af6df175
  24. 09 Nov, 2016 1 commit
  25. 07 Nov, 2016 1 commit
    • Yushin Cho's avatar
      New experiment: Perceptual Vector Quantization from Daala · 77bba8d3
      Yushin Cho authored
      PVQ replaces the scalar quantizer and coefficient coding with a new
      design originally developed in Daala. It currently depends on the
      Daala entropy coder although it could be adapted to work with another
      entropy coder if needed:
      ./configure --enable-experimental --enable-daala_ec --enable-pvq
      
      The version of PVQ in this commit is adapted from the following
      revision of Daala:
      https://github.com/xiph/daala/commit/fb51c1ade6a31b668a0157d89de8f0a4493162a8
      
      More information about PVQ:
      - https://people.xiph.org/~jm/daala/pvq_demo/
      - https://jmvalin.ca/papers/spie_pvq.pdf
      
      The following files are copied as-is from Daala with minimal
      adaptations, therefore we disable clang-format on those files
      to make it easier to synchronize the AV1 and Daala codebases in the future:
       av1/common/generic_code.c
       av1/common/generic_code.h
       av1/common/laplace_tables.c
       av1/common/partition.c
       av1/common/partition.h
       av1/common/pvq.c
       av1/common/pvq.h
       av1/common/state.c
       av1/common/state.h
       av1/common/zigzag.h
       av1/common/zigzag16.c
       av1/common/zigzag32.c
       av1/common/zigzag4.c
       av1/common/zigzag64.c
       av1/common/zigzag8.c
       av1/decoder/decint.h
       av1/decoder/generic_decoder.c
       av1/decoder/laplace_decoder.c
       av1/decoder/pvq_decoder.c
       av1/decoder/pvq_decoder.h
       av1/encoder/daala_compat_enc.c
       av1/encoder/encint.h
       av1/encoder/generic_encoder.c
       av1/encoder/laplace_encoder.c
       av1/encoder/pvq_encoder.c
       av1/encoder/pvq_encoder.h
      
      Known issues:
      - Lossless mode is not supported, '--lossless=1' will give the same result as
      '--end-usage=q --cq-level=1'.
      - High bit depth is not supported by PVQ.
      
      Change-Id: I1ae0d6517b87f4c1ccea944b2e12dc906979f25e
      77bba8d3
  26. 04 Nov, 2016 1 commit
    • Yushin Cho's avatar
      New experiment: Perceptual Vector Quantization from Daala · 09705fe7
      Yushin Cho authored
      PVQ replaces the scalar quantizer and coefficient coding with a new
      design originally developed in Daala. It currently depends on the
      Daala entropy coder although it could be adapted to work with another
      entropy coder if needed:
      ./configure --enable-experimental --enable-daala_ec --enable-pvq
      
      The version of PVQ in this commit is adapted from the following
      revision of Daala:
      https://github.com/xiph/daala/commit/fb51c1ade6a31b668a0157d89de8f0a4493162a8
      
      More information about PVQ:
      - https://people.xiph.org/~jm/daala/pvq_demo/
      - https://jmvalin.ca/papers/spie_pvq.pdf
      
      The following files are copied as-is from Daala with minimal
      adaptations, therefore we disable clang-format on those files
      to make it easier to synchronize the AV1 and Daala codebases in the future:
       av1/common/generic_code.c
       av1/common/generic_code.h
       av1/common/laplace_tables.c
       av1/common/partition.c
       av1/common/partition.h
       av1/common/pvq.c
       av1/common/pvq.h
       av1/common/state.c
       av1/common/state.h
       av1/common/zigzag.h
       av1/common/zigzag16.c
       av1/common/zigzag32.c
       av1/common/zigzag4.c
       av1/common/zigzag64.c
       av1/common/zigzag8.c
       av1/decoder/decint.h
       av1/decoder/generic_decoder.c
       av1/decoder/laplace_decoder.c
       av1/decoder/pvq_decoder.c
       av1/decoder/pvq_decoder.h
       av1/encoder/daala_compat_enc.c
       av1/encoder/encint.h
       av1/encoder/generic_encoder.c
       av1/encoder/laplace_encoder.c
       av1/encoder/pvq_encoder.c
       av1/encoder/pvq_encoder.h
      
      Known issues:
      - Lossless mode is not supported, '--lossless=1' will give the same result as
      '--end-usage=q --cq-level=1'.
      - High bit depth is not supported by PVQ.
      
      Change-Id: I1ae0d6517b87f4c1ccea944b2e12dc906979f25e
      09705fe7
  27. 31 Oct, 2016 1 commit
    • Steinar Midtskogen's avatar
      Reverse order of CLPF and dering · 5d56f4d6
      Steinar Midtskogen authored
      Low latency:
      PSNR YCbCr:     -0.15%      0.11%      0.12%
         PSNRHVS:     -0.25%
            SSIM:     -0.26%
          MSSSIM:     -0.26%
       CIEDE2000:     -0.03%
      
      High latency:
      PSNR YCbCr:     -0.18%      0.18%      0.07%
         PSNRHVS:     -0.20%
            SSIM:     -0.21%
          MSSSIM:     -0.21%
       CIEDE2000:     -0.03%
      
      Change-Id: Ieb86d9ba353220de6454bdc15cea825944b6385b
      5d56f4d6
  28. 30 Oct, 2016 1 commit
  29. 28 Oct, 2016 2 commits
    • Thomas Daede's avatar
      Upsample reference frames after size dependent speed features are calculated. · c266df05
      Thomas Daede authored
      This prevents a crash if the upsample_refs speed feature is
      changed as part of set_size_dependent_vars, when the recode
      loop is enabled.
      
      Change-Id: I645e389bfe961879dd2001439a34fde2993868d9
      c266df05
    • Thomas Davies's avatar
      Encode and decode multiple tile groups · 80188d15
      Thomas Davies authored
      This is a manual adaptation of the following commit from aom/master:
      ce12003d
      
      The original commit message:
      
      A tile group is a set of tiles in scan order.
      
      Each tile group has a version of uncompressed and compressed headers,
      identical apart from tile group parameters.
      Encoding probability updates takes account of the number of
      headers to control overheads.
      
      The decoder supports arbitrary numbers of tile groups with
      arbitrary number of tiles. The number of tiles in a TG is
      signalled in the uncompressed header for that TG.
      
      The encoder currently only supports a fixed number
      of TGs (3, when error resilient mode is on) of equal size
      (except possibly for the last one).
      
      The average BDR performnce with 3 tile groups versus
      anchor with error resilient mode and up to 16 tiles is:
      
      NR YCbCr:      3.02%      3.04%      3.05%
      PSNRHVS:      3.09%
      SSIM:      3.06%
      MSSSIM:      3.05%
      CIEDE2000:      3.04%
      
      Change-Id: I9b97c5ed733103b9160a3a5d4370de5322c00c0b
      80188d15
  30. 25 Oct, 2016 2 commits
  31. 22 Oct, 2016 1 commit
    • Angie Chiang's avatar
      Align frame contexts. · a5d96c4a
      Angie Chiang authored
      This will allow for aligned cdfs and scan orders inside.
      
      Change-Id: I8ebcd64d55e41da20f518a39ae6ef192def70109
      a5d96c4a
  32. 20 Oct, 2016 1 commit