1. 17 Feb, 2017 1 commit
    • 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
  2. 16 Feb, 2017 1 commit
  3. 15 Feb, 2017 1 commit
    • Nathan E. Egge's avatar
      Add flag for RAWBITS to use raw bits with DAALA_EC. · 24f1a904
      Nathan E. Egge authored
      The use of raw bits is now disabled by default and can be turned on with:
       ./configure --enable-experimental --enable-rawbits
      This commit has a negligible impact on rate.
      
      subset1:
      
      master@2017-02-14T18:57:22.282Z -> no_rawbits@2017-02-14T18:57:41.977Z
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0000 | -0.0000 | -0.0000 |  -0.0000 | -0.0000 | -0.0000 |    -0.0000
      
      objective-1-fast:
      
      master@2017-02-14T18:52:48.425Z -> no_rawbits@2017-02-14T18:52:04.489Z
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0001 | -0.0001 | -0.0001 |  -0.0001 | -0.0001 | -0.0001 |    -0.0001
      
      Change-Id: I01e79e9f314565a64b224ca41047f7bd7fe33f70
      24f1a904
  4. 11 Feb, 2017 1 commit
    • Zoe Liu's avatar
      Add a new experiment of REF_ADAPT · b05e5d10
      Zoe Liu authored
      Noticed that some ALTREF_FRAMEs could have used compound modes for its
      prediction but have been labeled as SINGLE_REFERENCE mode in the frame
      header. This experiment is to remove the COMPOUND_REFERENCE mode from
      the frame-level reference mode choices and only leave SINGLE_REFERENCE
      and REFERENCE_MODE_SELECT the two choices in the frame header.
      
      When turning on both ext-refs and ref-adapt, compared against ext-refs
      itself, a small gain is achieved. In PSNR, the bitrate saving gains are
      as follows:
      
      lowres: Avg -0.120%; BDRate -0.128%
      midres: Avg -0.155%; BDRate -0.128%
      
      Change-Id: I2cfff8a6b7eaa65ef863dbdbc4dd086d3b586f8c
      b05e5d10
  5. 10 Feb, 2017 1 commit
  6. 06 Feb, 2017 1 commit
    • Alex Converse's avatar
      ec_multisymbol: Split off new new_tokenset experiment · a9598cd6
      Alex Converse authored
      The new_tokenset experiment replaces the unconstrained tokenset with a
      multisymbol alphabet in an inventive way.
      
      Tested configurations:
      new_tokenset + ec_adapt, new_tokenset, ec_multisymbol
      
      Change-Id: I846ab2e51c2a1dc3f2f9904ed8c47a8e98f853c5
      a9598cd6
  7. 04 Feb, 2017 1 commit
  8. 03 Feb, 2017 2 commits
  9. 02 Feb, 2017 1 commit
  10. 01 Feb, 2017 1 commit
    • Zoe Liu's avatar
      Add the new experiment tag 'tripred' · 70ae8f09
      Zoe Liu authored
      This experiment implements the idea of the uniform tri-prediction,
      which adds a 3rd inter prediction on top of the existing compound
      inter bi-prediction. The final predictor for an inter-coded block is
      the average of the compound bi-predictor and the third predictor,
      which is indentified by a third reference frame and a third motion
      vector.
      
      Change-Id: I7ca8435a441960e7d9702fa09614ed7ae9d0ab02
      70ae8f09
  11. 31 Jan, 2017 1 commit
  12. 26 Jan, 2017 1 commit
  13. 25 Jan, 2017 1 commit
  14. 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
  15. 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
  16. 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
  17. 09 Jan, 2017 1 commit
  18. 07 Jan, 2017 1 commit
  19. 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
  20. 20 Dec, 2016 1 commit
  21. 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
  22. 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
  23. 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
  24. 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
  25. 10 Dec, 2016 1 commit
  26. 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
  27. 29 Nov, 2016 2 commits
  28. 23 Nov, 2016 1 commit
  29. 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
  30. 09 Nov, 2016 2 commits
  31. 08 Nov, 2016 1 commit
  32. 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
  33. 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