1. 27 Sep, 2017 14 commits
    • 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
    • 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
    • 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.
      Change-Id: I2f4c5434d8c4ef722ac885a1ffd2d253863ae6d9
    • Pavel Frolov's avatar
      Setup sb_size when decoding intra_only frame · ea3dd3aa
      Pavel Frolov authored
      This fixes decoder's capability to start decoding
      bitstream from non-KEY intra_only frame.
      Change-Id: Iecd5add418590119f59a51acd7208eb08cb17042
    • Yi Luo's avatar
      Lowbd rect intrapred DC/LEFT/TOP/128 sse2 optimization · 39bdf36a
      Yi Luo authored
      Add lowbd unit test functionality to intrapred_test.cc
      Function speedup against C (i7-6700):
      Predictor   DC     LEFT   TOP    128
      4x8        ~1.4x  ~1.4x  ~1.7x  ~1.9x
      8x4        ~1.2x  ~1.6x  ~1.6x  ~2.6x
      8x16       ~1.4x  ~1.3x  ~1.4x  ~2.1x
      16x8       ~2.0x  ~1.8x  ~2.3x  ~2.1x
      16x32      ~2.0x  ~1.9x  ~1.8x  ~2.2x
      32x16      ~2.0x  ~2.0x  ~1.9x  ~2.2x
      Change-Id: I33db512020ca3c6853a9205a8079f3d00134f584
    • Luc Trudeau's avatar
      [CFL] No Average in 4:2:0 Subsampling · 8b80d232
      Luc Trudeau authored
      Since Subsampled values are in Q3, one does not need to take the
      average, as the sum of 4 values is the average in Q2. As such, shifting
      by 1 to the left, results in the average in Q3. By removing the
      intermediate step in Q0, rounding error is removed.
      Results on Subset1
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.0204 | -0.1945 | -0.1474 |  -0.0170 | -0.0237 | -0.0178 |    -0.0973
      Change-Id: I8c6d4f71ec0e6e3923e254d79b83127b3734699e
    • 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
      Change-Id: I6e89eac6496f7c36e46364c9223fbcbca6759032
    • Rupert Swarbrick's avatar
      Only allocate one temp buffer in av1_make_masked_inter_predictor · e41223d1
      Rupert Swarbrick authored
      Exactly one of tmp_dst/tmp_dst_/tmp_dst2 is used in a call to
      av1_make_masked_inter_predictor. Work out how many bytes are needed by
      the largest one possible and just allocate that.
      Change-Id: Ib8fabaf1f461ce1192c5657a3d2b5a4f7fa8d7b1
    • David Barker's avatar
      Fix ext-partition + motion-var · b74b9560
      David Barker authored
      When calculating the above overlapped prediction, we adjust
      xd->mb_to_bottom_edge to have the correct value for the prediction
      we're about to make. This prediction is half the height of the
      current block - *unless* the block is 128 pixels high, in which
      case the prediction is only 32 pixels high.
      This patch implements the special case for 128-pixel high blocks.
      (all of this applies analogously for left predictions too)
      Change-Id: I2780e8d4a6f8a9f82f540f2c2dfde691d07298e2
    • Sebastien Alaiwan's avatar
      Fix typo in comment · c4559cad
      Sebastien Alaiwan authored
      Change-Id: Id6f588876b1adf68abd8c17d7eef2223d552e457
    • Jonathan Matthews's avatar
      palette_delta_encoding: clamp y and u colors · dc0e1126
      Jonathan Matthews authored
      Change-Id: I635d620fc6d350391ecb7885cc119eaef0af39bc
    • 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
    • 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
      Change-Id: I6f26377591f3e93f7c068e4aa4279ae9bc2c9522
    • Luc Trudeau's avatar
      [CFL] Extract Subsampling Functions · b81d0630
      Luc Trudeau authored
      We extract these functions in order to move them to the cfl_store in a
      subsequent commit. This change does not impact the bitstream.
      Results on Subset1 (compared to parent with CfL enabled)
        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
      Change-Id: I84bfe60e25a4a665f686d6b18789395a50318a9b
  2. 26 Sep, 2017 13 commits
    • Urvang Joshi's avatar
      Update comment for frame superres scaling mode. · 93b779b4
      Urvang Joshi authored
      Based on code change in:
      Change-Id: I771ba6e08259e1c43cb06ebe6436dafe07fdf1d5
    • Tom Finegan's avatar
      CMake experiment flag clean up. · f344afbb
      Tom Finegan authored
      Alpha sort the experiments group in
      aom_config_defaults.cmake to avoid future duplication
      issues, and:
      - Remove ALTREF2.
      - Remove the duped CDEF line.
      Change-Id: Ib14172c89dd3934dbf475bbfc581d017acdba2d8
    • Sebastien Alaiwan's avatar
      Coding path sync test: fix picture comparison · a85a2b9f
      Sebastien Alaiwan authored
      Change-Id: Iee4957038d61c14cf8fa3f9c094b579c82c20603
    • 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
    • Yushin Cho's avatar
      Fix ASAN warnings with PVQ · ead552a9
      Yushin Cho authored
      Change-Id: I4d6912f3a0df0bdb3f435cc8057b63fbaa3aaa6d
    • Luc Trudeau's avatar
      [CFL] Store Reconstructed Luma for Intra In Inter · b05eeaef
      Luc Trudeau authored
      Like for intra block in intra frames, an extra call to
      txfm_rd_in_plane is added to the RDO of intra blocks in inter frames.
      This extra call is performed using the best parameters found during
      RDO and the reconstructed luma pixel are stored.
      Results on objective-1-fast (compared to CfL on Intra frames only)
         PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
      -0.2497 | -3.5526 | -3.5048 |  -0.2456 | -0.2392 | -0.2508 |    -1.4811
      Change-Id: I70ea2c01859b6c55d7c3eb9680d492c0bfc2aad4
    • Rupert Swarbrick's avatar
      Simplify av1_get_rest_tile_limits · 5d2e729e
      Rupert Swarbrick authored
      The subtile and clamping features are no longer used. This patch
      removes the dead code that implemented them and the parameters to
      support them.
      It also changes the return format. Instead of having return type void
      and passing data out through 4 output pointers, the function now just
      returns a RestorationTileLimits structure. Since the function is
      defined inline in a header, I suspect that most callsites will
      actually compile to identical code.
      There should be no functional change from this patch.
      Change-Id: I6ebc4da66a00676bd988f939a4b4957f743e8004
    • Rupert Swarbrick's avatar
      Remove duplicated code in av1_make_masked_inter_predictor · 87fe5b96
      Rupert Swarbrick authored
      This patch basically just pushes #if CONFIG_HIGHBITDEPTH down past
      other #if/#endif blocks, letting us pull out common code instead of
      having to repeat it. There should be no functional change (indeed,
      there should be no change except whitespace after preprocessing!)
      Change-Id: I9bcbfbdec5ad54e42095de085df381e85bf48197
    • Thomas Davies's avatar
      Fix redundancy in delta_q signalling. · 3b93e8eb
      Thomas Davies authored
      rem_bits-1 not rem_bits should be transmitted so that
      2 cannot be coded in two ways.
      Change-Id: Iaa0203214bbe6fc6775e05fe4b6e976d568f54b3
    • Cheng Chen's avatar
      Reorgnize loop filter range for superblock · 5589d71c
      Cheng Chen authored
      For each superblock, its filtering range is shifted up and left by
      8 pixels (half of the maximum loop filter length), such that
      estimation of deblocking filtering will not cross two superblocks.
      Change-Id: I82244b7c26ab8b2ac553037b3bb1fe1d82bf5704
    • Cheng Chen's avatar
      Add threshold to superblock filter level selection · c7855b1a
      Cheng Chen authored
      Signal one bit to indicate whether current superblock reuses filter
      level of previous superblock.
      Try filtering and compute sse using previous filter level and search
      the best possible filter level. If their diff is less than predefined
      threshold, current superblock reuses previous level. Otherwise,
      signal the best filter level.
      Change-Id: Ibf125860883b774ef2464b62bb8b799b48258c64
    • Debargha Mukherjee's avatar
      Add experiment to restrict compressed header · 2eada612
      Debargha Mukherjee authored
      The compressed header is now used only when the refresh
      type is set as forward, i.e. in error resilience and
      frame parallel modes. As long as backward updates are
      used the header is disabled thereby saving bits.
      Change-Id: Iee9f66ffbd30ef3552ea41b75e4b51537cd9ff97
    • Debargha Mukherjee's avatar
      Fix cmake experimental flags · 8f4b2167
      Debargha Mukherjee authored
      Change-Id: Ifb0e4363136779092fcf5e9b27318f1b83df7ad7
  3. 25 Sep, 2017 4 commits
  4. 24 Sep, 2017 4 commits
  5. 23 Sep, 2017 5 commits
    • Debargha Mukherjee's avatar
      Setup ref mode after reading uncompressed header · 6f3c898f
      Debargha Mukherjee authored
      Removes setup in compressed header so that the compressed
      header can be skipped.
      Change-Id: I8d7ed63944a4f75704222f4ad7d0159db1cec0d1
    • Debargha Mukherjee's avatar
      Fix kf y mode costing · 801cc926
      Debargha Mukherjee authored
      Change-Id: I3d6a440b13473b0d1e8b18c6629c7e8e3fb446ae
    • 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
    • Debargha Mukherjee's avatar
      Move sb_size to the keyframe (sequence) header · d2630fa4
      Debargha Mukherjee authored
      This patch moves the sb_size to the keyframe header from all frame
      headers as discussed in the AOM Codec WG meeting.
      Change-Id: Ia0190e57b36b98e51ab61ad4ff14f24f9c294877
    • Hui Su's avatar
      Remove unused arrays in entropymode.h · 787eb3d1
      Hui Su authored
      Change-Id: I7f2c0bfc12451710622161bd52ff689e642d1e52