1. 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
  2. 29 Sep, 2017 1 commit
  3. 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
  4. 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
  5. 19 Sep, 2017 4 commits
  6. 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
  7. 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
  8. 02 Sep, 2017 2 commits
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 08 Aug, 2017 1 commit
  16. 07 Aug, 2017 3 commits
  17. 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
  18. 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
  19. 30 Jun, 2017 1 commit
    • David Barker's avatar
      Fix bug when cb4x4 is disabled · e3afdd89
      David Barker authored
      When cb4x4 is disabled and global-motion is enabled, the function
      av1_append_sub8x8_mvs_for_idx accidentally fetched
      cm->global_motion[ref] instead of cm->global_motion[rf[0]],
      ie. it used the reference *index* instead of the reference *frame*.
      
      Change-Id: Ieebf60f6b7c0a1cbbc083a70d4451ad799e27fe3
      e3afdd89
  20. 15 Jun, 2017 1 commit
  21. 15 May, 2017 2 commits
  22. 05 May, 2017 1 commit
  23. 03 May, 2017 1 commit
  24. 29 Apr, 2017 1 commit
  25. 11 Apr, 2017 1 commit
  26. 07 Apr, 2017 1 commit
    • Yue Chen's avatar
      Simply calculation of sample projections in WM+GM · ff61610f
      Yue Chen authored
      Directly use mbmi->mv[0] since the displacment of block center has
      been calculated according to GM/WM model and stored in mbmi->mv[0].
      
      Change-Id: I09bc88832d80197fccbb1df1518ad33fafa9756f
      ff61610f
  27. 02 Apr, 2017 1 commit
    • Yue Chen's avatar
      Use 1 sample per neighbor for local warping model estimation · 5558e5da
      Yue Chen authored
      Only 1 sample needs to be collected. Max of 8 neighbors are
      used.
      In LS estimation, the projection samples (sx, sy)->(dx, dy) are
      intentionally smoothed by assuming 3 shifted versions
      (sx, sy+n)->(dx, dy+n), (sx+n, sy)->(dx+n, dy), (sx+n,
      sy+n)->(dx+n, dy+n) also contribute to the estimation.
      For example, instead of using A[0] = sx^2, we use the sum of
      squares of source x of four points, A[0] += 4sx^2+4*n*sx+n^2.
      But computational cost wise, it does not add much overhead. Coding
      gain is mostly same as the old version. If no smoothing is added,
      will lose 0.3% on lowres.
      
      Change-Id: I04be32cffa525f7dc8ee583c0bf211d7bdc6e609
      5558e5da
  28. 23 Mar, 2017 1 commit
  29. 22 Mar, 2017 1 commit
  30. 08 Mar, 2017 1 commit