1. 16 Oct, 2017 2 commits
    • Sebastien Alaiwan's avatar
      Remove compile guards for CONFIG_EXT_REFS · 365e644a
      Sebastien Alaiwan authored
      This experiment has been adopted, we can simplify the code
      by dropping the associated preprocessor conditionals.
      
      Change-Id: I4705652ac8231ee25f960e8096dc97c2aeed1d20
      365e644a
    • 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
  2. 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
  3. 11 Oct, 2017 3 commits
  4. 10 Oct, 2017 5 commits
    • Cheng Chen's avatar
      Loop filtering after each superblock · 5ad5b289
      Cheng Chen authored
      The patch is to enable loop filtering for intra block copy.
      
      Apply loop filtering right after each superblock is encoded.
      Use a constant filter level for now. In future updates, the filter
      level should be optimized by LPF_SB and better guess value.
      
      Change-Id: I0a5797b5ba5384c00044a8ec4a495dc75aa0f3fe
      5ad5b289
    • 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
    • Angie Chiang's avatar
      Add frame-level flag to turn on/off adapt_scan · 6dbffbf1
      Angie Chiang authored
      Change-Id: I7a73dbe72b618e795191cc31bc32e31ad99d8587
      6dbffbf1
    • Hui Su's avatar
      intrabc: fix mismatch · 2b2ad0fa
      Hui Su authored
      The "txb_split_count" counter should be properly updated.
      
      BUG=aomedia:864
      
      Change-Id: I3fb34a818c3f474085c4a2980a2d3b68bd33fb12
      2b2ad0fa
    • Debargha Mukherjee's avatar
      Fix conflicts between ext-partition & other expts · e30159ce
      Debargha Mukherjee authored
      Most of the fixes are related to replacing BLOCK_64X64 with
      cm->sb_size.
      
      Fixes the AV1/AqSegmentTest.TestNoMisMatchExtDeltaQ/* tests that
      were breaking before with ex-partition.
      
      Change-Id: I19d6045b422a93891b8cf4f8a929def97a595058
      e30159ce
  5. 09 Oct, 2017 3 commits
  6. 08 Oct, 2017 2 commits
    • Yunqing Wang's avatar
      Modify storing and using of the temporal frame MVs · d1d511f3
      Yunqing Wang authored
      Add an experiment "tmp", which includes:
      1. Always use larger block size while storing frame MVs and make
      it consistent for CB4X4 or non-CB4X4 cases. Namely, use 8x8 for
      4x4 mi size and 16x16 for 8x8 mi size.
      2. Allocate smaller buffer for frame MVs and save memory usage.
      3. Use nearby 8x8 or 16x16 location's previous frame MVs, and make
      the logic simple.
      4. Reduce the number of copying for frame MVs, that is very costly
      in decoder.
      
      Baseline decoder got 5+% speedup. Borg test on lowres set showed a
      +0.009% PSNR difference before/after the patch.
      
      Change-Id: I61e14e95fd35bea88f338931b4f43c44f4e4cf1f
      d1d511f3
    • Debargha Mukherjee's avatar
      Fix pvq build · 35fb461e
      Debargha Mukherjee authored
      Various fixes for pvq build.
      
      Change-Id: Ideebdb072ed5786f3224e93ded5ec75a23e68dab
      35fb461e
  7. 06 Oct, 2017 2 commits
  8. 05 Oct, 2017 2 commits
  9. 04 Oct, 2017 3 commits
    • Cheng Chen's avatar
      Clamp current_delta_lf_from_base in ext_delta_q · 9dccdf24
      Cheng Chen authored
      BUG=aomedia:829
      
      Change-Id: I78347e12b4efa05ebd424ba25de7767437495b42
      9dccdf24
    • Rupert Swarbrick's avatar
      Pack InterpFilters into a single integer · 27e90295
      Rupert Swarbrick authored
      Before this patch, if CONFIG_DUAL_FILTER was true then an MB_MODE_INFO
      stored its filter choices as an array of four numbers, each of which
      was between 0 and 10. It also seems that elements 2 and 3 of the array
      were always the same as elements 0 and 1 when used.
      
      This patch defines a new type(def) called InterpFilters together with
      constructor and extractor functions. When CONFIG_DUAL_FILTER is zero,
      InterpFilters is a synonym for InterpFilter and the constructor and
      extractor functions should compile away to nothing. When it is
      nonzero, InterpFilters is a uint32_t which stores the x filter in the
      high part and the y filter in the low part (this looks strange, but
      matches the old numbering).
      
      Making this change allows us to get rid of lots of special case code
      that was dependent on CONFIG_DUAL_FILTER. The uniform
      extract/make/broadcast interface also actually shortens code in
      general.
      
      Change-Id: I6b24a61bac3e4b220d8d46d0b27cfe865dcfba81
      27e90295
    • Cheng Chen's avatar
      LOOPFILTER_LEVEL: add flexibility for EXT_DELTA_Q · 880166ab
      Cheng Chen authored
      When experiment LOOPFILTER_LEVEL is on, there're four base filter levels
      for each frame. This patch enables one to use one delta or four deltas
      to update corresponding filter levels for each superblock in
      EXT_DELTA_Q.
      
      1 bit per frame is sent through bitstream to select one or four deltas.
      Now, we hard code to use one delta.
      
      Change-Id: I9c61a035064fa81878b0575ad21664e2b22a6a45
      880166ab
  10. 03 Oct, 2017 3 commits
    • Hui Su's avatar
      Remove symbol mapping of intra modes · 814f41e7
      Hui Su authored
      The _ind and _inv mapping tables are not necessary. The CDF tables are
      updated with new values converted from the old tables. Performance
      impact is small and neutral.
      
      Change-Id: I65845ab3c80f88794abd9ab9e61494af56099c7c
      814f41e7
    • David Barker's avatar
      Fix global-motion + error-resilient-mode · d7c8bd51
      David Barker authored
      Patch https://aomedia-review.googlesource.com/c/21783
      changed things so that error-resilient frames use the default
      global motion parameters as a reference, rather than taking
      the reference from the previous frame.
      
      This was implemented by clearing out cm->prev_frame->global_motion
      when we have an error-resilient frame. Unfortunately, this causes
      an issue: if we have an error resilient frame which isn't stored
      into any reference slots, followed by a non-error-resilient frame,
      then both frames refer to the same prev_frame. The second frame
      then delta-codes against cm->prev_frame->global_motion, but
      this was reset to the default values by the intervening
      error-resilient frame!
      
      In order to allow the above case to work as intended, expand the
      default warp parameter set to a full WarpedMotionParams struct,
      and use that as the reference for error-resilient frames.
      
      This also allows us to remove set_default_warp_params, as we
      can now just copy directly from default_warp_params.
      
      Change-Id: I9645615db2700c1d3810e6e42f4f1da626fcd5e3
      d7c8bd51
    • Cheng Chen's avatar
      Make LOOPFILTER_LEVEL support EXT_DELTA_Q · a97394f7
      Cheng Chen authored
      Before LOOPFILTER_LEVEL, there's one filter level,
      now we have four filter levels for y plane vertical,
      y plane horizontal, u plane and v plane.
      
      This patch enables experiment LOOPFILTER_LEVEL to support per
      superblock loop filter level update.
      
      Change-Id: Ib11a1564471eb3076c26e73e5cdf7b5a3045ef97
      a97394f7
  11. 02 Oct, 2017 2 commits
    • Sebastien Alaiwan's avatar
      Remove compile guards for CONFIG_EXT_INTER · 0bdea0d8
      Sebastien Alaiwan authored
      This experiment has been adopted, we can simplify the code
      by dropping the associated preprocessor conditionals.
      
      Change-Id: Ic077963f72e8cc2ae9872b58c8a0241988384110
      0bdea0d8
    • Urvang Joshi's avatar
      Remove tx_size probability tables. · 355a7a71
      Urvang Joshi authored
      tx_size is transmitted using CDFs now, so these tables are obsolete.
      
      Also, remove a related tx_size_totals table.
      
      Change-Id: I949b46c1c9499bc556e68c77adbdb5aa3288c9a2
      355a7a71
  12. 30 Sep, 2017 2 commits
    • Yaowu Xu's avatar
      Remove experiment speed_refs · 9293bce0
      Yaowu Xu authored
      Change-Id: Ie4e2f04a6fa27480e500469a0d822e539b7cb066
      9293bce0
    • Rupert Swarbrick's avatar
      Add a new layout for HORZ/VERT_A/B partitions · 3dd33911
      Rupert Swarbrick authored
      This hides behind --enable-ext_partition_types_ab. When that flag is
      set, the mixed partitions change from
      
         +-+-+---+          +-+-+---+
         |   |   |          | | |   |
         |---+   |    to    | | |   |
         |   |   |          | | |   |
         +-+-+---+          +-+-+---+
      
      (that's PARTITION_VERT_A; other partitions change similarly).
      
      Since 128x32 and 32x128 block support hasn't yet been merged, this
      patch also temporarily disables these partitions for 128x128 blocks.
      
      Change-Id: Ic479c0fc129f590b8ad56d72dc98ba79ae1bd1cf
      3dd33911
  13. 29 Sep, 2017 4 commits
  14. 28 Sep, 2017 3 commits
    • 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
    • Ryan's avatar
      Fix enc/dec mismatch related delta_lf · 2d3d0cd2
      Ryan authored
      AV1 encoder's logic for handling current_delta_lf_from_base value has
      a hole, which could cause enc/dec mismatch due to deblocking filter
      level mismatch.
      
      On the encoder side, when delta_lf is used. current_delta_lf_from_base
      value is only written into the bit stream when the following condition
      is true:
      
      ((bsize != BLOCK_LARGEST || skip == 0) && super_block_upper_left)
      
      i.e., it is only written into the bit stream when current mi is the top
      left corner of a super block, and it is not skipped or block size is not
      64x64. this is applied to both INTRA and INTER blocks in write_mbmi_b().
      
      And the following code is used to handle the case when the above condition
      is not true.
      
      if (!dry_run) {
          mbmi = &xd->mi[0]->mbmi;
          if (bsize == BLOCK_64X64 && mbmi->skip == 1 && is_inter_block(mbmi) &&
              cpi->common.delta_lf_present_flag) {
            mbmi->current_delta_lf_from_base = xd->prev_delta_lf_from_base;
          }
      
      The idea is that if the above condition is not true, then the
      current_delta_lf_from_base should be reset to the previous delta lf,
      which is prev_delta_lf_frame_base.
      
      However, there is a hole in this logic. For INTRA 64x64 blocks, even it
      is skipped, the current_delta_lf_frame_base is not reset back to the
      previous delta_lf. So, in this case, decoder side won't receive any new
      delta_lf from bit stream, so it will use previous delta_lf. encoder side
      will use the new delta_lf value. this mismatch will cause final loop
      filter level calculation inconsistent in the deblocking stage and thus
      cause encoder and decoder mismatch.
      
      BUG=aomedia:826
      
      Change-Id: I90c1dcca5da106e4f3e0bcba1ed539c1cd99c370
      2d3d0cd2
    • Thomas Davies's avatar
      Remove unused switchable filter probs and remove remapping. · ec92c113
      Thomas Davies authored
      CDFs are used for coding and costs, so there is no need to
      base the CDF on the obsolete tree and remap filter indices.
      
      No change to common test conditions BDR.
      
      Change-Id: I441dd21b127bc07ba33eef8ddcfd147eef21d0d4
      ec92c113
  15. 27 Sep, 2017 1 commit
    • Ryan's avatar
      this change fix the bug reported in issue 819 · 84a6f201
      Ryan authored
      inside the encode_super_block function, the tx_size decision logic is
      different in the dry_run==0 and dry_run==1 case when segment is
      lossless. this change fix the inconsistence.
      
      BUG=aomedia:819
      
      Change-Id: I2f4c5434d8c4ef722ac885a1ffd2d253863ae6d9
      84a6f201
  16. 26 Sep, 2017 2 commits