1. 11 Jan, 2017 1 commit
    • David Michael Barr's avatar
      Use stable sort with PVQ. · 8f110572
      David Michael Barr authored
      Cherry-pick Daala 85433214
       Fully order the pvq search candidates
      For portable and stable sorting, break ties.
      Large differences in output were observed between AWCY and an OS X
       machine because of the platform qsort implementation.
      
      Change-Id: I294dd2e167c1e0464c7f61f32d60ab478341446e
      8f110572
  2. 09 Jan, 2017 1 commit
    • 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
  3. 05 Jan, 2017 5 commits
    • Nathan E. Egge's avatar
      Use aom_writer with od_encode_band_pvq_splits(). · 9e96f79a
      Nathan E. Egge authored
      Change the od_encode_band_pvq_splits() and od_encode_pvq_split()
       functions to take an aom_writer struct instead of an od_ec_enc struct.
      Rename od_encode_band_pvq_splits() to aom_encode_band_pvq_splits() and
       od_encode_pvq_split() to aom_encode_pvq_split().
      
      Change-Id: I72e6684e032f4c8f9f9133c6102f870830001712
      9e96f79a
    • Nathan E. Egge's avatar
      Use aom_writer with od_encode_pvq_codeword(). · 13e44fb4
      Nathan E. Egge authored
      Change the od_encode_pvq_codeword() function to take an aom_writer
       struct instead of an od_ec_enc struct.
      Rename od_encode_pvq_codeword() to aom_encode_pvq_codeword().
      
      Change-Id: I1254eca06291740770a4371dc01c78c12e613c3a
      13e44fb4
    • 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 pvq_encode_partition(). · 6b0b4a90
      Nathan E. Egge authored
      Change the pvq_encode_partition() function to take an aom_writer struct
       instead of an od_ec_enc struct.
      
      Change-Id: I459d31c600467958c9a1cbebd632fec05e01f534
      6b0b4a90
    • Nathan E. Egge's avatar
      Replace od_ec_enc with aom_writer in daala_enc_ctx. · 6675be0a
      Nathan E. Egge authored
      Use the generic AOM entropy encoder in the daala_enc_ctx struct.
      This is done in preparation for migrating other entropy coder calls to
       use the more generic entropy coding API.
      
      Change-Id: Id627d12402a397bcb21d48d896c0de249d4d8657
      6675be0a
  4. 14 Dec, 2016 1 commit
    • Yushin Cho's avatar
      Enable the activity masking codes of PVQ · 70669125
      Yushin Cho authored
      Turned off, by default.
      
      TODO: The distortion function of Daala should be added
      to complete the activity masking working.
      
      Note that PVQ QM matrix (i.e. scaler for each band of
      transform block) is calculated in decoder side as exactly same
      way in encoder. In Daala, this matrix is written to bitstream
      and decoder does not generate it.
      
      Activity masking can be turned on by setting below flag as 1:
      
      Change-Id: I44bfb905cb4e0cad6aa830a4c355cd760a993ffe
      70669125
  5. 09 Dec, 2016 1 commit
    • Tristan Matthews's avatar
      pvq: sync with daala · f95a0c14
      Tristan Matthews authored
      This means that all shared PVQ code is now in fixed-point.
      Applies the following patches from daala:
      
      963d3a9 pvq: fix artificial chroma boost with --enable-float-pvq
      7522712 pvq: cosmetics: drop OD_ROUND32 where it is a noop
      3395f61 pvq: in float pvq case, mag must default to 1.0
      29193bb pvq: fix typo
      c774e25 pvq: convert od_init_qm to int
      b5607d6 pvq: use small LUT for integer sqrt((n+3)/2) sqrt((n+2)/2)
      a989c43 pvq: use od_beta_rcp in od_gain_compand
      12c31ea pvq: use od_rcp_beta in od_compute_k
      
      Change-Id: I0ad6a896c9f9fdd752f3b65a0df313efc0db5e63
      f95a0c14
  6. 24 Nov, 2016 1 commit
  7. 08 Nov, 2016 2 commits
    • Yushin Cho's avatar
      Fix the bug that PVQ commit broke dering · 48f84dbd
      Yushin Cho authored
      Since PVQ's max block size equals to the max transform size,
      daala's definition of OD_BSIZE_MAX was changed from 5 down to 4 to
      use AV1's max trasform size 32x32. However, dering also uses
      OD_BSIZE_MAX and assumes its value is 5, which caused dering
      not working.
      
      Change-Id: I9d82bb24adc7d57552a8e0a8a7e798e77d96fd4b
      48f84dbd
    • Yushin Cho's avatar
      Fix the bug that PVQ commit broke dering · 7d208d08
      Yushin Cho authored
      Since PVQ's max block size equals to the max transform size,
      daala's definition of OD_BSIZE_MAX was changed from 5 down to 4 to
      use AV1's max trasform size 32x32. However, dering also uses
      OD_BSIZE_MAX and assumes its value is 5, which caused dering
      not working.
      
      Change-Id: I9d82bb24adc7d57552a8e0a8a7e798e77d96fd4b
      7d208d08
  8. 07 Nov, 2016 3 commits
    • Yaowu Xu's avatar
      Fix compiler warning of out-of-bound array access · f5917820
      Yaowu Xu authored
      Change-Id: I00f147cd372cedc5038708b0f23f6fae68918528
      f5917820
    • Yaowu Xu's avatar
      Resolve merge issues with --enable-pvq · d6ea71cf
      Yaowu Xu authored
      This commit resolves some compiling issues due to merge.
      
      Change-Id: I0eef8aa36c404e185e0b0004948a49307c360d3e
      d6ea71cf
    • 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
  9. 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