1. 23 Oct, 2017 3 commits
  2. 21 Oct, 2017 2 commits
  3. 20 Oct, 2017 4 commits
  4. 19 Oct, 2017 2 commits
  5. 16 Oct, 2017 2 commits
    • Yunqing Wang's avatar
      Further modify the sample selection in warped motion · 5a6dc0e7
      Yunqing Wang authored
      1. Reduce the worst-case number of samples from 34 to 16.
      2. Simplify the trimming strategy to not use multiplication and
      division operations.
      
      Overall, this modification reduces the complexity without affecting
      the coding gain too much.
      
      Turning on "ext_warped_motion", the Borg test showed:
                   avg_psnr ovr_psnr ssim
      cam_lowres:  -0.912   -0.920  -1.246
      lowres:      -0.229   -0.219  -0.373
      
      Change-Id: Ida21d1d3f22998c851b1270fe61a5e30f9e4ec38
      5a6dc0e7
    • Sebastien Alaiwan's avatar
      Remove compile guards for CONFIG_EXT_REFS · 365e644a
      Sebastien Alaiwan authored
      This experiment has been adopted, we can simplify the code
      by dropping the associated preprocessor conditionals.
      
      Change-Id: I4705652ac8231ee25f960e8096dc97c2aeed1d20
      365e644a
  6. 14 Oct, 2017 1 commit
  7. 13 Oct, 2017 1 commit
  8. 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
  9. 11 Oct, 2017 2 commits
  10. 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
  11. 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
  12. 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
  13. 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
  14. 02 Oct, 2017 1 commit
  15. 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
  16. 29 Sep, 2017 1 commit
  17. 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
  18. 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
  19. 19 Sep, 2017 4 commits
  20. 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
  21. 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
  22. 02 Sep, 2017 1 commit