1. 24 Jul, 2017 2 commits
    • Urvang Joshi's avatar
      filter-intra: Support rectangular blocks. · 6a99691d
      Urvang Joshi authored
      - Use 'tx_size' in function signatures.
      - filter_intra_taps_3 and filter_intra_taps_4 updated to support
        TX_SIZES_ALL (thanks to yuec@)
      
      With these changes, filter-intra works correctly with rect-intra-pred.
      So, we remove the temporary workaround for this.
      
      Change-Id: Ide0f593419c21a74c08c61859f8dad918ca169fa
      6a99691d
    • Urvang Joshi's avatar
      Workaround for filter-intra + rect-intra-pred mismatch. · d0b7cf94
      Urvang Joshi authored
      This workaround is temporary, until filter-intra can work with rectangular
      blocks.
      
      Tested OK:
      make clean; ../../configure --disable-install-docs --enable-unit-tests
      --enable-debug --enable-aom-highbitdepth --enable-experimental
      --enable-adapt-scan --enable-dual-filter --enable-ext-inter
      --enable-ext-intra --enable-ext-refs --enable-ext-tx
      --enable-filter-intra --enable-loop-restoration --enable-rect-tx
      --enable-compound-segment --enable-interintra --enable-wedge
      make -j
      ./test_libaom
      
      Change-Id: I4554d1f25de9448b22465e93a7616df0c206e298
      d0b7cf94
  2. 21 Jul, 2017 2 commits
  3. 20 Jul, 2017 4 commits
    • Cheng Chen's avatar
      Directional deblocking filter · 9050c9da
      Cheng Chen authored
      New deblocking filter that smooths block boundaries in an estimated
      direction of object orientation.
      
      1. Select the proper direction for deblocking filtering.
      Compute abs gradient line by line for the block.
      Select the direction with least sum of abs gradient.
      
      2. Apply deblocking filtering for a block along this direction.
      Apply directional filtering for Y, U, V planes.
      
      Coding gain on Google test set:
      
      %	  	avg_psnr   ovr_psnr  ssim
      lowres  	-0.129 	  -0.136    -0.277
      midres  	-0.103    -0.127    -0.188
      hdres	  	-0.159    -0.158    -0.173
      screen_content  -0.408    -0.397    -0.695
      
      Change-Id: Ie8646dcc163ace5d8faf5e502b38342d885efc30
      9050c9da
    • Yunqing Wang's avatar
      Make ext_tile compatible with reference_buffer · c2502b55
      Yunqing Wang authored
      In ext_tile experiment, when cm->large_scale_tile is 1, prev_frame_id can be
      the same as current_frame_id, which is prohibited in reference_buffer
      experiment and causes "CORRUPT_FRAME" error to be reported.
      
      In this patch, enable/disable reference_buffer according to large_scale_tile
      value, and thus make these 2 experiments compatible.
      
      Change-Id: If64943acb91e7a7b859db4e2ac62581e9b53ef85
      c2502b55
    • 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
    • Zoe Liu's avatar
      Add a new experiment "altref2" · 68ad7a6e
      Zoe Liu authored
      This experiment is to add ALTREF2_FRAME to allow 2 altref backward
      predictions. Each video frame will then have up to 7 reference frames
      to choose from:
      
      (1) 4 forward predictive references, namely
      LAST_FRAME, LAST2_FRAME, LAST3_FRAME, and GOLDEN_FRAME; and
      (2) 3 backward predictive references, namely
      BWDREF_FRAME, ALTREF2_FRAME, and ALTREF_FRAME.
      
      The tool of "altref2" is built on top of the "ext_refs" experiment.
      
      Change-Id: Idbb0bb53b43c5c2c7baf4959331fc5a31c77a118
      68ad7a6e
  4. 18 Jul, 2017 2 commits
    • Ryan Lei's avatar
      enable parallel_deblocking experiment by default · 2c6ca5fe
      Ryan Lei authored
      this change enables parallel_deblocking by default after it has been
      officially adopted. the parallel_deblocking_15taps experiment is merged
      into the parallel_deblocking experiment so it is removed to clean up
      the code. internal compile flags are added to disable 15 tap for both
      luma and chroma plane for future experiment purpose. the internal
      compile flags are disabled by default.
      
      Change-Id: I1668fd2cb7676d756c52263d6993241618d33ee6
      2c6ca5fe
    • Angie Chiang's avatar
      Add flag inter_stats_only · 08a22a63
      Angie Chiang authored
      This flag will allow us to skip key frame's stats
      Therefore, we can test inter frame performance when frame number
      is small. The inter frame's stats won't get underwhelmed because
      of key frame's stats
      
      Change-Id: I9eaa8e5775fb2e740406cfa4b4f64f96f180d9db
      08a22a63
  5. 14 Jul, 2017 1 commit
    • Yunqing Wang's avatar
      Make EXT_TILE compatible with TILE_GROUPS · eeb08a9b
      Yunqing Wang authored
      Added a 1-bit flag 'large_scale_tile'. If it is 0 that is the default value,
      use normal tile coding in TILE_GROUPS. If it is 1, use large-scale tile
      coding in EXT_TILE.
      
      At large_scale_tile=1 case, if single-tile-decoding is required, then the
      loopfilter is disabled.
      
      Related API and unit tests were modified.
      
      Change-Id: I3ba12dc3d80ccf1ab21543ab3b16c02282c34e3b
      eeb08a9b
  6. 13 Jul, 2017 1 commit
  7. 12 Jul, 2017 4 commits
    • Rupert Swarbrick's avatar
      ext-partition-types: Add 4:1 partitions · 93c39e91
      Rupert Swarbrick authored
      This patch adds support for 4:1 rectangular blocks to various common
      data arrays, and adds new partition types to the EXT_PARTITION_TYPES
      experiment which will use them.
      
      This patch has the following restrictions, which can be lifted in
      future patches:
      
        * ext-partition-types is incompatible with fp_mb_stats and supertx
          for the moment
      
        * Currently only 32x32 superblocks can use the new partition types
      
      There's a slightly odd restriction about when we allow
      PARTITION_HORZ_4 or PARTITION_VERT_4. Since these both live in the
      EXT_PARTITION_TYPES CDF, read_partition() can only return them if both
      has_rows and has_cols is true. This means that at least half of the
      width and height of the block must be visible. It might be nice to
      relax that restriction but that would imply a change to how we encode
      partition types, which seems already to be in a state of flux, so
      maybe it's better to wait until that has settled down.
      
      Change-Id: Id7fc3fd0f762f35f63b3d3e3bf4e07c245c7b4fa
      93c39e91
    • Monty Montgomery's avatar
      Add CONFIG_DAALA_DCT4 experiment. · 02078a38
      Monty Montgomery authored
      This experiment replaces the 4-point Type-II scaled-output vp9 DCT
       transform with the 4-point Type-II orthonormal Daala DCT transform.
      Right now the CONFIG_DAALA_DCT4 experiment depends on CONFIG_DCT_ONLY
       as it does not add an orthonormal 4-point DST.
      
      subset-1:
      
      monty-baseline-dctonly-squaretx-subset1 ->
        monty-dct4-dctonly-squaretx-subset1-rerun
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0055 | -0.0132 | -0.0405 |   0.0261 | 0.0005 |  0.0246 |     0.0226
      
      objective-1-fast:
      
      monty-baseline-dctonly-squaretx-o1f ->
        monty-dct4-dctonly-squaretx-o1f
      
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0215 | -0.1573 |     N/A |  -0.0131 | -0.0347 | -0.0390 |    -0.1121
      
      Change-Id: Idef8f6e5525037d5bbb2d0927675c21d1922d69a
      02078a38
    • Yushin Cho's avatar
      Fix pvq for cb4x4 and maintain its configure · cd4f4a2a
      Yushin Cho authored
      Recently, sub8x8 inter mode decition functions have been
      removed from the av1 codebase, so codebase does not allow
      disabling cb4x4 anymore.
      
      This makes pvq not working simply crashing
      because we had disabled cb4x4 if pvq is enabled.
      Hence, pvq has been fixed for cb4x4.
      
      Also, if pvq is enabled, disable lgt and highbitdepth in the configure.
      
      Change-Id: I2cb675c0dbc12bce60ed6a66c34ea3e907cc35b3
      cd4f4a2a
    • Zoe Liu's avatar
      Further work on ext-comp-refs for ref frame coding · fcf5fa27
      Zoe Liu authored
      (1) Work with var-refs to remove redundant bits in ref frame
          coding;
      (2) Add a new uni-directional compound reference pair:
          (LAST_FRAME, LAST3_FRAME);
      (3) Redesign the contexts for encoding uni-directional reference frame
          pairs;
      (4) Use aom_entropy_optimizer to collect stats for all the default
          probability setups related to the coding of reference frames.
      
      Compared against the baseline (default enabled tools excluding ext-tx
      and global-motion for encoder speed concern) with one-sided-compound,
      the coding gain of ext-comp-refs + var-refs - one-sided-compound is:
      
      lowres: avg_psnr -0.385%; ovr_psnr -0.378% ssim -0.344%
      midres: avg_psnr -0.466%; ovr_psnr -0.447% ssim -0.513%
      
      AWCY - High Latency:
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.2758 | -0.1526 | -0.0965 |  -0.2581 | -0.2492 | -0.2534 |    -0.2118
      
      AWCY - Low Latency:
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -1.0467 | -1.4500 | -0.9732 |  -0.9928 | -1.0407 | -1.0180 |    -1.0049
      
      Compared against the baseline (default enabled tools excluding ext-tx
      and global-motion for encoder speed concern) without
      one-sided-compound, the coding gain of
      ext-comp-refs + var-refs - one-sided-compound is:
      
      lowres: avg_psnr -0.875%; ovr_psnr -0.877% ssim -0.895%
      midres: avg_psnr -0.824%; ovr_psnr -0.802% ssim -0.843%
      
      Change-Id: I8de774c9a74c20632ea93ccb0c17779fa94431cb
      fcf5fa27
  8. 11 Jul, 2017 2 commits
    • Monty Montgomery's avatar
      Add CONFIG_DCT_ONLY experiment. · cb55dad1
      Monty Montgomery authored
      Building with --enable-dct_only will force the encoder to use only
       tx_type == DCT_DCT.
      This experiment gives a loss and is only added for testing.
      
      subset-1:
      
      master@2017-02-21T01:23:58.825Z ->
       master-dct_only@2017-02-21T02:57:28.585Z
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      2.5467 |  1.0524 |  0.9171 |   1.8849 | 2.6626 |  2.4995 |     1.8402
      
      objective-1-fast:
      
      master@2017-02-21T01:47:43.790Z ->
       master-dct_only@2017-02-20T16:54:03.578Z
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      1.6625 |  0.3948 |  0.3368 |   1.5268 | 1.7142 |  1.7097 |     1.0743
      
      Change-Id: I19b738f3d1a450bc50422149ac42bc184bfae08a
      cb55dad1
    • Nathan E. Egge's avatar
      Remove the EC_ADAPT experimental flags. · 6bdc40f1
      Nathan E. Egge authored
      Removing these flags make the EC_ADAPT experiment an integral part of
       the draft AV1 bitstream definition
      This commit has no effect on metrics.
      
      Change-Id: Ice78520935e8bfa9d25cf4b8384a1b872069d09c
      6bdc40f1
  9. 07 Jul, 2017 1 commit
    • Nathan E. Egge's avatar
      Add VAR_TX_NO_TX_MODE experiment. · a33304f0
      Nathan E. Egge authored
      This experiment removes the tx_mode flag from the uncompressed frame
       header and instead always uses a constant value.
      
      objective-1-fast:
      
      master@2017-06-29T00:51:22.142Z -> no_tx_mode@2017-06-29T01:09:32.392Z
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0103 |  0.0183 | -0.0076 |  -0.0103 | -0.0052 | -0.0208 |     0.0004
      
      Change-Id: I9d49c4d99ed102e52c86e339f20623063886f49d
      a33304f0
  10. 04 Jul, 2017 1 commit
  11. 30 Jun, 2017 3 commits
    • Zoe Liu's avatar
      Add a new coding tool of gf_groups · 5caf2c49
      Zoe Liu authored
      This coding tool is targeted at tuning the encoder decisions on
      altrefs, including the temporal filtering strength applied to the
      altrefs, the structure of the gf (Golden Frame) groups, etc.
      
      Change-Id: Ifd0ff1c35c23ecb005192b874a8d4e61a8ad6bd3
      5caf2c49
    • James Zern's avatar
      Add support for Visual Studio 2017 · ff5b2f43
      James Zern authored
      ported from libvpx:
      bcfd9c975 Add support for Visual Studio 2017
      
      Change-Id: I86c8848ce6626fa218a38bfbd3e39abb60420218
      ff5b2f43
    • Sebastien Alaiwan's avatar
      Always use the 16-bit coding path · 3d264da2
      Sebastien Alaiwan authored
      The encoder and decoder will now use the 16-bit (high-bitdepth)
      coding path, regardless of the encoding profile.
      
      This is a step towards the removal of the 8-bit (low-bitdepth)
      coding path (which remains compile-checked at the moment).
      
      BUG=aomedia:39
      
      Change-Id: I6f8e8f1ce7a3bf1d3da7fda8461b1214ef579c64
      3d264da2
  12. 29 Jun, 2017 1 commit
    • Yue Chen's avatar
      AV1 offline probability optimizer · c8b38b0b
      Yue Chen authored
      This tool is a gadget for offline probability training.
      
      A binary executable aom_entropy_optimizer will be generated in
      tools/. It parses a binary file consisting of counts written in
      the format of FRAME_COUNTS in entropymode.h, and computes the
      optimized probability table, which will be written to a new c file
      optimized_probs.c using the format in entropymode.c.
      
      Command line:
      ./aom_entropy_optimizer [directory of the count file]
      
      The input file can be either be generated from a single run by
      turning on entropy_stats experiment(counts are accumulated from
      frame to frame, and finally written to counts.stt), or be collected
      at a larger scale, at which a python script (will be provided soon)
      can be used to aggregate multiple stats output.
      
      Optimization for initial CDFs will be also supported later.
      
      Change-Id: I32070721aa8059439feb6b5a3a179f1001c66bb7
      c8b38b0b
  13. 27 Jun, 2017 2 commits
    • Todd Nguyen's avatar
      Add experiment bgsprite · 302d0970
      Todd Nguyen authored
      Work in progress to generate ARF with stitched background image.
      
      Change-Id: I2fea75bbe5ac6f713f53eb5825776dadfc1d98c5
      302d0970
    • Urvang Joshi's avatar
      Enable smooth_hv by default. · bda59df3
      Urvang Joshi authored
      This experiment was provisionally adopted on 2017-06-27.
      
      Change-Id: Ic7eb232b8187133f59956eed09e5f5de02c0986e
      bda59df3
  14. 24 Jun, 2017 1 commit
  15. 23 Jun, 2017 2 commits
    • Wei-Ting Lin's avatar
      Add NCOBMC_ADAPT_WEIGHT experiment flag · 9c6f8547
      Wei-Ting Lin authored
      NCOBMC_ADAPT_WEIGHT allow using different interpolation kernels
      to combine overlapped predictions generated using mvs in the
      neighboring blocks.
      This experiment will build on top of MOTION_VAR and it might conflict
      with WARPED_MOTION in the developing stage, so will only be effective
      when MOTION_VAR is on and WARPED_MOTION is off.
      
      Change-Id: I4f1b6e55b6146ed443955751c09bfa22ef2f33e8
      9c6f8547
    • Yaowu Xu's avatar
      Revert "Always use the 16-bit coding path" · cde0a31b
      Yaowu Xu authored
      BUG=aomedia:620
      
      This reverts commit 4da880bd.
      
      Change-Id: I40a2295083b3328ef743d3eab9c2aa514dc698eb
      cde0a31b
  16. 21 Jun, 2017 1 commit
    • Sebastien Alaiwan's avatar
      Always use the 16-bit coding path · 4da880bd
      Sebastien Alaiwan authored
      The encoder and decoder will now use the 16-bit (high-bitdepth)
      coding path, regardless of the encoding profile.
      
      This is a step towards the removal of the 8-bit (low-bitdepth)
      coding path (which remains compile-checked at the moment).
      
      BUG=aomedia:611
      
      Change-Id: Ie764c39a327d48b18d77246a028493b6270b9f88
      4da880bd
  17. 19 Jun, 2017 1 commit
    • Zoe Liu's avatar
      Add new coding tool of ext-comp-refs · c082bbcb
      Zoe Liu authored
      The tool of ext-comp-refs adds the uni-directional compound reference
      prediction. In details, 3 pairs of uni-direcitonal compound references
      are added for the comp ref prediction:
      (LAST_FRAME, LAST2_FRAME),
      (LAST_FRAME, GOLDEN_FRAME), and
      (BWDREF_FRAME, ALTREF_FRAME).
      
      This new tool of ext-comp-refs will eventually overwrite
      one-side-compound and have the two coding tools to merge to one.
      
      It achieves -0.35 ~ -0.55% coding gains in BDRate, compared against
      AV1 baseline with the default experiments on, but without
      one-sided-compound. It achieves -0.2% ~ -0.3% coding gains when
      one-sided-compound is on. It achieves larger gains on higher
      resolution.
      
      Change-Id: Icbdb16e97b96aaebaf2213f5f72d5331e2e358eb
      c082bbcb
  18. 16 Jun, 2017 2 commits
  19. 15 Jun, 2017 1 commit
    • Zoe Liu's avatar
      Add the new coding tool "speed_refs" · d1ac0321
      Zoe Liu authored
      This patch will not cause any performance change regardless of whether
      speed_refs is on or off.
      
      This coding tool is targeted to speed up the encoder side reference
      frame selection process. The essential idea is to have two scanning
      passes for each superblock of size 64x64 and this CL lays out the
      initial framework but no reference frame selection is done yet:
      
      First scanning pass - To simplify the partition and the mode
      candidates (e.g. considering nearestmv / nearmv / zeromv only) and
      identify the best reference frame prediction candidates;
      
      Second scanning pass - Use the best reference frame candidate(s)
      obtained from the first pass to encode the current superblock.
      
      Change-Id: I11266d468de3077271a5e866eebd341a8014d136
      d1ac0321
  20. 14 Jun, 2017 1 commit
  21. 13 Jun, 2017 2 commits
    • Lester Lu's avatar
      Add experimental flag for line graph transforms · 46fd1a05
      Lester Lu authored
      Change-Id: Iba98b07d2f19fd98be07d0c2c80c855661df778d
      46fd1a05
    • Zoe Liu's avatar
      Add encoder/decoder pipeline to support single ref comp modes · 85b66463
      Zoe Liu authored
      Now the single ref comp mode should work with WEDGE and
      COMPOUND_SEGMENT. For motion_var, the OBMC_CAUSAL mode uses the 2nd
      predictor if the neighboring block is single ref comp mode predicted.
      
      This patch removes the mode of SR_NEAREST_NEWMV and leaves four
      single ref comp modes in total:
      
      SR_NEAREST_NEARMV
      SR_NEAR_NEWMV
      SR_ZERO_NEWMV
      SR_NEW_NEWMV
      
      Change-Id: If6140455771f0f1a3b947766eccf82f23cc6b67a
      85b66463
  22. 12 Jun, 2017 1 commit
    • Yue Chen's avatar
      Add a new experimental flag SBL_SYMBOL · 536e5520
      Yue Chen authored
      A new experiment SBL_SYMBOL, meaning superblock-level symbols, will
      be explored. It allows some symbols being coded at superblock level
      (64x64) by checking whether a symbol(e.g. motion_mode, tx depth,
      and interpolation filter) is identical across macroblocks in a
      superblock.
      
      Change-Id: I38408325c9b7a4b94c11c400a5060036ce36405e
      536e5520
  23. 08 Jun, 2017 1 commit
    • Sebastien Alaiwan's avatar
      Revert "Enable one_sided_compound by default" · 8e3da097
      Sebastien Alaiwan authored
      This reverts commit bf3813a1.
      
      Reason for revert: feature not ready.
      Incompatible with lossless under some circumstances,
      causes the following assertion failure:
      Assertion `(!is_compound) == (cm->reference_mode == SINGLE_REFERENCE)' failed
      
      BUG=aomedia:575
      
      Change-Id: I63a2b38ce3b7cb50108ac559cca0768b4579c9ae
      8e3da097
  24. 06 Jun, 2017 1 commit
    • Urvang Joshi's avatar
      Add a new experiment "rect-intra-pred". · 766a389b
      Urvang Joshi authored
      Earlier, intra prediction for rectangular blocks was performed by
      running two steps of prediction on square sub-blocks.
      
      With this experiment, we do proper intra prediction for rectangular
      blocks. This ensures that we make use of all available neighboring
      pixels especially for directional modes. For this, all the intra
      predictors were updated to work with rectangular transform block sizes.
      
      Performance improvements are small but free of cost:
      
      All Intra frames:
      lowres: -0.126
      midres: -0.154
      
      Video Overall:
      lowres: -0.043
      midres: -0.100
      
      [Could not get AWCY results due to a backlog.]
      
      BUG=aomedia:551
      
      Change-Id: I7936e91b171d5c246cb0a4ea470a981a013892e6
      766a389b