1. 02 Oct, 2017 2 commits
  2. 01 Oct, 2017 5 commits
  3. 30 Sep, 2017 3 commits
    • Yushin Cho's avatar
      [dist-8x8] Bug fix - exclude invisible pixels · 2f025aae
      Yushin Cho authored
      There were two places where invisible pixels are included
      when calculating distortion with dist-8x8 is turned on.
      Those are bugs and fixed by this commit.
      
      1) When av1_dist_8x8() is called in dist_8x8_sub8x8_txfm_rd()
      - New assert() are also added to detect any failures in the future.
      
      2) Inside av1_dist_8x8() and av1_dist_8x8_diff(), with tune-metric == PSNR.
      
      Change-Id: I078d1feb3bb010c0e34041640bb69a400125817a
      2f025aae
    • 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
  4. 29 Sep, 2017 8 commits
  5. 28 Sep, 2017 12 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
    • 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
    • Luc Trudeau's avatar
      [CFL] Move Subsampling in Store · 4e26d667
      Luc Trudeau authored
      Pixels are subsampled when they are stored in the CfL prediction
      buffer. This allows to avoid having two buffers. No impact on the
      bitstream.
      
      Results on subset1 (Compared to parent)
      
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0000 |  0.0000 |  0.0000 |   0.0000 | 0.0000 |  0.0000 |     0.0000
      
      https://arewecompressedyet.com/?job=cfl-avg-on-fly%402017-09-23T21%3A38%3A04.440Z&job=cfl-Sub-On-Store%402017-09-24T15%3A01%3A41.161Z
      
      Change-Id: If051e34d6d7078d77609542305a2afebef5cb177
      4e26d667
    • Rupert Swarbrick's avatar
      Move tile_cols/tile_rows calculation into common function · 5a010aac
      Rupert Swarbrick authored
      This is just a code cleanup, moving the calculation of cm->tile_rows
      and cm->tile_cols into get_tile_size, which is already calculating
      cm->tile_width and cm->tile_height. The patch also gets rid of a
      spurious AOMMIN and replaces it with an assertion.
      
      Change-Id: I46666c4a197ac26d4b3746d9ea6575dc4af0d570
      5a010aac
    • 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
    • Debargha Mukherjee's avatar
      Misc. resize fixes along with the resize test · ccb27264
      Debargha Mukherjee authored
      Re-enables most of the previously disabled tests.
      The ones that are still disabled expect resize to be triggered
      through rate control, which is no longer supported in Av1.
      
      Change-Id: Ie5e9ba3eb0843cd44ff1ac988500081470ba0fe2
      ccb27264
    • Luc Trudeau's avatar
      [CFL] Compute and Subtract Average on the Fly · 593d02c8
      Luc Trudeau authored
      Instead of storing the transform block average, it is immediately
      subtracted from the subsampled pixels. This change does not alter the
      bitstream and it reduces CfL complexity.
      
      Change-Id: Ia5038b336abf1ec01e295b235734318906d3bae6
      593d02c8
  6. 27 Sep, 2017 8 commits
    • Angie Chiang's avatar
      Only use fast optimize_b in rd loop for lv_map · 25645b74
      Angie Chiang authored
      Change-Id: Ia33e9962fce962e4f45281537d3e90b4d88543a5
      25645b74
    • Luc Trudeau's avatar
      Replace DC_PRED with UV_DC_PRED for chroma · 91357ee9
      Luc Trudeau authored
      When using uv_mode the corresponding enum is the UV_PREDICTION_MODE not
      the PREDICTION_MODE enum.
      
      Change-Id: I44b19e4db5947a2d44281430b34ed61b82f999eb
      91357ee9
    • David Barker's avatar
      ext-partition: Don't read not-yet-decoded values · 761b1ac8
      David Barker authored
      When deciding whether the top-right or bottom-left blocks are
      available, we currently always act as if we're using 128x128
      superblocks. This means that, when using 64x64 superblocks,
      we sometimes conclude that blocks are available when they haven't
      been decoded yet!
      
      This typically happens at, for example, mi_row=15, mi_col=16
      (for bottom left), where we're at a 64x64 boundary but not
      a 128x128 boundary.
      
      This patch fixes the issue by checking based on the signalled
      superblock size.
      
      Note: Most of this patch is just threading 'cm' through the
      intra prediction process, so that we have access to cm->sb_size
      in has_top_right() and has_bottom_left()
      
      Change-Id: I126964c510aafffc870e7cd8b3e64a46abb14b3a
      761b1ac8
    • Dominic Symes's avatar
      MAX_TILE experiment: add explicit tiles · f58f111f
      Dominic Symes authored
      This patch is designed to complete the CONFIG_MAX_TILE experiment.
      It adds the following features:
      - Explicit tiles of same width can be signalled with command line --tile_width
      - Explicit tiles of same hieght can be signalled with command line --tile_height
      - max_tile now works with the depenedent horizontal tiles experiment
      - additional checking added to ensure maximum number of rows/columns <= 64
      - one fix to the tile group code for when the number of tiles is not a power of two
      
      Change-Id: I749a68fdb3dcdd8d1ced2b3558f3817e4b832c06
      f58f111f
    • 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
    • Luc Trudeau's avatar
      [CFL] Subsample to Q3 · a0af3b5e
      Luc Trudeau authored
      Result from luma subsampling is left-shifted by 3. This avoids having to
      do it during averaging, in alpha search and when building the
      prediction. This change does not alter the bitstream.
      
      Results on Subset1
        PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
      0.0000 |  0.0000 |  0.0000 |   0.0000 | 0.0000 |  0.0000 |     0.0000
      
      https://arewecompressedyet.com/?job=cfl-baseline%402017-09-06T17%3A41%3A38.041Z&job=cfl-SubsampleQ3%402017-09-06T17%3A42%3A01.252Z
      
      Change-Id: I6e89eac6496f7c36e46364c9223fbcbca6759032
      a0af3b5e
    • Cheng Chen's avatar
      Fix select filter level · 15f6b863
      Cheng Chen authored
      Only use cm->mi, instead of cm->mi_grid_visible to get filter level.
      The latter may not work for shifted grid loop filtering.
      
      Change-Id: I55ed6a42f0abb19d6814e8c0cf8d64ce79bf6abc
      15f6b863
    • Cheng Chen's avatar
      LPF_SB: add filter step and tune threshold · f89ca3e1
      Cheng Chen authored
      Set filter step = 2, such that 3 bit can represent [-14, +14] filter
      level difference.
      
      Tune threshold for reusing filter level between previous and current
      superblock.
      
      Change-Id: I6f26377591f3e93f7c068e4aa4279ae9bc2c9522
      f89ca3e1
  7. 26 Sep, 2017 2 commits
    • Yushin Cho's avatar
      Disable palette coding if pvq is enabled · a8810391
      Yushin Cho authored
      PVQ has been broken again since the experiment flag for palette is removed
      in commit c6300aa1.
      
      As a fix, if PVQ is enabled then disable both of --tune-content=screen and
      automatic detection of screen and use of palette coding tool.
      
      Change-Id: Iea6bb042b4402163805c44dabfb3f4c05dfd4e23
      a8810391
    • Yushin Cho's avatar
      Fix ASAN warnings with PVQ · ead552a9
      Yushin Cho authored
      Change-Id: I4d6912f3a0df0bdb3f435cc8057b63fbaa3aaa6d
      ead552a9