1. 09 Nov, 2016 1 commit
    • Alex Converse's avatar
      Fix rans ec_multisymbol merge issues. · 1e4e29f7
      Alex Converse authored
      The rans experiment is dead. The ans experiment with the ec_multisymbol
      experiment also turned on takes its place.
      
      Change-Id: Ie9f30ec7cf73aae6b2ea580a7b1f208485a8a7a7
      1e4e29f7
  2. 02 Nov, 2016 1 commit
  3. 30 Oct, 2016 3 commits
  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. 24 Oct, 2016 1 commit
    • Nathan E. Egge's avatar
      Centralize EC_MULTISYMBOL error checking. · 04d0d39b
      Nathan E. Egge authored
      The EC_ADAPT experiment cannot work unless EC_MULTISYMBOL is also
       enabled.
      This patch replaces all individual checks with a centralized check in
       both the bitreader.h and bitwriter.h.
      
      Change-Id: I418852d95c5012cc074ed65cd24997e08bc2aadd
      04d0d39b
  6. 21 Oct, 2016 1 commit
  7. 20 Oct, 2016 1 commit
    • Alex Converse's avatar
      Add ec_multisymbol for common daala_ec and rans code · f2753c34
      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
      f2753c34
  8. 19 Oct, 2016 3 commits
    • 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
    • Nathan E. Egge's avatar
      Change return type of tell and tell_frac to uint32_t. · b244f396
      Nathan E. Egge authored
      The bit accounting functions aom_reader_tell() and aom_reader_tell_frac()
       return the number of bits and 1/8th bits respectively.
      This patch changes the return type from ptrdiff_t which is signed to
       uint32_t which is unsigned.
      The size_t type is not used since we only care about the number of bits
       or 1/8 bits per entropy coder context and we don't expect to code more
       than 512 megabits per tile.
      
      Change-Id: I84a119d1f52829dcbdb66a92656eacca06e42b11
      b244f396
    • 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
  9. 18 Oct, 2016 3 commits
  10. 14 Oct, 2016 3 commits
    • Nathan E. Egge's avatar
      Add API for writing trees using a CDF. · 44460148
      Nathan E. Egge authored
      Added aom_write_tree_cdf() and aom_read_tree_cdf() function calls to
       bitwriter.h and bitreader.h respectively.
      These calls take a multisymbol CDF and an index and directly encode the
       symbol using the enabled entropy coder.
      Currently only the daala entropy encoder supports this (enabled with
       --enable-daala_ec) and a compile error is thrown otherwise.
      
      Change-Id: I2fa1e87af4352c94384e0cfdbfd170ac99cf3705
      44460148
    • Nathan E. Egge's avatar
      Use Daala entropy coder to code trees. · 43acafde
      Nathan E. Egge authored
      When building with --enable-daala_ec, calls to aom_write_tree() and
       aom_read_tree() will convert a aom_tree_index structure with associated
       aom_prob probabilities into a CDF on the fly for use with the
       od_ec_encode_cdf_q15().
      The number of symbols in the CDF is capped at 16, and trees that contain
       more than 16 leaf nodes are handled by splitting the most likely, e.g.,
       highest probability symbols, first and coding multiple symbols if
       necessary.
      
      ntt-short-1:
      
               MEDIUM (%) HIGH (%)
          PSNR 0.000227   0.000213
       PSNRHVS 0.000215   0.000205
          SSIM 0.000229   0.000209
      FASTSSIM 0.000229   0.000214
      
      subset1:
      
                RATE (%)  DSNR (dB)
          PSNR -0.00026   0.00002
       PSNRHVS -0.00026   0.00002
          SSIM -0.00026   0.00001
      FASTSSIM -0.00026   0.00001
      
      Change-Id: Icb1a8cb854fd81fdd88fbe4bc6761c7eb4757dfe
      43acafde
    • Nathan E. Egge's avatar
      Use Daala entropy coder to code bits. · 8043cc40
      Nathan E. Egge authored
      When building with --enable-daala_ec, calls to aom_write() and aom_read()
       use the daala entropy coder to write and read bits.
      When the probability is exactly 0.5 (128), then raw bits are used.
      
      ntt-short-1:
      
                MEDIUM (%) HIGH (%)
          PSNR -0.027556  -0.020114
       PSNRHVS -0.027401  -0.020169
          SSIM -0.027587  -0.020151
      FASTSSIM -0.027592  -0.020102
      
      subset1:
      
               RATE (%)  DSNR (dB)
          PSNR 0.03296  -0.00210
       PSNRHVS 0.03537  -0.00281
          SSIM 0.03299  -0.00161
      FASTSSIM 0.03458  -0.00111
      
      Change-Id: I48ad8eb40fc895d62d6e241ea8abc02820d573f7
      8043cc40
  11. 13 Oct, 2016 1 commit
  12. 11 Oct, 2016 1 commit
    • Nathan E. Egge's avatar
      Move tree writing code into bitwriter.h. · eeedc633
      Nathan E. Egge authored
      Rename av1_write_tree() to aom_write_tree() and move it into bitwriter.h
       to match aom_read_tree() in bitreader.h.
      
      Manually cherry-picked from aom/master:
      33a143fa
      
      Change-Id: I6c686cdd3e0f179d7e95c5bc6984558b62d46d67
      eeedc633
  13. 04 Oct, 2016 1 commit
    • Thomas's avatar
      Add EC_ADAPT experiment for symbol-adaptive entropy coding. · b0112dfd
      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
      b0112dfd
  14. 28 Sep, 2016 2 commits
  15. 26 Sep, 2016 1 commit
  16. 22 Sep, 2016 1 commit
    • Angie Chiang's avatar
      Add bitstream debug tool · 7a3ceab0
      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 out 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.
      
      This tool is moved from following two CLs of nextgenv2
      https://chromium-review.googlesource.com/#/c/366432/
      https://chromium-review.googlesource.com/#/c/380300/
      
      Change-Id: Iec6d4c2e3851b8ac1db35776fd7a216a9230a983
      7a3ceab0
  17. 17 Sep, 2016 1 commit
  18. 07 Sep, 2016 2 commits
    • Nathan E. Egge's avatar
      Change return type of tell and tell_frac to uint32_t. · c1a87fad
      Nathan E. Egge authored
      The bit accounting functions aom_reader_tell() and aom_reader_tell_frac()
       return the number of bits and 1/8th bits respectively.
      This patch changes the return type from ptrdiff_t which is signed to
       uint32_t which is unsigned.
      The size_t type is not used since we only care about the number of bits
       or 1/8 bits per entropy coder context and we don't expect to code more
       than 512 megabits per tile.
      
      Change-Id: I84a119d1f52829dcbdb66a92656eacca06e42b11
      c1a87fad
    • Michael Bebenita's avatar
      Bit accounting. · e6b12944
      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
      e6b12944
  19. 06 Sep, 2016 1 commit
  20. 02 Sep, 2016 1 commit
  21. 01 Sep, 2016 3 commits
  22. 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
  23. 10 Aug, 2016 1 commit
  24. 22 Mar, 2016 1 commit
  25. 28 Jan, 2016 1 commit
  26. 19 Nov, 2015 1 commit
  27. 21 Jul, 2015 2 commits
    • Yaowu Xu's avatar
      vpx_dsp/prob.h: vp9_ -> vpx_ · 70ad6680
      Yaowu Xu authored
      change prefix vp9_ to vpx_ for non codec specific functions and data
      structures.
      
      Change-Id: I97c7e6422eceea99212b93f4942bc2187763a07c
      70ad6680
    • Yaowu Xu's avatar
      vpx_dsp/bitreader.h: vp9_->vpx_ · bf82514b
      Yaowu Xu authored
      Replace vp9_ in names to vpx_ as they are not codec specific.
      
      Change-Id: I2e583aa63dee769353ada4b42417aa15c4074ebb
      bf82514b