1. 23 Jan, 2017 2 commits
    • Fangwen Fu's avatar
      enable explicit temp mv prediction signaling · 8d164de2
      Fangwen Fu authored
      Change-Id: Ieb2922c3df4ef4f8514b8a6df6f9a8fc45ef3cf4
      8d164de2
    • Yushin Cho's avatar
      Add a new experiment, DAALA_DIST · 7a428ba2
      Yushin Cho authored
      This commit adds a new experiment, Daala's distortion function,
      which is designed to better approximate perceptual distortion
      in 8x8 pixel blocks.
      
      This experiment is expected to work best with PVQ.
      
      It measures the variance of overlapped 4x4 regions in the 8x8 area,
      then uses these variances to scale the MSE of weighted frequency domain
      distortion of 8x8 block.
      
      Since AV1 calculates distortion in blocks as small as 4x4, it is not possible to
      directly replace the existing distortion functions of AV1,
      such as dist_block() and block_rd_txf().
      Hence, there has been substantial changes in order to apply
      Daala's 8x8 distortion function.
      The daala distortion function is applied
      after all 4x4 tx blocks in a 8x8 block are encoded (during RDO),
      as in below two cases:
      1) intra/inter sub8x8 predictions and
      2) 4x4 transform with prediction size >= 8.
      
      To enable this experiment, add '--enable-daala-dist' with configure.
      
      TODO: Significant tuning of parameters is required since the function has
      originally came from Daala thus most parameters would not work
      correctly outside Daala.
      The fact that chroma distortion is added to the distortion of AV1's RDO is
      also critical since Daala's distortion function is applied to luma only
      and chroma continues to use MSE.
      
      Change-Id: If35fdd3aec7efe401f351ba1c99891ad57a3d957
      7a428ba2
  2. 18 Jan, 2017 1 commit
    • Alex Converse's avatar
      Add unpoison_partition_ctx experiment · 55c6bdeb
      Alex Converse authored
      At the edges of the picture only a subset of partitions are legal. Add
      new contexts for these borders so they don't distort the probabilities of
      the interior of the image where all partitions are legal.
      
      Only include one context for each block size of each border direction
      because so few blocks fall into these contexts to begin with.
      
      objective-1-fast:
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0294 | -0.0911 | -0.2382 |  -0.0481 | -0.0441 | -0.0450 |    -0.0454
      
      derf144: -0.135
      lowres: -0.124
      midres: -0.076
      hdres: -0.078
      
      Change-Id: I909b98eebb7e49273cde90154c8408febe334158
      55c6bdeb
  3. 12 Jan, 2017 1 commit
    • Yue Chen's avatar
      Add NCOBMC experimental flag · b2d26453
      Yue Chen authored
      NCOBMC (non-causal obmc) allows overlapped prediction that takes
      mvs from blocks at positions with non-causal relation (e.g. at the
      bottom, or to the right) to the current block.
      This experiment will be a sub-experiment of MOTION_VAR, so will only
      be effective when MOTION_VAR is on.
      
      Change-Id: Ie3aa9591e1c15f5cc251664ea3c146210a5010cf
      b2d26453
  4. 09 Jan, 2017 1 commit
  5. 07 Jan, 2017 1 commit
  6. 04 Jan, 2017 1 commit
    • 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
  7. 20 Dec, 2016 1 commit
  8. 19 Dec, 2016 2 commits
    • Yaowu Xu's avatar
      Eanble warning of large stack size · f12d4b0c
      Yaowu Xu authored
      This commit adds a compiler flag to gcc to warn stack size greater
      than 300Kbytes.
      
      Change-Id: I4bd0680de435373fc46bfd8d5b80a610dbaddad8
      f12d4b0c
    • Thomas Davies's avatar
      Turn on delta_q by default. · 0090c8fb
      Thomas Davies authored
      Also make sure that qindex is clipped to the quantizer range.
      
      Change-Id: I3163da4b45e190f9ab34982d1bbbefa5cba7514e
      0090c8fb
  9. 15 Dec, 2016 1 commit
    • Nathan E. Egge's avatar
      Reverting the mandatory use of ans with ext_tile. · e0954ad6
      Nathan E. Egge authored
      This patch reverts ca4782bb: Disable daala_ec when ext_tile is enabled.
      Certain tests in superframe_test.cc were disabled for only ans that
       should have been disabled for both ans and daala_ec.
      This was corrected in d526d0a8 and now the unit tests pass with
       --enable-daala_ec and --enable-ext_tile.
      
      Change-Id: I76244bb4d687040dbd504475c31361933830943d
      e0954ad6
  10. 13 Dec, 2016 2 commits
    • Yaowu Xu's avatar
      Disable daala_ec when ext_tile is enabled. · ca4782bb
      Yaowu Xu authored
      Experiment ext_tile is not compatible with daala_ec yet, this commit
      disables daala_ec and enable ans if ext_tile is enabled.
      
      A follow-up commit should resolve the underline conflicts within
      ext-tile experiment.
      
      BUG=aomedia:116
      
      Change-Id: If60cb170e908a844dc8d22efce82f2a2c01b391b
      ca4782bb
    • Yaowu Xu's avatar
      Fix incompatibility between two experiments · a2cb61b2
      Yaowu Xu authored
      ext_tile is not compatible with reference_buffer, this commit changes
      to disable refrence_buffer when ext_tile is enabled.
      
      BUG=aomedia:114
      
      Change-Id: I6416f4c731bec1c4cfeab3cdb539f359627ed2e2
      a2cb61b2
  11. 12 Dec, 2016 1 commit
    • Debargha Mukherjee's avatar
      Adds two experimental tags · b878d817
      Debargha Mukherjee authored
      entropy_stats: to generate stats of various symbols encoded
      masked_tx: new experiemnt for coding a smaller transform in a
                 prediction block
      
      Change-Id: I48baf0f1c37245c43031a9eda879ef49eee5e76b
      b878d817
  12. 10 Dec, 2016 1 commit
  13. 09 Dec, 2016 1 commit
    • hui su's avatar
      Add intra-interp experiment flag · eda3d764
      hui su authored
      intra-interp experiment allows intra prediction to use different
      interpolation filters. It was part of the ext-intra in the nextgenv2
      branch.
      
      Change-Id: I27ab692494dc79bb92e457dbf9a72988577f1c6d
      eda3d764
  14. 29 Nov, 2016 2 commits
  15. 23 Nov, 2016 1 commit
  16. 21 Nov, 2016 2 commits
    • iole moccagatta's avatar
      Add coef_interleave experiment · f25a4cf9
      iole moccagatta authored
      This commit adds an experiment to interleave the coding of transform
      coefficients from YUV planes.  The experiment can be enabled at config
      time by --enable-coef-interleave.
      
      Change-Id: Ifd92f9c367304bca9732f13fa026eb8996363677
      f25a4cf9
    • Jingning Han's avatar
      Enable ref_mv by default · 125e7293
      Jingning Han authored
      Enable the ref-mv experiment by default.
      
      Change-Id: Icb4f37aab0dc866430569f0ee82805de1498bee3
      125e7293
  17. 09 Nov, 2016 2 commits
  18. 08 Nov, 2016 1 commit
  19. 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
  20. 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
  21. 03 Nov, 2016 2 commits
  22. 30 Oct, 2016 3 commits
    • Deng's avatar
      simp-mv-pred integration with ref-mv · ca8d24d4
      Deng authored
      This commit adds simp-mv-pred experiment. The experiment is to work on
      top of ref-mv experiment to save memory bandwidth and reduce the size
      of line buffer needed in ref-mv experiment.
      
      When compared to ref-mv, this experiment showed:
      low-delay BDR gain: 0.03%
      High-delay BDR gain: 0.01%
      memory/memory bandwidth saving: 40%
      local memory/gate count saving: 20%
      
      Change-Id: Ic4006e041fc58ede411da83d0d730c464ebe1749
      ca8d24d4
    • Alex Converse's avatar
      Add ec_multisymbol for common daala_ec and rans code · aca9feba
      Alex Converse authored
      The new ec_multisymbol experiment supersedes the rans experiment and is
      used for multisymbol features that can be backed by either daala_ec or
      rans.
      
      This experiment is automatically enabled by ec_adapt and will try to
      enable daala_ec or ans (in that order).
      
      Change-Id: Ie75b4002b7a9d7f5f7b4d130c1aacb3dbe97e54f
      aca9feba
    • Alex Converse's avatar
      Handle entropy coder experiment dependencies · 242558a2
      Alex Converse authored
      Change-Id: I854c53d9379f820b5a78fcb53f9ef09bc6f9d9e7
      242558a2
  23. 29 Oct, 2016 2 commits
    • Thomas's avatar
      Add EC_ADAPT experiment for symbol-adaptive entropy coding. · 9ac5508f
      Thomas authored
      This experiment performs symbol-by-symbol statistics
      adaptation for non-binary symbols. It requires DAALA_EC or
      RANS and ANS to be enabled. The adaptation is currently
      based on a simple recursive filter and is taken from
      Daala. It has an adaptation rate dependent on alphabet size,
      taken from Daala. It applies wherever non-binary symbols
      are encoded using Cumulative Probability Functions rather
      than trees.
      
      Where symbols are adapted, forward updates in the compressed
      header are removed.
      
      In the case of RANS coefficient token values are adapted,
      with the exception of the zero token which remains a
      binary symbol. In the case of DAALA_EC other values
      such as inter and intra modes are adapted as CDFs are
      provided in those cases.
      
      The experiment is configured with:
      
      ./configure --enable-experimental --enable-daala-ec --enable-ec-adapt
      
      or
      
      ./configure --enable-experimental --enable-ans --enable-rans \
          --enable-ec-adapt
      
      EC_ADAPT is not currently compatible with tiles.
      
      BDR results on Objective-1-fast give a small loss:
      
      PSNR YCbCr:      0.51%      0.49%      0.48%
      PSNRHVS:      0.50%
      SSIM:      0.50%
      MSSSIM:      0.51%
      CIEDE2000:      0.50%
      
      Change-Id: I3888718e42616f3fd87144de7f125228446ac984
      9ac5508f
    • Deng's avatar
      simp-mv-pred integration with ref-mv to save memory bandwidth and reduce · 9abdec64
      Deng authored
      the line buffer.
      
      As compared to ref-mv, the results of this integration are:
      low-delay BDR gain: 0.03%
      High-delay BDR gain: 0.01%
      memory/memory bandwidth saving: 40%
      local memory/gate count saving: 20%
      
      Change-Id: Ic4006e041fc58ede411da83d0d730c464ebe1749
      9abdec64
  24. 28 Oct, 2016 2 commits
    • Urvang Joshi's avatar
      RANGE_CHECK: "==" || ">" is simply ">=". · cd8ab904
      Urvang Joshi authored
      Also:
      - For unsigned ints, don't check value >= 0 as that is always true.
      - Add "-Wlogical-op" warning flag which would have warned that "logical
        'or' of collectively exhaustive tests is always true" before this
        patch.
      
      Change-Id: Idf3bd312464397f2df19256fc69b22f345dc7753
      cd8ab904
    • 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
  25. 26 Oct, 2016 1 commit
  26. 25 Oct, 2016 1 commit
    • Arild Fuldseth's avatar
      7-bit interpolation filters · 7acfabbc
      Arild Fuldseth authored
      Purpose:
      -Reduce dynamic range of interpolation filter coefficents from 8
      bits to 7 bits.
      -Inner product for 8-bit input data can be stored in a 16-bit signed
      integer.
      
      Impact on compression efficiency:
      -Marginal improvement, typically less than 0.5% BDR.
      
      Change-Id: I58d1408307ae7d2a6f9de8965c5877b258703199
      7acfabbc
  27. 20 Oct, 2016 3 commits