1. 12 Apr, 2017 1 commit
    • Timothy B. Terriberry's avatar
      pvq: Remove support for disabling nodesync. · 44bb6d06
      Timothy B. Terriberry authored
      This was broken by commit 1238137c.
      
      When calling the generic coder with a max, it truncates the CDF, but
      then tries to encode/decode with the Q15 entropy coder functions
      with built-in adaptation. That causes assertion failures, because the
      total probability isn't 32768.
      
      We could fix it by re-scaling the CDF, and then doing adaptation
      assuming there was no max, but that requires several special-case
      code paths.
      
      Instead, since non-robust streams were the only thing that still
      required calling the generic coder with a max, and since the gain
      from them is very small (and they require doing more DSP just to be
      able to parse the stream), we simply remove the option and force
      the use of robust streams all the time.
      
      With robust streams enabled, encoder output should not change, and
      all streams should remain decodable without decoder changes.
      
      Thanks to Nathan Egge for reporting the problem.
      
      Change-Id: I6c81481abb796688bf703d68f164d208e6a69f20
      44bb6d06
  2. 05 Apr, 2017 1 commit
  3. 12 Jan, 2017 1 commit
    • Nathan E. Egge's avatar
      Don't include Daala EC headers directly. · cceac33a
      Nathan E. Egge authored
      The generic coder now uses the AOM entropy coder API and no longer
       needs to include the entenc.h and entdec.h headers.
      
      Change-Id: I213acb5b6bd8a3fe60dc096b83d76ae72315e9de
      cceac33a
  4. 09 Jan, 2017 3 commits
    • Nathan E. Egge's avatar
      Use aom_writer with od_encode_cdf_adapt(). · 39051a77
      Nathan E. Egge authored
      Change the od_encode_cdf_adapt() function to take an aom_writer
       struct instead of an od_ec_enc struct.
      Rename od_encode_cdf_adapt() to aom_encode_cdf_adapt().
      
      Change-Id: I00de05b8b7428f67139c234160ab9aaf8900f967
      39051a77
    • Nathan E. Egge's avatar
      Use aom_writer with od_laplace_encode_special(). · 140069eb
      Nathan E. Egge authored
      Change the od_laplace_encode_special() function to take an aom_writer
       struct instead of an od_ec_enc struct.
      Rename od_laplace_encode_special() to aom_laplace_encode_special().
      
      Change-Id: Ieba63c8519d363081124a11e633b437adccfa500
      140069eb
    • Nathan E. Egge's avatar
      Split aom_write_cdf() from aom_write_symbol(). · 87d44dc7
      Nathan E. Egge authored
      Separate the aom_write_cdf() functionality from aom_write_symbol() which
       can optionally adapt the cdf when run with --enable-ec_adapt.
      
      Change-Id: Ibc58690eddb647d69f08d72f0f0712779aab11d1
      87d44dc7
  5. 05 Jan, 2017 4 commits
    • Nathan E. Egge's avatar
      Use aom_reader / aom_writer API to code lsb. · 8fcfcc57
      Nathan E. Egge authored
      The functions generic_encode() and generic_decode() code the lsb values
       as raw bits using the od_ec_enc_bits() and od_ec_dec_bits() functions.
      These code bits in the reverse order as the aom_write_literal() and
       aom_read_literal() functions, so both the encoder and decoder must
       be changed at the same time.
      This commit has no impact on metrics but is a bitstream change.
      
      Change-Id: I83546e2d4b73c28a7f269ddc850742df53d227ce
      8fcfcc57
    • Nathan E. Egge's avatar
      Use aom_writer with generic_encode(). · 760c27f1
      Nathan E. Egge authored
      Change the generic_encode() function to take an aom_writer struct
       instead of an od_ec_enc struct.
      
      Change-Id: Icb447fe5ada27aba45fbaea08b28e9fe42c5a404
      760c27f1
    • Nathan E. Egge's avatar
      Use aom_writer with od_encode_cdf_adapt_q15(). · a653f20d
      Nathan E. Egge authored
      Change the od_encode_cdf_adapt_q15() function to take an aom_writer
       struct instead of an od_ec_enc struct.
      Rename od_encode_cdf_adapt_q15() to aom_encode_cdf_adapt_q15().
      
      Change-Id: I631af7be4b553fbb10a4c72e1958aa48a4c8245a
      a653f20d
    • Nathan E. Egge's avatar
      Rename od_cdf_adapt_q15() to aom_cdf_adapt_q15(). · d6c2dc4f
      Nathan E. Egge authored
      Change-Id: I79addac857ff10c89f2ad79a5d2bf8d4c5e89ef4
      d6c2dc4f
  6. 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
  7. 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