1. 17 Oct, 2017 1 commit
  2. 16 Oct, 2017 1 commit
    • Hui Su's avatar
      Remove the intra-interp experiment · 259d4422
      Hui Su authored
      This experiment uses switchable interpolation filter for intra
      prediction. Current gain is too small to be useful for AV1.
      May explore more for AV2 in the future.
      
      Change-Id: I24ae8c75dc71adf6271eabdb68a81b68a0869fa2
      259d4422
  3. 13 Oct, 2017 1 commit
  4. 12 Oct, 2017 1 commit
    • Yue Chen's avatar
      filter_intra: make fi mode index entropy coded · 63ce36fc
      Yue Chen authored
      Make fi mode index entropy coded instead of using raw bits. Mode
      cost estimation in key-frame RDO is updated as well. Modification
      to inter frame RDO is not included in this patch.
      Also key-frame y mode cdf table is re-trained since fi modes are
      attached to DC_PRED
      
      Key frame BDRate:
      -0.399% lowres, -0.339% midres
      
      Change-Id: I9ccf478b0a2e48fb1870fe8451e45e2c858a5f63
      63ce36fc
  5. 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
  6. 02 Oct, 2017 1 commit
  7. 01 Oct, 2017 1 commit
  8. 28 Sep, 2017 1 commit
  9. 16 Sep, 2017 2 commits
  10. 10 Sep, 2017 1 commit
    • Jingning Han's avatar
      Rework base range entropy coding in level map system · 87b01b5a
      Jingning Han authored
      Replace the truncated geometric distribution model with the grouped
      leaves structure for more efficient probability modeling.
      Each group has its own Geometric distribution
      
      This give us 0.2% gain on lowres
      
      Change-Id: If5c73dd429bd5183a8aa81042f8f56937b1d8a6a
      87b01b5a
  11. 08 Sep, 2017 1 commit
    • Hui Su's avatar
      Encoder speedup: buffer TX RD search results · 1ddf2314
      Hui Su authored
      Encoder may do multiple rounds of transform RD search on the same
      residue signals. Save the RD search results so that encoder can
      fetch the results and terminate early if the residue signals have
      been seen before.
      
      The hash functions are ported from the hash_me experiment.
      
      Test results show the encoder speed is increased by 10% on
      average (ranging from 0 to 30%) with all default experiments on.
      
      Change-Id: I47dd63549f67cb43d3d700f6a76ce0992b1ccd0d
      1ddf2314
  12. 07 Sep, 2017 1 commit
  13. 06 Sep, 2017 1 commit
    • Yue Chen's avatar
      Update cdf and mode rate per superblock in RDO · a4245511
      Yue Chen authored
      Update cdf after each superblock being finalized, and re-compute
      symbol costs. Affected symbols include prediction parameters and
      tx type.
      BDRate: -0.119% lowres, -0.092% midres
      
      Change-Id: I724900ac04f725910ed7055a18c2f6a139469b52
      a4245511
  14. 30 Aug, 2017 1 commit
  15. 28 Aug, 2017 2 commits
    • Jingning Han's avatar
      Refactor lv-map coefficient buffers · f5a4d3ba
      Jingning Han authored
      Reduce the encoder memory footprint in lv-map by ~800X.
      
      BUG=aomedia:713
      
      Change-Id: I7aad604cf3186a0d3c6d5b6d1aa9489ac7c36093
      f5a4d3ba
    • 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
  16. 26 Aug, 2017 1 commit
  17. 24 Aug, 2017 1 commit
    • Yue Chen's avatar
      Update cdf and mode rate per superblock in RDO · b855b8e8
      Yue Chen authored
      Update cdf after each superblock being finalized, and re-compute
      symbol costs. Affected symbols include prediction parameters,
      tx type, and new motion vector.
      BDRate: -0.121% lowres, -0.089% midres
      
      Change-Id: I005ef382762d6e3423f933cca0a0b7b40288e8bf
      b855b8e8
  18. 17 Aug, 2017 2 commits
    • David Michael Barr's avatar
      [CFL] Move CFL cost table to struct macroblock · 38e560cc
      David Michael Barr authored
      Also, move body of update_cfl_costs() to av1_fill_mode_rates().
      
      Results on Subset1 (Compared to 1cfe474b with CFL enabled)
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0000 |  0.0000 |  0.0000 |   0.0000 | 0.0000 |  0.0000 |     0.0000
      
      No change in bitstream, for an average encode speed-up of 2.3%.
      
      Change-Id: I3948abcd70cfecad8086edfe4c45552b576ae06f
      38e560cc
    • 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
  19. 10 Aug, 2017 2 commits
    • Jingning Han's avatar
      Refactor lv-map rate cost estimation · dfd72323
      Jingning Han authored
      Use the rate cost to replace the probability fetch. This improves
      the encoding speed of level map by 10%. No coding stats change.
      
      Change-Id: Iab0beac5da291eed50f657549667d4edffb4ead8
      dfd72323
    • Urvang Joshi's avatar
      Remove PALETTE flag · c6300aa1
      Urvang Joshi authored
      This experiment is now adopted as it was cleared by Tapas.
      
      Note: Palette use can still be controlled by command-line option
      "--tune-content=..." in 'aomenc'.
      
      Change-Id: I832f49f20f60c34bdef5b424755849c496687e87
      c6300aa1
  20. 03 Aug, 2017 1 commit
    • 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
  21. 31 Jul, 2017 2 commits
    • Yue Chen's avatar
      Move mode costs that can be updated inside a frame to MACROBLOCK · b23d00a0
      Yue Chen authored
      It is a refactoring patch, which aims to make the code ready for
      implementation of in-frame mode cost update in RDO.
      Also add mode cost update per sb row, but it won't affect coding
      results because cdf update in RDO is not there.
      Mode cost arrays are moved to MACROBLOCK because in multi-thread
      coding, threads share the same AV1_COMP.
      
      This patch does not have impact on coding results.
      
      Change-Id: I2e8f7d7d066b23ebfbfc998269023781f359a6ff
      b23d00a0
    • Yue Chen's avatar
      motion_var: computer motion_mode_cost from cdf · bdc8dab2
      Yue Chen authored
      Initialize mode cost using frame-level cdf.
      Also in rd selection stage, cdf is updated per 64x64.
      Performance gain 0.20%
      
      Still suboptimal since in real bitstream packing, cdf is updated
      per symbol. Per symbol update in RDO is work in progress.
      
      Change-Id: I5062af91d8b00e5bf4c08abd0a7bfb0e5b27a619
      bdc8dab2
  22. 20 Jul, 2017 1 commit
    • Yushin Cho's avatar
      New experiment DIST_8x8 · b7b60c57
      Yushin Cho authored
      A framework for computing a distortion at 8x8 luma block level
      during RDO-based mode decision search. New 8x8 distortion metric can
      be plugged in by way of this tool.
      
      Existing daala_dist now uses this experiment as well.
      Other possible applications that can make use of this experiment would be
      a distortion meric, which should apply at 8x8 pixels such as PSNR-HVS, SSIM, or etc.
      
      A rd_cost for final coding mode decision for a super block is
      computed for a partition size 8x8 or larger. For a block larger than 8x8,
      a distortion of each 8x8 block is independently computed then summed up.
      
      The rd_cost for 8x8 block with new 8x8 distortion metric is computed
      only when the mode decision of its sub8x8 blocks are completed.
      However, MSE distortion metric is used with sub8x8 mode decision. Thus,
      early termination is also determined with the MSE based rd_cost.
      Because the best rd_cost (i.e. the reference rd_cost) during sub8x8 prediction
      or sub8x8 tx is based on new 8x8 distortion while each sub8x8 uses MSE,
      the existing early termination cannot be used (And this can be the one of possible reason
      for the BD-Rate change with this revision).
      
      For a sub8x8 prediction, prediction mode for each sub8x8 block of a 8x8 block is
      decided with existing MSE and then av1_dist_8x8() is applied to the 8x8 pixels.
      (There is also av1_dist_8x8_diff, which can input diff signal directly)
      
      For a sub8x8 tx in a block larger than 8x8, instead of computing MSE distortion for
      each sub8x8 tx block, we wait until all sub8x8 tx blocks are encoded before av1_dist_8x8()
      is applied to 8x8 pixels.
      
      Sub8x8 prediction and transformas were most of tricky parts in this change.
      Two kind of distortions, for a) predicted pixels and b) decoded pixels
      (i.e. predicted + possible reconstructed residue), are always computed during RDO.
      In order to access those two signals a) and b) for a 8x8 block after
      its sub8x8 mode decision is finished, a) and b) need be properly stored for later retrieval.
      
      The CB4X4 makes the task of accessing a) and b) signals for sub8x8 block further difficult,
      since the intermediate data (i.e. a and/or b) for sub8x8 block
      are not easily accessible outside of current partition unless reconstruced
      with decided coding modes.
      
      Change-Id: If60301a890c0674a3de1d8206965bbd6a6495bb7
      b7b60c57
  23. 26 Jun, 2017 1 commit
  24. 15 Jun, 2017 1 commit
    • Urvang Joshi's avatar
      Remove 'rddiv' member from various structs. · 70006e46
      Urvang Joshi authored
      This was initialized from a const and never modified. But was still
      passed around and stored in multiple structs.
      
      Removed these 'rddiv' member variables and now RDOPT() and RDOPT_DBL()
      always use the const RDDIV_BITS directly.
      
      Change-Id: I1a8dfd2c8fa857d466ad1207b4f0dd6ec07eafb8
      70006e46
  25. 08 Jun, 2017 1 commit
    • Yushin Cho's avatar
      Refactor sub8x8 tx size RD for daala-dist · 30a2c5f2
      Yushin Cho authored
      For a tx size RD search with partition size >= 8x8 and tx size < 8x8,
      daala-dist function is applied to the whole partition after all tx blocks are encoded
      instead of each 8x8 sub block of the partition.
      
      Change-Id: I27d9e2960aa641f550096e32ebcdf8dfb4de79a6
      30a2c5f2
  26. 02 Jun, 2017 1 commit
    • Jingning Han's avatar
      Resolve extremely large stack alloc in rdopt · d064cf03
      Jingning Han authored
      Move the large stack allocation from stack initialization to
      dedicated mem space. This resolves the extremely large stack issue
      when ext-partition, motion-var, and high bit-depth are all turned
      on.
      
      BUG=aomedia:415
      
      Change-Id: I85b77bbc6429093fcb0152176d9e237087d6bbd8
      d064cf03
  27. 01 Jun, 2017 1 commit
    • Yushin Cho's avatar
      Fix daala-dist for cb4x4 · 63927c43
      Yushin Cho authored
      The place where av1_daala_dist() is applied for sub8x8 partition is
      moved from sub8x8 mode decision functions to rd_pick_partition().
      
      BD-Rate change by daala-dist with '--disable-var-tx' is:
      (AWCY, objective-1-fast, high delay mode)
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      15.1558 | 12.9585 | 14.4662 |  -3.8651 | -1.7102 | -9.2956 |    10.8686
      
      In MSE probe mode:
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0429 |  0.0435 |  0.1651 |  -0.0415 | 0.0850 |  0.0122 |     0.0546
      
      Change-Id: I3b2ea916d41c48e433eb641adf44552e4725c198
      63927c43
  28. 31 May, 2017 2 commits
  29. 05 May, 2017 1 commit
  30. 27 Apr, 2017 1 commit
    • Luc Trudeau's avatar
      [CFL] Store luma as prediction for chroma · e3980281
      Luc Trudeau authored
      Stores the reconstructed luma pixels for each transform block inside a
      prediction block. Rectangular transform blocks are supported.
      
      As for RDO, after all the modes have been tested for luma, an extra
      encoding is perform in order to store the reconstructed pixel values of
      the best mode. These values are then used for RDO on the chromatic
      planes.
      
      Change-Id: I354d9827e32fd41065f1b2ce02832d943a6fa156
      e3980281
  31. 24 Apr, 2017 1 commit
    • Alex Converse's avatar
      Refactor mv limits. · 0fa0f42c
      Alex Converse authored
      cherry pick of libvpx commit 6554333b59cf773983c7cacbd832d754f75139e8
      
      BUG=aomedia:443
      
      Change-Id: Ifebdc9ef37850508eb4b8e572fd0f6026ab04987
      0fa0f42c
  32. 10 Apr, 2017 1 commit
    • Angie Chiang's avatar
      Use block_idx rather than block_raster_idx · 752ccce7
      Angie Chiang authored
      1) block_raster_idx is actually raster order only when tx_size
      is TX_4x8.
      It's very specific, so we should put it near to the place it's
      actually used.
      
      2) Sync the meaning of block_idx on encoder/decoder sides
      
      Change-Id: I7d37a992cb773503e29f9c0d9d2586e580aa6173
      752ccce7
  33. 27 Mar, 2017 1 commit
    • Angie Chiang's avatar
      Use txb_entropy_ctx to store entropy ctx of lv_map · 74e2307b
      Angie Chiang authored
      1) Add txb_entropy_ctx into MACROBLOCK_PLANE and PICK_MODE_CONTEXT
      
      2) Add av1_get_txb_entropy_context() to compute the entropy context
      
      3) Compute and sore the entropy context before av1_xform_quant()
      return
      
      Change-Id: Ia2170523af3163b9456f7c6a305c1e77ad2b23be
      74e2307b
  34. 21 Mar, 2017 1 commit
    • Angie Chiang's avatar
      Set mbmi_ext's tcoeff to size MAX_SB_SQUARE · c484abe7
      Angie Chiang authored
      This a simple implementation.
      We will use a more precise buffer size for tcoeff once the
      experiment functions correctly.
      
      Change-Id: Ib561974f21ee1b8d72ce407882ea2be3cf0b069f
      c484abe7