1. 26 Sep, 2017 9 commits
    • Yushin Cho's avatar
      Fix ASAN warnings with PVQ · ead552a9
      Yushin Cho authored
      Change-Id: I4d6912f3a0df0bdb3f435cc8057b63fbaa3aaa6d
      ead552a9
    • 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
      
      https://arewecompressedyet.com/?job=cfl-no-inter%402017-09-13&job=cfl-inter%402017-09-13T14%3A13%3A13.918Z
      
      Change-Id: I70ea2c01859b6c55d7c3eb9680d492c0bfc2aad4
      b05eeaef
    • 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
      5d2e729e
    • 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
      87fe5b96
    • 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.
      
       BUG=aomedia:811
      
      Change-Id: Iaa0203214bbe6fc6775e05fe4b6e976d568f54b3
      3b93e8eb
    • 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
      5589d71c
    • 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
      c7855b1a
    • 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
      2eada612
    • Debargha Mukherjee's avatar
      Fix cmake experimental flags · 8f4b2167
      Debargha Mukherjee authored
      Change-Id: Ifb0e4363136779092fcf5e9b27318f1b83df7ad7
      8f4b2167
  2. 25 Sep, 2017 4 commits
  3. 24 Sep, 2017 4 commits
  4. 23 Sep, 2017 11 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
      6f3c898f
    • Debargha Mukherjee's avatar
      Fix kf y mode costing · 801cc926
      Debargha Mukherjee authored
      Change-Id: I3d6a440b13473b0d1e8b18c6629c7e8e3fb446ae
      801cc926
    • 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
    • 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
      d2630fa4
    • Hui Su's avatar
      Remove unused arrays in entropymode.h · 787eb3d1
      Hui Su authored
      Change-Id: I7f2c0bfc12451710622161bd52ff689e642d1e52
      787eb3d1
    • Hui Su's avatar
      Move local functions out of blockd.h · 032ab8b3
      Hui Su authored
      Change-Id: Id667950de84ad6a0b55222264a0ce8473cd10bcc
      032ab8b3
    • Debargha Mukherjee's avatar
      Add new experimental flag ext_partition_types_ab · de5bdcad
      Debargha Mukherjee authored
      Change-Id: Ib85b2a778e1306444ac0cbbfb212e739a0f0009c
      de5bdcad
    • 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
    • Cheng Chen's avatar
      Signal delta loop filter level between superblocks · a4b27de4
      Cheng Chen authored
      For the first superblock, signal a filter level (6 bit).
      For other superblocks, signal the delta (3 bit) and sign (1 bit).
      To guarantee the delta can be represented by 3 bits, the search
      range of current superblock filter level is capped as
      curr_lvl = prev_lvl +- ((1 << 3) - 1)
      
      Change-Id: Ibbe2941aa96ec1220ed2adb7edf3d29cb032f0ec
      a4b27de4
    • James Zern's avatar
      test.cmake: add resize_test.cc · a87d186d
      James Zern authored
      this was enabled in test.mk in:
      c9ac07f6 Re-enable resize test.
      
      Change-Id: I0836e533c77570c5176b2c99fe7a3d19d73ac8af
      a87d186d
    • Yushin Cho's avatar
      [dist-8x8] Enable early-exit, if MSE is used · c00769a9
      Yushin Cho authored
      If dist-8x8 is enabled, it has disabled early-exit during the RD
      of sub8x8 tx block in 8x8 or larger partition for plane 0.
      
      However, for the sanity check mode of dist-8x8 which still use MSE,
      this can cause different bdrate from the reference (i.e
      dist-8x8 off). Hence, if tune-metirc is MSE then
      regular early-exit will perform for all cases.
      
      Note that the rd cost used for early-exit condition during tx mode
      decision does not include rate for mode itself but only coefficints.
      So, when the total distortion for a partition is very small, the rd cost
      of mode can exceed that of distortion.
      
      Change-Id: Ie25c64064b78d2d1582dbb0c286212fbc52dbdb9
      c00769a9
  5. 22 Sep, 2017 6 commits
    • Yi Luo's avatar
      Highbd rectangle intrapred V/DC sse2 optimization · bdddf33a
      Yi Luo authored
      Function speedup (i7-6700),  sse2 verse C:
      Predictor      V_PRED    DC_PRED
      4x8            ~1.5x     ~4.9x
      8x4            ~2.5x     ~4.8x
      8x16           ~1.9x     ~9.1x
      16x8           ~1.9x     ~4.4x
      16x32          ~2.1x     ~5.8x
      32x16          ~2.0x     ~3.6x
      
      Change-Id: I6deffd0637e57ee5d0bd533502f5705148c4cdd4
      bdddf33a
    • Jingning Han's avatar
      Add opt_ref_mv experimental flag · 1727fac4
      Jingning Han authored
      Change-Id: I24cb257367775608b2b6e4d45d07c30b511af251
      1727fac4
    • Jingning Han's avatar
      Fix merge conflict · 75a6f87a
      Jingning Han authored
      Fix the missing the compiler fix in 772cb136.
      
      Change-Id: I2e1d0576964483c7890fb87e3db5451816883b9b
      75a6f87a
    • Hui Su's avatar
      ext-tx: combine the index and type mapping tables · 4a9be2a0
      Hui Su authored
      Combine the index and type mapping tables for intra and inter.
      
      Change-Id: I4274f0b5afac26f7e395467bdf5cf18077eacbee
      4a9be2a0
    • 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
  6. 21 Sep, 2017 3 commits
  7. 20 Sep, 2017 3 commits
    • Jingning Han's avatar
      Fix av1_get_txb_entropy_context check condition · 339cf93b
      Jingning Han authored
      Return 0 when eob is 0. It is possible that when eob is 0, the
      fed in quantization matrix is uninitialized in the rate distortion
      optimization process.
      
      Change-Id: I2dcf558203bf60ba7332c6bf585a978f7c7309b5
      339cf93b
    • Jingning Han's avatar
      Constrain motion field referencing region · 83c27ecd
      Jingning Han authored
      Limit the motion field referencing region to be within a 64x64
      coding block region to reduce line buffer requirement. The coding
      performance loss numbers are 0.028% for lowres and 0.064% for
      midres.
      
      Change-Id: I4fe1a915c5710b763591b7046c45459b02543377
      83c27ecd
    • Jingning Han's avatar
      Use integer multiplier to replace division in mfmv · 00d5868d
      Jingning Han authored
      Use integer multipliciation to replace the division operation in
      the linear projection in mfmv. The coding performance change is
      around 0.01% level.
      
      Change-Id: I901fd3a2b349f1babccb88dbf74f84091079b8d3
      00d5868d