1. 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
  2. 03 Nov, 2016 1 commit
    • Angie Chiang's avatar
      Add rd_debug flag · 2b10128a
      Angie Chiang authored
      rd_debug is a debug tool aim at finding discrepancy between rate-distortion
      loop and bitstream packing.
      
      Change-Id: I751c4121516c5e6368668229c77778880a9dcb9d
      2b10128a
  3. 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
  4. 29 Oct, 2016 1 commit
    • 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
  5. 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
  6. 26 Oct, 2016 1 commit
  7. 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
  8. 20 Oct, 2016 3 commits
  9. 19 Oct, 2016 7 commits
    • Arild Fuldseth's avatar
      Support for delta-q at superblock level · 07441165
      Arild Fuldseth authored
      Change-Id: I4128af44776d1f361bddc1fdffb75ed2224dbfa5
      07441165
    • Arild Fuldseth's avatar
      Always send frame size explicitly · 842e9b03
      Arild Fuldseth authored
      This commit changes to send frame size explicitly when
      error_resilient_mode=1. Purpose is to allow parsing of bitstream
      after a packet loss.
      
      Change-Id: I7d1c010a465aa18914762cc1a3e61db377304c08
      842e9b03
    • Alex Converse's avatar
      Partition the ans experiment into 'ans' and 'rans' · ec6fb649
      Alex Converse authored
      The (new) ans experiment replaces the bool coder with uABS bools. The
      'rans' experiment adds multisymbol coding.
      
      This matches the setup in aom/master.
      
      Change-Id: Ida8372ccabf1e1e9afc45fe66362cda35a491222
      ec6fb649
    • Yue Chen's avatar
      Remove OBMC from the experimental configure list · 48877de8
      Yue Chen authored
      It was replaced by MOTION_VAR in commit cb60b185
      
      Change-Id: I7ab625eef4dbae2e5585d9fa3b6873aa78b2c254
      48877de8
    • Urvang Joshi's avatar
      Fix warnings reported by -Wshadow: Part4: main directory · 4145bf05
      Urvang Joshi authored
      Now that all warnings are taken care of, add warning flag -Wshadow to
      configure.
      
      Note: Enabling this flag for C++ generates some useless warnings about
      some function parameters shadowing class member function names. So, only
      enabling this warning for C code.
      
      Cherry-picked from aomedia/master: b96cbc44
      
      Change-Id: I3922dea2e6976b16519c4aa4d1bd395c198134f1
      4145bf05
    • Michael Bebenita's avatar
      Bit accounting. · 6048d052
      Michael Bebenita authored
      This patch adds bit account infrastructure to the bit reader API.
      When configured with --enable-accounting, every bit reader API
      function records the number of bits necessary to decoding a symbol.
      Accounting symbol entries are collected in global accounting data
      structure, that can be used to understand exactly where bits are
      spent (http://aomanalyzer.org). The data structure is cleared and
      reused each frame to reduce memory usage. When configured without
      --enable-accounting, bit accounting does not incur any runtime
      overhead.
      
      All aom_read_xxx functions now have an additional string parameter
      that specifies the symbol name. By default, the ACCT_STR macro is
      used (which expands to __func__). For more precise accounting,
      these should be replaced with more descriptive names.
      
      Change-Id: Ia2e1343cb842c9391b12b77272587dfbe307a56d
      6048d052
    • Urvang Joshi's avatar
      Code cleanup: mainly rd_pick_partition and methods called from there. · 52648448
      Urvang Joshi authored
      - Const correctness
      - Refactoring
      - Make variables local when possible etc
      - Remove -Wcast-qual to allow explicitly casting away const.
      
      Cherry-picked from aomedia/master: c27fcccc
      And then a number of more const correctness changes to make sure other
      experiments build OK.
      
      Change-Id: I77c18d99d21218fbdc9b186d7ed3792dc401a0a0
      52648448
  10. 18 Oct, 2016 3 commits
  11. 17 Oct, 2016 1 commit
    • hui su's avatar
      Add filter_intra experiment flag · ffcf4fb7
      hui su authored
      Will break ext-intra into 2 experiments: ext-intra and filter-intra.
      
      Change-Id: Ibf66e9b9d9307fd58a703eada9569b74d171434b
      ffcf4fb7
  12. 14 Oct, 2016 2 commits
  13. 13 Oct, 2016 1 commit
    • Yue Chen's avatar
      Renamings for OBMC experiment · cb60b185
      Yue Chen authored
      To get ready for pulling AV1 to nextgenv2
      Replace the experimental flag by MOTION_VAR. Rename major variables.
      
      Change-Id: If6cf4f37b9319c46d8f90df551cc7295d66ca205
      cb60b185
  14. 12 Oct, 2016 1 commit
    • Urvang Joshi's avatar
      Add compiler flag -Wsign-compare · d3a7576f
      Urvang Joshi authored
      Also, fix the warnings generated by this flag.
      
      Conflicts:
      	examples/aom_cx_set_ref.c
      
      Change-Id: I0451e119c52000aa7c1c55027d53f1da5a02a11f
      d3a7576f
  15. 06 Oct, 2016 1 commit
    • Johann's avatar
      Remove -fno-strict-aliasing flag · 9ed9ceda
      Johann authored
      The referenced bug was fixed by saving neon registers. That this had any
      effect was coincidental.
      
      Both chromium and Android build with clang and neither uses this flag.
      
      Change-Id: I470247d6fd9226fc207b42a187105581a94badc3
      (cherry picked from commit fad70a358b9ab832f5f2ece1609936b80b649c71)
      9ed9ceda
  16. 01 Sep, 2016 3 commits
    • Urvang Joshi's avatar
      Add ALT_INTRA experiment. · 340593e5
      Urvang Joshi authored
      When the experiment is ON, we use Paeth predictor instead of TM
      predictor.
      
      For derf set, this gives about 0.09% improvement overall, and 0.55%
      improvement if all frames are forced to be intra-only.
      
      Also, if the EXT_INTRA experiment is also on, the improvement overall
      is 0.056%, and improvement if all frames are forced to be intra-only is
      0.465%.
      
      Change-Id: Id74e107ede70a8d2107fa14fcb3f44b23a437274
      340593e5
    • Yaowu Xu's avatar
      Port renaming changes from AOMedia · f883b42c
      Yaowu Xu authored
      Cherry-Picked the following commits:
      0defd8f2 Changed "WebM" to "AOMedia" & "webm" to "aomedia"
      54e66767 Replace "VPx" by "AVx"
      5082a369 Change "Vpx" to "Avx"
      7df44f17 Replace "Vp9" w/ "Av1"
      967f722f Remove kVp9CodecId
      828f30ce Change "Vp8" to "AOM"
      030b5ffc AUTHORS regenerated
      2524caee Add ref-mv experimental flag
      016762be Change copyright notice to AOMedia form
      81e55269 Replace vp9 w/ av1
      9b94565b Add missing files
      fa8ca9f2 Change "vp9" to "av1"
      ec838b76  Convert "vp8" to "aom"
      80edfa01 Change "VP9" to "AV1"
      d1a11fb9 Change "vp8" to "aom"
      7b582513 Point to WebM test data
      dd1a5c8d Replace "VP8" with "AOM"
      ff00fc0f Change "VPX" to "AOM"
      01dee0bb Change "vp10" to "av1" in source code
      cebe6f0c Convert "vpx" to "aom"
      17b05679 rename vp10*.mk to av1_*.mk
      fe5f8a8a rename files vp10_* to av1_*
      
      Change-Id: I6fc3d18eb11fc171e46140c836ad5339cf6c9419
      f883b42c
    • Yaowu Xu's avatar
      Port folder renaming changes from AOM · c27fc14b
      Yaowu Xu authored
      Manually cherry-picked commits:
      ceef0583 libvpx->libaom part2
      3d26d916 libvpx -> libaom
      cfea7dd7 vp10/ -> av1/
      3a8eff73 Fix a build issue for a test
      bf4202ed Rename vpx to aom
      
      Change-Id: I1b0eb5a40796e3aaf41c58984b4229a439a597dc
      c27fc14b
  17. 18 Aug, 2016 1 commit
  18. 16 Aug, 2016 2 commits
    • Yaowu Xu's avatar
      Port dering experiment from aom · 253c001f
      Yaowu Xu authored
      Mannually cherry-picked:
      15791332 Use OD_DIVU for small divisions in temporal_filter.
      03122298 Replace divides by small values with multiplies.
      9c48eec7 Removing divisions from od_dir_find8()
      0950ed82 Merge "Port active map / cyclic refresh fixes to vp10."
      efefdad7 Port active map / cyclic refresh fixes to vp10.
      1eaf748c Port switch to 9-bit rate cost to aom.
      0b1606e7 Only build deringing code when --enable-dering.
      e2511e15 Deringing cleanup: don't hardcode the number of levels
      8fe5c5d6 Rename dering_in to od_dering_in to sync with Daala
      4eb1380d Makes second filters for 45-degree directions horizontal
      7f4c3f58 Removes the superblock variance contribution to the threshold
      3dc56f93 Simplifying arithmetic by using multiply+shift
      cf2aaba9 Return 0 explicitly for OD_ILOG(0).
      49ca22aa Use the Daala implementation of OD_ILOG().
      85187243 Fix compiler warning in od_dering.c.
      485d6a69 Prevent multiple inclusion of odintrin.h.
      51b7a998 Adds the Daala deringing filter as experimental
      
      Note that a few of the changes were already in libvpx codebse.
      
      Change-Id: I1c32ee7694e5ad22c98b06ff97737cd792cd88ae
      253c001f
    • Yaowu Xu's avatar
      Port commits related to clpf and qm experiments · 0818a7c8
      Yaowu Xu authored
      Manually cherry-picked following commits from AOMedia git repository:
      bb2727c2 Sort includess for "clpf.h"
      c297fd00 Add quantisation matrix range parameters.
      0527894f Add encoder option and signaling for quant matrix control.
      4106232b Turn off trellis coding for quantization matrices.
      4017fca3 Modify tests to allow quantization matrices.
      1c122c24 Add quant and dequant functions for new quant matrices.
      95a89994 Enable CLPF
      f72782bb Fix a build issue
      73bae509 Add quantisation matrices and selection functions
      33208d20 Added support for constrained low pass filter (CLPF)
      
      Change-Id: I60fc1ee1ac40e6b9d1d00affd97547ee5d5dd6be
      0818a7c8
  19. 11 Aug, 2016 1 commit
    • Angie Chiang's avatar
      Bitstream debug tool · 4de81ee1
      Angie Chiang authored
      This is a debug tool used to detect bitstream error. On encoder side, it pushes
      each bit and probability into a queue before the bit is written into the
      Arithmetic coder. On decoder side, whenever a bit is read out from the
      Arithmetic coder, it pops up the reference bit and probability from the queue as
      well. If the two results do not match, this debug tool will report an error.
      This tool can be used to pin down the bitstream error precisely. By combining
      gdb's backtrace method, we can detect which module causes the bitstream error.
      
      Change-Id: I133a4371fafdd48c488f2ca47f9e395676c401f2
      4de81ee1
  20. 10 Aug, 2016 1 commit
    • James Zern's avatar
      remove SVC · cc73e1fc
      James Zern authored
      spatial/temporal scalability are not supported in VP10 currently.
      + remove the unused vp10/encoder/skin_detection.[hc]
      
      this also enables DatarateTestLarge for VP10 which passes with no
      experiments enabled. these were removed previously when only the SVC
      tests should have been:
      134710af Disable tests not applicable to VP10
      
      Change-Id: I9ee7a0dd5ad3d8cc1e8fd5f0a90260fa43da387c
      cc73e1fc
  21. 06 Aug, 2016 1 commit
    • James Zern's avatar
      configure: test for -Wfloat-conversion · a9d98483
      James Zern authored
      supported by clang, gcc-4.9+
      
      Change-Id: I893766de7307fef9a8b68c0cfae137c9d3b0dbe8
      (cherry picked from commit 889ed5b158fc280927f2de9172d48245c3b735a7)
      a9d98483
  22. 03 Aug, 2016 1 commit
  23. 28 Jul, 2016 1 commit