1. 25 Jan, 2018 3 commits
    • Yunqing Wang's avatar
      Search the same set of neighbouring positions · 28f3fbf7
      Yunqing Wang authored
      This patch prepares for removing of av1_update_mv_context(). In
      av1_update_mv_context() and av1_find_mv_refs(), the neighbouring
      positions searched are not exactly the same. This patch fixes it.
      This causes bitstream chamges, but shouldn't affect the coding
      quality.
      
      Change-Id: I59d2f8c318df388f2d06634cd96802b773c8bb13
      28f3fbf7
    • Yunqing Wang's avatar
      Remove mode_context calculation in find_mv_refs_idx() · 8152737f
      Yunqing Wang authored
      mode_context[ref_frame] is calculated in find_mv_refs_idx(), but is
      set to 0 in setup_ref_mv_list. Therefore, the calculation in
      find_mv_refs_idx() is not needed.
      
      Change-Id: I65ca06a2000278ad21c2eaa81eb12c48a7c1fcb8
      8152737f
    • Frank Bossen's avatar
      Do MV scaling on the fly for memory and run time reduction · 7b6bb947
      Frank Bossen authored
      This change is not normative and produces the same results as before.
      TPL_MV_REF data structure is about 5x smaller.
      Observed overall decoder run time reduction is about 4%.
      No observed change in encoder run time.
      
      Change-Id: Id68a492bac3bf28f48b7ceeedf85cd29981238ee
      7b6bb947
  2. 22 Jan, 2018 1 commit
  3. 09 Jan, 2018 2 commits
  4. 04 Jan, 2018 2 commits
    • Yunqing Wang's avatar
      Remove global offset components from warped motion samples · c7d4cd39
      Yunqing Wang authored
      To calculate wmmat[2] to wmmat[5], we don't need the absolute
      coordinates which include the global offset components. Hence,
      while finding samples, we only need to gather the relative coordinates
      that are the neighbor block center point's coordinates relative to the
      left-top pixel of current block. This patch won't change bitstream.
      
      Change-Id: Ifbe7769effe6253b27cf97ea9c942a3a29eb7f50
      c7d4cd39
    • Yunqing Wang's avatar
      Remove sample sorting in warped motion sample selection · d3c13e88
      Yunqing Wang authored
      The original sample selection process involves finding best 8 sorted
      samples according to motion vector difference(MVD) between neighbor
      block and current block, and then trimming samples. To reduce the
      complexity, use the current block width/height as the MVD threshold,
      and trim the samples without sorting.
      
      This gives slightly less gain than the original method.
      AWCY result:
               PSNR   PSNR HVS   SSIM
      Average  -0.07   -0.13     -0.12
      Borg test result:
                   avg_psnr ovr_psnr ssim
      cam_lowres:  -0.112   -0.112  -0.180
      lowres:      -0.068   -0.073  -0.125
      
      Change-Id: Ic2f79a170441d5bcb04ea87dddf490ef7fbba8bc
      d3c13e88
  5. 27 Dec, 2017 3 commits
    • Yaowu Xu's avatar
      Fix msvc compiling errors and warnings · 96fa7575
      Yaowu Xu authored
      Change-Id: I69916bb6390dd9275341d8cd3fae2d8961e1cae3
      96fa7575
    • Jingning Han's avatar
      Limit the mfmv reference region · 4c864e0c
      Jingning Han authored
      Sub8x8 blocks will not check the extended region in motion field.
      For regular block sizes, limit the extended region to be 3 points,
      down from 9 points check.
      
      Change-Id: I70f2631aa726ad01ee6bb83fffdf71ef82505888
      4c864e0c
    • Jingning Han's avatar
      Drop mvs with magnitude above 4096 from mvs reference frame · 05102b52
      Jingning Han authored
      When either component of a motion vector is above 4096, drop this
      motion vector from the motion vector reference frame for later
      motion field projection use. The coding performance change is close
      to 0 for lowres and midres. This ensures that the motion vector
      and reference frame tuple can be efficiently stored within 32 bits.
      
      Change-Id: I9ae60a5caab2d3f49200abb5415532d82986839f
      05102b52
  6. 24 Dec, 2017 1 commit
  7. 23 Dec, 2017 1 commit
    • Jingning Han's avatar
      Reduce the ref mv search region for sub8x8 blocks · 818b0064
      Jingning Han authored
      Reduce the reference motion vector search region over the spatial
      neighbor blocks for sub8x8 block sizes, in order to reduce the
      worst case context model parsing latency.
      
      Change-Id: I77a2a25483836cc02cf1784c93566fa7cff40fc8
      818b0064
  8. 22 Dec, 2017 1 commit
    • Jingning Han's avatar
      Take out drl index control from opt-ref-mv · b4fc74da
      Jingning Han authored
      Removing the drl dependency on the candidate list length appears
      to incur more than 0.3% compression performance loss. Hence remove
      this option from opt-ref-mv to allow better latency vs compression
      performance trade off.
      
      Change-Id: I6edaeb2d437996082b7bdd6cda7351426c5584b9
      b4fc74da
  9. 21 Dec, 2017 1 commit
  10. 20 Dec, 2017 2 commits
  11. 18 Dec, 2017 1 commit
    • Zoe Liu's avatar
      Expand skip mode support for all comp frames · 4b847e19
      Zoe Liu authored
      All compound predicted frames now have the choice to either turn on
      or off the use of the skip mode. The current encoder design only
      turns on the use of skip mode when the temporal distances of the two
      reference frames to the current frame are only different by 1.
      
      This patch also includes a fix on the calculating of the temporal
      distance between the two reference frames to the current frame for
      skip mode.
      
      Performance wise, this patch does not have noticeable impact as the
      encoder stays with the same choice with the frame-level skip mode
      flag.
      
      Change-Id: I34f370940b3b25d2ab429b8721344133ae6288ad
      4b847e19
  12. 16 Dec, 2017 1 commit
    • Zoe Liu's avatar
      Support ext-skip for both low delay and high delay · 104d62e1
      Zoe Liu authored
      For both low delay and high delay scenarios, the reference pair in
      skip mode are specified as the closest fwd ref, together with the
      closest bwd ref if there is any bwd ref, otherwise with the two
      closest fwd refs.
      
      Skip mode by default uses COMPOUND_AVERAGE. When all the reference
      frames are on the same side, temporal-distance weighted compound is
      considered, and a compound index is signaled to indicate whether
      distance-weighted compound or compound-average is usd.
      
      Whether to use distance-weighted compound for skip mode is still
      under experimenting, hence a flag is temporarily added:
      SKIP_MODE_WITH_JNT_COMP.
      
      Following experimental results are obtained over 30 frames, using the
      setup of --disable-ext-partition --disable-ext-partition-types
      --disable-txmg --enable-jnt-comp --enable-mfmv --enable-ext-skip:
      
      (1) High Latency:
      For Google test sets (lowres/midres), the BDRate coding gain is ~0.2%;
      For AWCY, the coding gain is ~0.1%.
      (2) Low Latency:
      No gain has been observed over Google sets and ~0.1% gain is obtained
      only when temporal-distance weighted prediction is used.
      
      Change-Id: I8c433357adebed0126ebfdd5c4d51aa71e64be57
      104d62e1
  13. 14 Dec, 2017 2 commits
    • Jingning Han's avatar
      Fix an unintended condition in refmv ctx model · 03d46bd6
      Jingning Han authored
      Make the force reset condition under the opt-ref-mv flag.
      
      Change-Id: I2c5f317e064d9517abee98937f3982c8e50dcfa5
      03d46bd6
    • Luc Trudeau's avatar
      [Clean Up] Remove get_y_mode() · 2eb9b845
      Luc Trudeau authored
      The get_y_mode function, is superfluous, not used consistently, and requires a
      useless block_idx parameter than gets pass around a lot inside the
      codebase for no apparent reason.
      
      The block parameter is misleading, as it could cause people to think all these
      functions actually use this value.
      
      Change-Id: I7ae0a8d1282c009b9114c83771cce10f5c2ee397
      2eb9b845
  14. 13 Dec, 2017 1 commit
  15. 12 Dec, 2017 2 commits
  16. 09 Dec, 2017 1 commit
  17. 06 Dec, 2017 1 commit
  18. 05 Dec, 2017 3 commits
  19. 04 Dec, 2017 1 commit
  20. 20 Nov, 2017 1 commit
    • Yunqing Wang's avatar
      Only use 1 above row and left column in warped reference MV · d3af66c7
      Yunqing Wang authored
      Multiple above rows and left columns are checked while generating reference
      MV candidate list for the current block. But, for warped ref_mv, we only
      generate warped reference MV for current block if one neighbor block is
      WARPED_CAUSAL mode and is located in the immediate above row or left column.
      
      Change-Id: Ia9e9c2b7f97b61e0e4d2eeffd8d91e9e5f93d1a0
      d3af66c7
  21. 18 Nov, 2017 1 commit
    • Zoe Liu's avatar
      Add motion selection to ext_skip · f40a9577
      Zoe Liu authored
      A new block mode, referred to as skip_mode is added. If a block is
      coded as skip_mode, it will be inter-coded, with its references and
      motion vectors derived from its neighboring blocks with zero-residue.
      Otherwise, the block can be coded in the current intra or inter mode.
      
      The computational load on skip_mode evaluation at the encoder should
      be kept minimum. No transform size / type evaluations are needed.
      
      Change-Id: I5aef0159c7d5ecd64258510835903375d6c536d6
      f40a9577
  22. 17 Nov, 2017 1 commit
    • Yunqing Wang's avatar
      Reuse neighbor's warped motion parameters · 876a8b0b
      Yunqing Wang authored
      If a block's motion_mode is WARPED_CAUSAL and its mode is NEARESTMV, search
      its immediate above and left neighbors to get the set of neighbor blocks
      using WARPED_CAUSAL motion mode, pick the one with largest block size, and
      use that neighbor's warped motion parameters directly for the current block.
      If none of the neighbors uses WARPED_CAUSAL motion mode, we estimate the
      current block's warped motion parameters.
      
      Before this patch, for every block, we estimate its warped motion parameters.
      With this patch, we reduce the number of blocks doing parameter estimation.
      Here are results by testing on clips with camera motions.
                          WARPED_CAUSAL blocks   blocks reusing parameters
      station2_240p(30f):     3857                    1678
      netflix_arieal(30f):     692                     223
      
      No noticable changes in coding gain. Borg test result showed a PSNR
      change of +0.006% on cam_lowres set, and -0.014% on lowres set.
      
      Change-Id: If12387ad0ca8a1996ea4c3f1bedcb269ebf78c6c
      876a8b0b
  23. 15 Nov, 2017 2 commits
  24. 14 Nov, 2017 1 commit
    • Zoe Liu's avatar
      Change mv projection to signed rounding · 11273449
      Zoe Liu authored
      The numerator in the mv projection can be negative, e.g. cur_to_bwd
      or cur_to_alt2, since either bwdref or altref2 can be a forward
      predictive reference, whereas the denominator always stays positive.
      The rounding inside mv projection hence should use signed operation.
      
      Change-Id: I42a105835754a002dd31fcfa7c845e4c105ec54f
      11273449
  25. 07 Nov, 2017 1 commit
  26. 04 Nov, 2017 1 commit
    • Jingning Han's avatar
      Separate ref frame mvs control from prev_frame_mvs · e17ebe92
      Jingning Han authored
      The control of using reference frame motion vector is a separate
      factor from the existence of previous frame motion vectors. This
      commit decouples these two, such that the encoder can control the
      use of reference motion vector. When it is used, one can further
      identify if the previous frame exists or not, then to decide if
      need to force use_prev_frame_mvs to be zero.
      
      This solves the issue where the previous frame mvs is set to be
      0 and it accidentally shuts off the access to all other existing
      referece frames mvs in the mfmv system. It brings back the coding
      performance gains to normal.
      
      Change-Id: I2531f73e55582a9bb5b3e0ff47e361a199ec8082
      e17ebe92
  27. 01 Nov, 2017 2 commits
    • Sarah Parker's avatar
      Rename ZEROMV to GLOBALMV · 2b9ec2ea
      Sarah Parker authored
      This name better reflects the functionality of the mode.
      
      Change-Id: Idc2372e7c7b226f70f63fa4f272a88cb4d857089
      2b9ec2ea
    • Zoe Liu's avatar
      Remove the use of prev_frame_mvs for mfmv · 294f59d0
      Zoe Liu authored
      The experiment of mfmv has already extensively leveraged the use of
      the motion vectors from the reference frames, hence there is no need
      to further add the motion vectors from the previous frame to serve
      as the motion vector reference candidates, let alone such motion
      vectors have not taken into account of the use of frame offsets.
      
      Experimental results collected so far have shown this patch has zero
      coding performance impact.
      
      Change-Id: I57a2f8b60797bd5e8f0a95206689b6e443b28ed1
      294f59d0