1. 13 Oct, 2017 1 commit
  2. 12 Oct, 2017 1 commit
    • Yunqing Wang's avatar
      Find warped reference MV · 97d6a37e
      Yunqing Wang authored
      While finding the reference MV for a block, if one neighbouring block's
      motion mode is warped motion mode, instead of directly adding that
      block's MV to the candidate MV list, we use that neighbouring block's
      warped motion parameters to compute a MV for the center point of the
      current block, and then add that MV to the candidate MV list.
      
      Borg test result:
                   avg_psnr ovr_psnr ssim
      cam_lowres:  -0.507   -0.514  -0.685
      lowres:      -0.114   -0.122  -0.180
      
      The change is added under ext_warped_motion config flag.
      
      Change-Id: I3ce6290a1fd512b613eab5d7620c8bcb08f189a6
      97d6a37e
  3. 11 Oct, 2017 2 commits
  4. 10 Oct, 2017 4 commits
    • Jingning Han's avatar
      Make inter mode context depend on nearest neighbor · abf6f284
      Jingning Han authored
      Reduce the inter mode context model dependency to be within the
      nearest neighbor search.
      
      Change-Id: I0b9e7d360919a809b5400f233040bb474ab56768
      abf6f284
    • Jingning Han's avatar
      Disable all_zero_flag in opt-ref-mv · 426caba9
      Jingning Han authored
      This breaks the inter mode context dependency on the full spatial
      neighbor search.
      
      Change-Id: Ic27fb63531ce2c949756ea10752a7a8e7b7b1046
      426caba9
    • Jingning Han's avatar
      Reduce newmv context model dependency size · 8a8c50af
      Jingning Han authored
      Make the newmv context model dependent only on the nearest spatial
      neighbors reference motion vectors count and the newmv coded block
      counts.
      
      Change-Id: I8db9ca453c4fefddafba5f3476ee0d733f87dfc0
      8a8c50af
    • Sarah Parker's avatar
      Compute global refmv candidate at center of current block · 0a5cc5fd
      Sarah Parker authored
      When a neighboring block uses global motion, use the mv
      computed at the center of the current block as the candidate vector
      rather than the mv computed at the center of the neighboring block.
      
      0.15% improvement on cam_lowres
      
      Change-Id: I79eff8bf27a7aa84ae4a6d56e4a10c41a4438fb9
      0a5cc5fd
  5. 09 Oct, 2017 1 commit
    • Zoe Liu's avatar
      Add encoder/decoder support to frame_sign_bias · 17af2748
      Zoe Liu authored
      Frame sign bias value will not be signaled in frame header. Instead,
      the sign bias of reference frames are derived from their corresponding
      frame offsets at both encoder and decoder.
      
      The tool of 'frame_sign_bias' is dependent of 'frame_marker'. Compared
      against baseline, the enabling of both tools obtains a small coding gain
      of -0.08 ~ -0.11% in BDRate over Google lowres/midres tests.
      
      Change-Id: I8d85dc427ced0b2152712ccf61be4be6068075b9
      17af2748
  6. 08 Oct, 2017 1 commit
    • Yunqing Wang's avatar
      Modify storing and using of the temporal frame MVs · d1d511f3
      Yunqing Wang authored
      Add an experiment "tmp", which includes:
      1. Always use larger block size while storing frame MVs and make
      it consistent for CB4X4 or non-CB4X4 cases. Namely, use 8x8 for
      4x4 mi size and 16x16 for 8x8 mi size.
      2. Allocate smaller buffer for frame MVs and save memory usage.
      3. Use nearby 8x8 or 16x16 location's previous frame MVs, and make
      the logic simple.
      4. Reduce the number of copying for frame MVs, that is very costly
      in decoder.
      
      Baseline decoder got 5+% speedup. Borg test on lowres set showed a
      +0.009% PSNR difference before/after the patch.
      
      Change-Id: I61e14e95fd35bea88f338931b4f43c44f4e4cf1f
      d1d511f3
  7. 05 Oct, 2017 2 commits
    • Jingning Han's avatar
      Limit inter mode context dependency scope · 0e4c8064
      Jingning Han authored
      Constrain the zeromv context model to depend on the top-left
      8x8 block in the collocated region only. This reduces the latency
      on parsing its context index. The coding performance loss is around
      0.05% level.
      
      Change-Id: I29bc7e4eb3e7c2e4ab32acd071420f4cb038c856
      0e4c8064
    • Jingning Han's avatar
      Search motion field in 8x8 unit · bd799d11
      Jingning Han authored
      Change-Id: I817d93d2746d2475492fb94132427c7758c0700a
      bd799d11
  8. 02 Oct, 2017 1 commit
  9. 30 Sep, 2017 1 commit
    • 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
  10. 29 Sep, 2017 1 commit
  11. 27 Sep, 2017 1 commit
    • 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
  12. 20 Sep, 2017 2 commits
    • 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
  13. 19 Sep, 2017 4 commits
  14. 15 Sep, 2017 1 commit
    • Yunqing Wang's avatar
      Further refactor setup_ref_mv_list · d1121fa3
      Yunqing Wang authored
      This patch follows the previous refactoring patch, and further reduces
      the number of calls made to scan_row_mbmi and scan_col_mbmi by going
      through partition blocks instead of mi blocks. This patch doesn't change
      bitstream, which was proven by Borg test result.
      
      The baseline decoder speed test on 1080p clip showed that the average
      decoder speedup was 1.1%.(fps: 32.626 --> 32.994)
      
      Change-Id: Ic375ae5d682c7454e2f2a2fcf8baa6b4b438d9a6
      d1121fa3
  15. 04 Sep, 2017 2 commits
    • Jingning Han's avatar
      Static local functions in mfmv · 5c700910
      Jingning Han authored
      Change-Id: I0fefe099b314295583e8e17e55e4d8fc375a5b0c
      5c700910
    • Jingning Han's avatar
      Constrain motion vector projection range · b74a72bf
      Jingning Han authored
      Constrain the maximum motion vector projection range to be within
      +/-32 pixels in the vertical direction and +/-64 pixels in the
      horizontal direction.
      
      Such constraints allow a fixed amount of reference motion vector
      load to SRAM for each 64x64 block size, independent of the frame
      size. The wider range in the horizontal direction can be stored in
      the SRAM and reused by next 64x64 block. The compression performance
      loss is 0.03% for lowres and 0.04% for midres.
      
      Change-Id: I7f1c136363b136b1f2fa9f7c962a791c8e91a976
      b74a72bf
  16. 02 Sep, 2017 2 commits
  17. 31 Aug, 2017 2 commits
    • Jingning Han's avatar
      Enable motion field estimation in DRL · ffbb0f91
      Jingning Han authored
      Enable the use of motion field estimation in the dynamic motion
      vector referencing system. With default experiments on, it improves
      the compression performance:
      
      lowres 1.2%
      midres 1.5%
      
      Change-Id: Ifc5b15a7239b5c3212ea50f326ab99d372034658
      ffbb0f91
    • Jingning Han's avatar
      Add frame index to the decoded frames · c723b348
      Jingning Han authored
      Add frame index to the deocded frames. Store such information to
      the reference frame buffer pool. This design allows each frame
      to know its index in natural order, as well as its reference
      frames positions.
      
      Change-Id: I5bb36928dc5750a4fdcc582dca0d244d6482f400
      c723b348
  18. 30 Aug, 2017 1 commit
    • Yunqing Wang's avatar
      Refactor setup_ref_mv_list · d797ea9e
      Yunqing Wang authored
      This patch eliminates the is_inside() checking for each neighouring
      block in scan_row_mbmi() and scan_col_mbmi(). Instead, in
      setup_ref_mv_list(), find maximum above row_offset and left col_offset
      for current block, and use them to decide which above rows and left
      columns to search on. This patch doesn't change bitstream. No
      noticeable speedup is seen.
      
      Change-Id: Ic4ae74412605d86e9e675f86d23de3a69c04e8f3
      d797ea9e
  19. 28 Aug, 2017 1 commit
    • Jingning Han's avatar
      Refactor zero ref mv check · 2484fa05
      Jingning Han authored
      Unify and simplify the logic for both single and compound modes.
      
      Change-Id: If781aac66b47c1a707f4f9a647cb8a3294477a48
      2484fa05
  20. 23 Aug, 2017 1 commit
    • Rupert Swarbrick's avatar
      Deal correctly with 16x4/4x16 blocks in mvref_common.c · 1cc50bc2
      Rupert Swarbrick authored
      The logic that searches for motion vectors in scan_row_mbmi and
      scan_col_mbmi steps in 4x4 units when the block size is less than
      8x8. That test (bsize < BLOCK_8X8) doesn't work when you have 16X4 or
      4X16 blocks, because they appear higher up in the enum.
      
      Change-Id: Idb1a97f8a43b675fd78dbc76ae501fcdff7adbcd
      1cc50bc2
  21. 21 Aug, 2017 1 commit
    • Joe Young's avatar
      [cb4x4][refmv] scan_row_mbmi/scan_col_mbmi · 8e4c3a74
      Joe Young authored
      For sub-8x8 blocks, scan loop should have at least one iteration.
      Previously, loop would be skipped if col_offset == 1 and n8_w == 1.
      
      This change appears to have neutral effect on bdrate (+0.01).  This could
      mean that extra MV candidates are not helping that much for sub-8x8.
      
      Change-Id: Ic778312b39113ab8f348f5c7c18813593a831b7c
      8e4c3a74
  22. 10 Aug, 2017 1 commit
    • Yunqing Wang's avatar
      Adjust the sample selection in Warped Motion · 9a7c660e
      Yunqing Wang authored
      This CL follows the original one"Sample selection in warped motion", and
      aims to reduce the number of samples gathered. We only search 1 above row
      and 1 left column instead of 1/2 bsize range in each direction. The gain
      is a little less, but not much.
      
      Borg test result:
                   avg_psnr ovr_psnr ssim
      cam_lowres:  -0.225   -0.228  -0.231
      lowres:      -0.081   -0.075  -0.114
      
      The changes are wrapped in WARPED_MOTION_SORT_SAMPLES macro.
      
      Change-Id: Ifb499c80470b2ffe7a40f68fc401589faada7730
      9a7c660e
  23. 08 Aug, 2017 1 commit
  24. 07 Aug, 2017 3 commits
  25. 31 Jul, 2017 1 commit
    • Yushin Cho's avatar
      Another fix of dangling braces for search · 127c5838
      Yushin Cho authored
      These are caused when both #if and #else has if (...) '{' but
      there is only one matching '}'.
      
      Fixed for some of decoding side files. More to come soon.
      
      Change-Id: I9e63b90ba6e739b5c7e37498458c7808e2e16d33
      127c5838
  26. 14 Jul, 2017 1 commit
    • Yunqing Wang's avatar
      Sample selection in warped motion · 1bc82866
      Yunqing Wang authored
      Added a sample selection process in warped motion.
      1. Gather more samples including multiple rows on the top, multiple
      columns on the left, and the upper-right block.
      2. Sort samples by the MV difference between the neighbour's MV and
      the current block's MV. Trim the samples with considerably large MV
      difference.
      
      Borg test result:
                   avg_psnr ovr_psnr ssim
      cam_lowres:  -0.241   -0.243  -0.376
      lowres:      -0.104   -0.110  -0.179
      
      The changes are wrapped in WARPED_MOTION_SORT_SAMPLES macro.
      
      Change-Id: I2730bb31a0a3ad28215ccd16fd6da0ea8b2ed404
      1bc82866