1. 30 Sep, 2017 2 commits
    • 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
    • Zoe Liu's avatar
      Update default probs for reference frame coding · 6905dc79
      Zoe Liu authored
      The updates in this CL are for the scenario when ext-comp-refs is off.
      
      For --disable-global-motion --disable-ext-tx --disable-ext-comp-refs
      --disable-convolve-round, the patch obtains a small BDRate gain for
      PSNR: lowres -0.08%; midres -0.05%
      
      Change-Id: I47d1ba93318e2904b5714f62ffd6af056f4eb588
      6905dc79
  2. 29 Sep, 2017 25 commits
  3. 28 Sep, 2017 13 commits
    • Cheng Chen's avatar
      Make LOOPFILTER_LVL support segment · d8184dae
      Cheng Chen authored
      Experiment LOOPFILTER_LVL has 4 deblocking filter levels for:
      y plane horizontal, y plane vertical, u plane, and v plane.
      
      The patch supports segment updates for each of the four filter levels.
      
      Change-Id: I494e8d9ab67e37c5f6234b8d9db8e3e3abf70d52
      d8184dae
    • 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 one bug in the decoder header initization · dd8df163
      Ryan authored
      1. seg->temporal_update flag is only read when seg->update_map flag is
      set to 1 in the bit stream. in case update_map flag is different from frame
      to frame, the temporal_update flag will not be reset to 0 when
      update_map flag changed from 1 to 0. i.e, the previous temporal_update
      flag will be used in the later process. in the read_inter_segment_id
      function, temporal_update flag is used to read the segment id. it will
      cause bit stream parsing error.
      
      Change-Id: I663975bc84bbed7409d4f5dd1c1005480b2fbcf8
      dd8df163
    • Thomas Davies's avatar
      Fix a typo in default CDFs for TX_64X64 · d38d5d20
      Thomas Davies authored
      Change-Id: Ief98301e44a63faacd5f8725f89ef4e0c596a591
      d38d5d20
    • Angie Chiang's avatar
      Do interpolation when up sample scan count · fc414a37
      Angie Chiang authored
      Change-Id: I15bd90245adc85d17ef8429b9c5f3e41e26b0904
      fc414a37
    • Angie Chiang's avatar
      Allow one-sided scan count down sampling · 231cba45
      Angie Chiang authored
      Change-Id: I164add43e9d75af82312b464a176cdf0045ef9e1
      231cba45
    • Angie Chiang's avatar
      Refactor av1_down_sample_scan_count · 1a4bae1f
      Angie Chiang authored
      Change-Id: I18de826d8b8bdec6f57d108906ee5df959243f90
      1a4bae1f
    • Angie Chiang's avatar
      Add av1_up_sample_scan_count() · 1c904831
      Angie Chiang authored
      Change-Id: I25030297e0333f326d39f6c5b64cb2e4f3906852
      1c904831
    • Sebastien Alaiwan's avatar
      Remove dead function 'clamp_block' · 36967373
      Sebastien Alaiwan authored
      And reduce scope of 'get_max_bit',
      which is only used by the test code.
      
      Change-Id: I9af7be426f7bec6958419ca02957db87e7963f50
      36967373
    • Thomas Daede's avatar
      Remove unused bytes from uncompressed header. · 3e22da3d
      Thomas Daede authored
      Although they are called "sync codes", nothing is synchronized
      using them.
      
      Change-Id: I2dbd67daf9f4822438323212bb96cac489c38c5d
      3e22da3d
    • Angie Chiang's avatar
      Customize coding scheme for 1D transform · f12cc4a4
      Angie Chiang authored
      Observe 0.1% gain on lowres wo optimize_b before rebase
      
      Change-Id: I0cb5b5e4be2563093efb2f6dfbefdce9b554e910
      f12cc4a4
    • 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
    • Ola Hugosson's avatar
      Add striped_loop_restoration experiment · 1e7f2d0c
      Ola Hugosson authored
      This experiment offset the filter tile grid 8 pixels upwards.
      Deblocked pixels (rather than CDEFed pixels) are used for the
      2 lines above and below the filter processing unit. The 8 pixel
      offset is the offset produced by deblock/cdef. This way the
      loop_restoration does not need additional line buffers in a
      single pass hardware implementation.
      
      Change-Id: I89e0831dc28413a5d3e02d7a426ce2885ab629d7
      1e7f2d0c