1. 02 Oct, 2017 1 commit
    • 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
  2. 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
  3. 29 Sep, 2017 4 commits
  4. 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
  5. 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
  6. 26 Sep, 2017 2 commits
  7. 24 Sep, 2017 1 commit
  8. 23 Sep, 2017 2 commits
    • Yushin Cho's avatar
      Improve dist-8x8 · 8e75e8bb
      Yushin Cho authored
      Improve dist-8x8 when computing 8x8 yuv dist for sub8x8.
      
      To apply dist-8x8 for sub8x8 partitions, once mode decision for
      sub8x8 partitions are finished then dist-8x8 is computed on 8x8 window.
      Since dist-8x8 is only for luma, chroma distortion should be identified.
      
      Previously, it has been hard to be free from potential bugs doing this,
      due to the complex inter mode search code.
      
      The new method is less-error-prone, which computes uv distortion (in MSE) after
      the mode decisions for all of sub8x8 blocks in a 8x8 window are finished,
      when the dist-8x8 distortion for luma 8x8 pixels are computed with
      new distortion metric.
      
      All the code separating y and uv distortion in inter mode search has
      been removed in this commit.
      
      Change-Id: Ieaccb7915df5faeb5e89a7e70b2b7cbac65231af
      8e75e8bb
    • Rupert Swarbrick's avatar
      Simplify implementation of rd_test_partition3 · 0e653f9f
      Rupert Swarbrick authored
      The rd_test_partition3 function basically calls rd_pick_sb_modes on
      each of three sub-blocks of a partition (this is one of the mixed size
      partitions like PARTITION_HORZ_A) and adds up the cost. There's also
      some extra book-keeping to do with stopping early if we know the
      partition is more expensive than what we've already seen.
      
      Before this patch, each call and its supporting code was written out
      in rd_test_partition3 with lots of repetition (made even more
      unreadable because of the #if/#endif blocks). This patch moves the
      "per-subblock" logic into a new function, rd_try_subblock, and
      replaces the code with calls to that function.
      
      The patch also rewrites the nested conditionals
      
        if (A) { if (B) { if (C) { X; } } } return;
      
      as
      
        if (! A) return; if (! B) return; if (! C) return; X;
      
      which means the code for X doesn't need to be so indented.
      
      The patch also uses the new function to replace the bodies of the
      PARTITION_HORZ_4 and PARTITION_VERT_4 partition types.
      
      Note that lots of the remaining ugliness is to do with supporting
      CONFIG_SUPERTX with ext-partition types. These explicitly aren't
      supported together at the moment, so another option would be to rip
      out that code entirely.
      
      Change-Id: I9af40d96aa1384f24a088a73a711311638490250
      0e653f9f
  9. 22 Sep, 2017 2 commits
    • Hui Su's avatar
      Remove probablity model for tx type · 98b0b3e9
      Hui Su authored
      It's not being used anymore, replaced by the CDF model.
      The counters are moved under the entropy-stats experiment, so that they
      can be used to tune the default CDF values.
      
      Change-Id: I50cb170c4c8699cf7317fd77853b3fedf2342d3e
      98b0b3e9
    • Hui Su's avatar
      Refactor the ext-tx experiment · ddbcde28
      Hui Su authored
      Use common structure for inter and intra tx type information when
      possible.
      
      Change-Id: I1fd3bc86033871ffbcc2b496a31dca00b7d64b31
      ddbcde28
  10. 20 Sep, 2017 2 commits
    • Ryan's avatar
      fix the calculation for super_block_upper_left · 676c25cd
      Ryan authored
      the original calculation for super_block_upper_left calculation is
      wrong. this flag is true even for 32x32 block boundary. also it is not
      consistent with other places where this flag is calculated.
      
      Change-Id: I6b7b613d1f81eb11d27c67491375f6c1a47878e1
      676c25cd
    • Luc Trudeau's avatar
      [CFL] CfL for Intra frames only · a66a2cb2
      Luc Trudeau authored
      This commit serves as a baseline to test CfL in video sequences. This
      starting baseline uses CfL only in intra frames. This allows to measure
      the contribution of CfL in intra frames over the whole video sequence.
      
      Results on Objective-1-fast (Compare to master with CfL disabled)
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.1869 | -2.4708 | -1.9988 |  -0.1725 | -0.1390 | -0.1453 |    -0.9564
      
      https://arewecompressedyet.com/?job=master%402017-09-13&job=cfl-no-inter%402017-09-13
      
      Change-Id: I20b2f239455b43e977588dc738b21e0508ad9333
      a66a2cb2
  11. 19 Sep, 2017 1 commit
  12. 18 Sep, 2017 1 commit
    • David Barker's avatar
      Save global motion params even in error-resilient-mode · cba7da74
      David Barker authored
      The error-resilient-mode flag is currently set per frame,
      so we can encode a non-error-resilient frame immediately
      after an error-resilient frame.
      
      As of https://aomedia-review.googlesource.com/c/21783 , this
      case causes the decoder to read uninitialized memory. This
      happens because the error-resilient frame no longer sets up
      cm->cur_frame->global_motion. Then, on the non-error-resilient
      frame, that is renamed to cm->prev_frame->global_motion and we
      try to use it as a reference for delta encoding.
      
      Fix this by always writing cm->cur_frame->global_motion.
      
      Change-Id: I0d4f13bf413ca15da210e06d5ce1780331c005da
      cba7da74
  13. 13 Sep, 2017 2 commits
  14. 12 Sep, 2017 2 commits
  15. 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
  16. 10 Sep, 2017 1 commit
  17. 09 Sep, 2017 1 commit
  18. 08 Sep, 2017 4 commits
    • Hui Su's avatar
      Resolve a confilict between intrabc and var-tx · ff37c1a5
      Hui Su authored
      Intrabc is counted as inter mode, but it doesn't support var-tx yet.
      This patch skips tx partition info update for intrabc blocks. It
      resolves a decoder crash issue.
      
      Change-Id: I97e413e4a837ba6510e110347f5aa6e5fd14dcc5
      ff37c1a5
    • Yaowu Xu's avatar
      Ensure valid cost table is used · ba9dd8a6
      Yaowu Xu authored
      BUG=aomedia:685
      
      Change-Id: I592016faeb4645cf43c599e0e2e11127e2a17c4e
      ba9dd8a6
    • Yaowu Xu's avatar
      Code simplification · 049a788c
      Yaowu Xu authored
      Change-Id: Ia84ea2f4e855671f5a29058cc7a6b5ba9e6bfef9
      049a788c
    • 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
  19. 07 Sep, 2017 2 commits
  20. 06 Sep, 2017 4 commits
  21. 05 Sep, 2017 1 commit