1. 01 Nov, 2017 1 commit
    • Sarah Parker's avatar
      Use tx_size 1 level down for transform type search · 90024e44
      Sarah Parker authored
      This addresses an inconsistency between the set used
      to decode the tx_type in the bitstream and the set used
      for the tx_type search. Previously, the set used to
      read/write the tx_type was based on the smallest tx_size
      in the vartx partitioning, but the search uses a set
      based on the largest possible tx_size. This patch
      changes the tx_type search to use the transform type
      set associated with the tx_size 1 recursive level down from
      the max square tx_size to make the search more consistent
      with the bitstream syntax. If a tx_size is selected for an
      invalid tx_type, DCT_DCT is used for that partition instead.
      
      This patch also adds assertions to all exposed transform
      functions to ensure that no illegal transform type/size
      combinations occur.
      
      This currently gets a 0.1% drop in performance on lowres.
      The drop is due to the reduction of the tx_types available
      for 32x16 and 16x32 transform sizes. Before this patch,
      32x16 and 16x32 transforms were getting assigned a
      set of 12 tx_types, some of which we did not intend to
      support for these sizes.
      
      Change-Id: I44aca4876b261c345623cd04ad6235bca4532701
      90024e44
  2. 31 Oct, 2017 1 commit
    • Debargha Mukherjee's avatar
      Adding a speed feature for tx_size search · 51666866
      Debargha Mukherjee authored
      This patch factors out a function that computes the rd cost for
      a given transform type given the transform partition already
      computed. This is then used to develop a speed feature where the
      transform size search disables trellis optimization but once the
      transform sizes are decided, a final search is conducted with
      optimization turned back on.
      This patch does not change anything in speed 0 yet.
      
      Change-Id: I30acfc5e2dd353d711e5f4260d5b344847b03ade
      51666866
  3. 24 Oct, 2017 4 commits
    • Angie Chiang's avatar
      Make rd/enc optimize_txb uses same fast_mode · 87278292
      Angie Chiang authored
      The performance drop introduced by inconsistency decision between
      optimize_txb in rd loop and final encoding phase.
      
      By making them use the same fast_mode,  will speed up encoder
      without having the performance drop
      
      Change-Id: If25e253cf99b6f17353b4031d03b57da50a1cd95
      87278292
    • Thomas Davies's avatar
      AOM_QM: remove spurious dependence on inter/intra. · dd3cf832
      Thomas Davies authored
      Inter/intra matrices are the same. Reduce the dimensions
      of the various matrices.
      
      Change-Id: Ie5049af9195d9c48b6928143ac04ac0a5058d0d8
      dd3cf832
    • Dake He's avatar
      [eob first] code eob first · a47cd6c0
      Dake He authored
      This commit makes the following changes to level-map coding
      	1. Encode and decode eob position first
      	2. Context derivation for non-zero flags
      	3. Single pass in optimize-txb
      
      lowres 0.33% gain
      
      Change-Id: Ia2b6cfd70425f49ac021454d42d5950bfcfab50a
      a47cd6c0
    • Sebastien Alaiwan's avatar
      Remove compile guards for VAR_TX experiment · fb838778
      Sebastien Alaiwan authored
      This experiment has been adopted.
      
      Change-Id: Ife4c18a59791268b7ac0de5a8a08e762a042cae2
      fb838778
  4. 23 Oct, 2017 1 commit
    • Yaowu Xu's avatar
      Use type with smaller size · abe5215f
      Yaowu Xu authored
      This is to reduce the size of the huge token buffer by at least more
      than 10%.
      
      BUG=aomedia:940
      
      Change-Id: I2ee7f7f62e8e8fb819cf7fba40a7ca7f860acaa4
      abe5215f
  5. 21 Oct, 2017 1 commit
  6. 20 Oct, 2017 1 commit
    • Debargha Mukherjee's avatar
      Remove CONFIG_CB4X4 config flags · 6ea917ec
      Debargha Mukherjee authored
      Since CB4X4 is adopted and without it the codec does not work,
      it is better to remove it and simplify the code.
      
      Change-Id: I51019312846928069727967e3b2bbb60f0fba80d
      6ea917ec
  7. 17 Oct, 2017 1 commit
  8. 16 Oct, 2017 2 commits
  9. 10 Oct, 2017 1 commit
    • Lester Lu's avatar
      lgt-from-pred: transforms based on prediction · 432012f6
      Lester Lu authored
      In this experiment, sharp image discontinuity in the predicted
      block is detected. Based on this discontinuity, we choose
      particular LGTs as row and column transforms.
      
      Bitstream syntax, entropy coding, and RD search for LGT are added.
      One binary symbol is used to signal whether LGT is used. This
      experiment can work independently with the lgt experiment.
      
      lowres: -0.414% for key frames, -0.151% overall
      midres: -0.413% for key frames, -0.161% overall
      
      Change-Id: Iaa2f2c2839c34ca4134fa55e77870dc3f1fa879f
      432012f6
  10. 06 Oct, 2017 1 commit
    • Sebastien Alaiwan's avatar
      Avoid left shift of negative value · 92acb81b
      Sebastien Alaiwan authored
      This is undefined behaviour in C99 and could mislead the optimizer.
      This fixes the ubsan warning, and still generates optimal code
      (i.e an inlined 'sar' instruction).
      
      Change-Id: I36b20a6780532b8c9379b9fbfd970933d56b1bc5
      92acb81b
  11. 05 Oct, 2017 1 commit
  12. 04 Oct, 2017 1 commit
    • Sebastien Alaiwan's avatar
      Remove HBD special cases · 8ce18aea
      Sebastien Alaiwan authored
      xd->bd is available here and is equal to 8 in the low-bitdepth case.
      
      Change-Id: I20760f7ec4279008fdab005345442052b1d10905
      8ce18aea
  13. 02 Oct, 2017 1 commit
  14. 28 Sep, 2017 1 commit
    • Rupert Swarbrick's avatar
      Don't work in TX64X64 blocks on a subsampled chroma plane · 4e7b7d6f
      Rupert Swarbrick authored
      With ext-partition and tx64x64 enabled, the encoder could choose
      TX_64X64 to encode the transform for a subsampled plane of a
      BLOCK_128X128 block. This broke an assumption in the nested loop in
      write_tokens_b and also caused bug 827 (with a rather cryptic
      failure).
      
      This patch changes get_vartx_max_txsize to ensure that the encoder and
      decoder don't think they can use TX_64X64 in this situation. It also
      adds a couple of assertions to the loop mentioned above so that if
      something comes unstuck it'll be much more obvious what went wrong.
      
      BUG=aomedia:827
      
      Change-Id: Ie093f2f20f6242949d68e950c8f95b100867ee17
      4e7b7d6f
  15. 27 Sep, 2017 2 commits
    • Angie Chiang's avatar
      Only use fast optimize_b in rd loop for lv_map · 25645b74
      Angie Chiang authored
      Change-Id: Ia33e9962fce962e4f45281537d3e90b4d88543a5
      25645b74
    • David Barker's avatar
      ext-partition: Don't read not-yet-decoded values · 761b1ac8
      David Barker authored
      When deciding whether the top-right or bottom-left blocks are
      available, we currently always act as if we're using 128x128
      superblocks. This means that, when using 64x64 superblocks,
      we sometimes conclude that blocks are available when they haven't
      been decoded yet!
      
      This typically happens at, for example, mi_row=15, mi_col=16
      (for bottom left), where we're at a 64x64 boundary but not
      a 128x128 boundary.
      
      This patch fixes the issue by checking based on the signalled
      superblock size.
      
      Note: Most of this patch is just threading 'cm' through the
      intra prediction process, so that we have access to cm->sb_size
      in has_top_right() and has_bottom_left()
      
      Change-Id: I126964c510aafffc870e7cd8b3e64a46abb14b3a
      761b1ac8
  16. 26 Sep, 2017 1 commit
  17. 11 Sep, 2017 1 commit
    • Sarah Parker's avatar
      Tokenize and write mrc mask · 99e7daa2
      Sarah Parker authored
      This allows a mask for mrc-tx to be sent in the bitstream for
      inter or intra 32x32 transform blocks. The option to send the mask
      vs build it from the prediction signal is currently controlled with
      a macro. In the future, it is likely the macro will be removed and it
      will be possible for a block to select either method. The mask building
      functions are still placeholders and will be filled in in a followup.
      
      Change-Id: Ie27643ff172cc2b1a9b389fd503fe6bf7c9e21e3
      99e7daa2
  18. 08 Sep, 2017 1 commit
  19. 04 Sep, 2017 1 commit
  20. 31 Aug, 2017 1 commit
    • Luc Trudeau's avatar
      [CFL] Asserts for chroma_sub8x8 · c84c21c4
      Luc Trudeau authored
      When Chroma from Luma is combined with chroma_sub8x8, the prediction
      used for sub8x8 blocks originates from multiple luma blocks. Extra
      asserts are added to validate that the prediction buffer contains all
      the required information.
      
      Change-Id: I305c46ce9b8292697e1d5b181d123461026da11c
      c84c21c4
  21. 28 Aug, 2017 1 commit
    • Luc Trudeau's avatar
      [CFL] Move store flag to CFL_CTX · fcca37a4
      Luc Trudeau authored
      With recent changes, it is now possible to store the storage
      flag inside the CFL_CTX. This simplifies the implementation
      and will allow reuse in the decoder.
      
      This change does not alter the bitstream.
      
      Change-Id: Ibb8aebdd3d06f8765d40248ece8a038892e87032
      fcca37a4
  22. 22 Aug, 2017 1 commit
    • Lester Lu's avatar
      Refactor lgt · 918fe698
      Lester Lu authored
      Change get_lgt in order to integrate a later experiment
      lgt_from_pred with lgt. There are two main changes.
      
      The main purpose for this change is to unify get_fwd_lgt and
      get_inv_lgt functions into a get_lgt function so the lgt basis
      functions can always be selected through the same function in
      both forward and inverse transform paths. The structure of those
      functions will also be consistent with the get_lgt_from_pred
      functions that will be added in the lgt-from-pred experiment.
      
      These changes have no impact on the bitstream.
      
      Change-Id: Ifd3dfc1a9e1a250495830ddbf42c201e80aa913e
      918fe698
  23. 18 Aug, 2017 1 commit
    • Hui Su's avatar
      Remove dpcm-intra experiment · 400bf651
      Hui Su authored
      Coding gain becomes tiny on top of other experiments.
      
      Change-Id: Ia89b1c2a2653f3833dff8ac8bb612eaa3ba18446
      400bf651
  24. 17 Aug, 2017 1 commit
    • Yushin Cho's avatar
      Introduce runtime switch for dist_8x8 · 55104335
      Yushin Cho authored
      Even if 'dist-8x8' is enabled with configure,
      the dist-8x8 is not acutally enabled (so, no change in encoding behaviour)
      until the command line option, '--enable-dist-8x8=1" is used.
      
      The cdef-dist and daala-dist can not be enabled by a command line option yet.
      
      This commit is a part of prep-work to remove DIST_8X8, CDEF_DIST,
      and DAALA_DIST experimental flags.
      
      Change-Id: I5c2df90f837b32f44e756572a19272dfb4c3dff4
      55104335
  25. 16 Aug, 2017 1 commit
  26. 15 Aug, 2017 1 commit
    • Thomas Davies's avatar
      AOM_QM: enable by default · 181fc08f
      Thomas Davies authored
      No change to metrics, as quantization matrices are not used
      unless --enable-qm=1 is set on the command line.
      
      Fix no highbitdepth compilation, and fix compile errors and
      warnings for PVQ and NEW_QUANT experiments.
      
      Change-Id: I49aceb5acf6ca6790c81e760e5b208788f87086d
      181fc08f
  27. 08 Aug, 2017 2 commits
    • Tom Finegan's avatar
      Fix CONFIG_LV_MAP builds with CMake. · e29f1e9a
      Tom Finegan authored
      Add missing source files to the CMake build, and silence a
      warning.
      
      BUG=aomedia:683
      
      Change-Id: I857fce54239d121bc8d47fc805f814890b1b736f
      e29f1e9a
    • Thomas Davies's avatar
      AOM_QM: use SIMD for flat matrices and re-enable tests. · 1870382c
      Thomas Davies authored
      When AOM_QM is enabled, by default quantization matrices are
      flat unless enabled with --enable-qm=1. Re-use existing SIMD
      functions when a flat matrix is used, so that there is no
      speed deficit when AOM_QM is enabled.
      
      SIMD for the non-flat case is TBC.
      
      Change-Id: I1bb8da70d3dd5858dac15099610ddf61662e3d0d
      1870382c
  28. 04 Aug, 2017 2 commits
  29. 03 Aug, 2017 3 commits
    • Yaowu Xu's avatar
      Replace shift with multiply · bc83b642
      Yaowu Xu authored
      To avoid left shift of negative values.
      
      BUG=aomedia:678
      
      Change-Id: I8dacf99f162771a58bef1f839cafd0be9a8f5e86
      bc83b642
    • Sarah Parker's avatar
      Add macros to turn off inter and intra mrc_dct separately · 2e08d96d
      Sarah Parker authored
      This will aid in testing different masking methods for inter
      and intra blocks.
      
      Change-Id: Ic038da77e55405e3303177e6cd260bd5e19311c1
      2e08d96d
    • hui su's avatar
      Calculate coeff token cost from CDF · c0cf71df
      hui su authored
      AWCY results:
      PSNR	PSNR HVS  SSIM	CIEDE 2000
      -0.09	-0.04	  -0.02	  -0.03
      
      On Google testsets:
      lowres  -0.18%
      midres  -0.20%
      
      Above results are obtained with
      --disable-ext-refs --disable-dual-filter --disable-loop-restoration
      --disable-global-motion --disable-warped-motion
      
      Change-Id: Iba58d5e5ec9a65d0afba29609aa2e379a80d7236
      c0cf71df
  30. 02 Aug, 2017 1 commit
    • Angie Chiang's avatar
      Add txmg experiment · ad653a39
      Angie Chiang authored
      This experiment aims at merging lbd/hbd txfms
      
      So far this exp uses hbd transform on lbd path.
      The performances I observed are
      lowres -0.089%
      midres  0.065%
      (negative means performance drop)
      
      Started from here, two main things are needed to be done.
      1) Fix overflow due to quantizer noise
      2) Generate a 16-bit version from the hbd txfm
      
      Change-Id: I35bb1fc0cbb78decad2570ff5826ed665f739752
      ad653a39
  31. 26 Jul, 2017 1 commit