1. 30 Sep, 2017 1 commit
    • 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 14 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
    • Monty Montgomery's avatar
      Remove dead av1_dct8x8_quant_xxxx functions · 7f7dd08a
      Monty Montgomery authored
      They're unused, disabled in the prototype setup, but still built and
      complicating the already convoluted ifdef mess in TX experiment
      configuration.
      
      Don't leave dead code in the sourcebase.  That's what SCM is for.
      
      Change-Id: Idb2adf597ac064c7b5027df8af1cf65054984aa4
      7f7dd08a