1. 20 Oct, 2017 1 commit
    • Debargha Mukherjee's avatar
      Remove CONFIG_CB4X4 config flags · 6ea917ec
      Debargha Mukherjee authored
      Since CB4X4 is adopted and without it the codec does not work,
      it is better to remove it and simplify the code.
      
      Change-Id: I51019312846928069727967e3b2bbb60f0fba80d
      6ea917ec
  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. 06 Oct, 2017 1 commit
    • Rupert Swarbrick's avatar
      Simplify the ALL_ZERO_FLAG logic in av1_rd_pick_intra_mode_sb · 799ff701
      Rupert Swarbrick authored
      Since the CONFIG_EXT_INTER #if/#endif lines have been removed, it's a
      bit clearer what's going on here and this patch cleans up the code.
      
      Firstly, the patch pulls the cheap checks on best_mbmode.ref_frame out
      to the front of the block, so we needn't call gm_get_motion_vector at
      all for compound predictions.
      
      Next, second element of the zeromv array is never used, so we needn't
      compute it.
      
      Finally, the patch removes the calls to lower_mv_precision. These
      shouldn't be needed, but it's not exactly obvious why not so the patch
      adds some comments to gm_get_motion_vector to explain what's going on
      and adds an assertion to make sure they are true. It also adds a call
      to integer_mv_precision on the early return path of
      gm_get_motion_vector, correcting an apparent bug when CONFIG_AMVR is
      true.
      
      This patch shouldn't make any difference to encoder or decoder
      behaviour.
      
      Change-Id: I0b4a01063574d080bbf6d30187f4e1748c60939d
      799ff701
  4. 03 Oct, 2017 1 commit
    • David Barker's avatar
      Fix global-motion + error-resilient-mode · d7c8bd51
      David Barker authored
      Patch https://aomedia-review.googlesource.com/c/21783
      changed things so that error-resilient frames use the default
      global motion parameters as a reference, rather than taking
      the reference from the previous frame.
      
      This was implemented by clearing out cm->prev_frame->global_motion
      when we have an error-resilient frame. Unfortunately, this causes
      an issue: if we have an error resilient frame which isn't stored
      into any reference slots, followed by a non-error-resilient frame,
      then both frames refer to the same prev_frame. The second frame
      then delta-codes against cm->prev_frame->global_motion, but
      this was reset to the default values by the intervening
      error-resilient frame!
      
      In order to allow the above case to work as intended, expand the
      default warp parameter set to a full WarpedMotionParams struct,
      and use that as the reference for error-resilient frames.
      
      This also allows us to remove set_default_warp_params, as we
      can now just copy directly from default_warp_params.
      
      Change-Id: I9645615db2700c1d3810e6e42f4f1da626fcd5e3
      d7c8bd51
  5. 19 Sep, 2017 1 commit
  6. 31 Aug, 2017 1 commit
    • 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
  7. 23 Aug, 2017 1 commit
  8. 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
  9. 11 Jul, 2017 1 commit
  10. 27 Jun, 2017 1 commit
    • Debargha Mukherjee's avatar
      Reduce multiplier precision for warp least squares · f053cba2
      Debargha Mukherjee authored
      Includes reordering and other clamping changes, as well as
      changes to reduce multiplier precision.
      
      cam_lowres (60 frames): -0.092% BDRATE improvement in
      --disable-cdef --disable-global-motion --disable-ext-tx
      configuation.
      
      Change-Id: I0660c45b44fcd5a193534d8dadd1aa1ae5c5e27a
      f053cba2
  11. 14 Jun, 2017 1 commit
    • Thomas Davies's avatar
      GLOBAL_MOTION: simplify parameter coding. · b732c1ea
      Thomas Davies authored
      Remove deprecated tree coding for the global motion type.
      Encoding with literals costs at most 0.8 bit per frame or
      tile group for the identity type, and saves bits for other
      types.
      
      AWCY (objective-1-fast): PSNR +0.02%, PSNR-HVS/MSSSIM +0.03%.
      
      Change-Id: I421a39fd8f830b2e40d105ea3c3688099a2b6d15
      b732c1ea
  12. 11 May, 2017 1 commit
  13. 05 May, 2017 1 commit
  14. 02 May, 2017 2 commits
  15. 27 Apr, 2017 1 commit
  16. 26 Apr, 2017 1 commit
  17. 14 Apr, 2017 1 commit
    • Sarah Parker's avatar
      Refactor gm/wm/obmc for cleaner warping interactions · 4c10a3c2
      Sarah Parker authored
      This creates a central function which defines when a
      block should be warped. It also refactors the
      WARPED_MOTION code so that all calls to av1_warp_plane
      happen in the same location.
      
      No change in performance.
      
      Change-Id: Icaf9ec7700d34523809258594bb9843bb2975f46
      4c10a3c2
  18. 10 Apr, 2017 2 commits
  19. 08 Apr, 2017 1 commit
  20. 07 Apr, 2017 1 commit
  21. 05 Apr, 2017 2 commits
  22. 31 Mar, 2017 1 commit
  23. 30 Mar, 2017 1 commit
    • Debargha Mukherjee's avatar
      A few fixes for global motion · 11f0e40d
      Debargha Mukherjee authored
      Handles a rare divisin by 0 case.
      Also adds a check on global motion parameters to disable
      if the parameters obtained are outside the range that the
      shear supports. This fixes a rare assert failure.
      Also changes the recode loop threshold somewhat.
      
      Change-Id: I4c6e74b914ac653cd9caa0563d78b0a19a2a8627
      11f0e40d
  24. 29 Mar, 2017 1 commit
    • Debargha Mukherjee's avatar
      Improves/refactors rd costing for global motion · 265db6d0
      Debargha Mukherjee authored
      Improves and simplifies costing for global motion to use the
      actual bits used to communicate the global motion parameters.
      Removes some of the old hacks.
      This patch also includes necessary refactoring to incorporate
      reference based coding of the motion parameters to follow.
      
      lowres results: -1.489% (up from -1.333%)
      
      Change-Id: I994dc97046011de4261633ccb0c9d71e374f2c5a
      265db6d0
  25. 24 Mar, 2017 1 commit
  26. 17 Mar, 2017 1 commit
    • Sarah Parker's avatar
      Macro to disable warped/obmc_causal with global motion · 19234cc2
      Sarah Parker authored
      Enabling SEPARATE_GLOBAL_MOTION will remove the ability for
      a block that uses zeromv with global motion to pick warped_causal
      or obmc_causal as the motion mode. When this is enabled there is:
      
      0.05% drop on lowres for global + warped enabled
      0.15% drop on midres for global + warped enabled
      
      0.12% drop on lowres with global + motion var enabled
      0.07% drop on midres with global + motion var enabled
      No performance change for global, warped, or motion var individually.
      
      Change-Id: Idbfb8dd7a93da14902438504b06a08e5212e48cb
      19234cc2
  27. 04 Mar, 2017 1 commit
  28. 02 Mar, 2017 1 commit
    • Sarah Parker's avatar
      Turn off global motion for sub8x8 blocks · ae7c458a
      Sarah Parker authored
      Lowres: 0.03% improvement, 1% improvement on waterfall_cif.y4m
      Midres: 0.085% overall improvement, 1.253% improvement on station2_480p25.y4m
      Change-Id: I3872934d978bb4ca828c6b9acd2fdb951d9da299
      ae7c458a
  29. 27 Feb, 2017 1 commit
  30. 23 Feb, 2017 1 commit
    • David Barker's avatar
      Change gm_get_motion_vector · 45390c18
      David Barker authored
      Since gm_get_motion_vector is trying to give a motion vector for
      "the frame as a whole", it makes more sense for it to calculate
      the motion of the *center* of the block rather than the top-left
      corner of the frame.
      
      In theory, this change should also help the encoder make better
      decisions on when to use global motion. It avoids an issue
      where, early in the frame, NEARESTMV looks like a good way to use
      the global motion vector *without* paying the rate cost applied
      to the first few global motion blocks in each frame. This seems
      to lead to a better overall result.
      
      Change-Id: Ia5c6259ceb8b4ff3d00a5d553e1d18bdb802da59
      45390c18
  31. 22 Feb, 2017 1 commit
  32. 17 Feb, 2017 1 commit
    • Debargha Mukherjee's avatar
      Support trapezoidal models for global motion · 5dfa9300
      Debargha Mukherjee authored
      Adds functinoality for least-squares, RANSAC as well as encoding and
      decoding with new constrained homographies that warp blocks to horizontal
      and/or vertical trapezoids. This is for future experimentation. None
      of the models are actually enabled in the code.
      
      Change-Id: I1936018c6b11587d6fd83c3a2c63548cb641b33f
      5dfa9300
  33. 09 Dec, 2016 1 commit
    • Debargha Mukherjee's avatar
      Support affine/homography models for global motion · b0f6bd44
      Debargha Mukherjee authored
      With this patch affine or homography models can be enabled
      by simply changing the value of the GLOBAL_TRANS_TYPES
      macro in common/mv.h to 4 and 5 respectively. Currently
      it is left at supporting only rotzoom. There is a small
      gain with enabling affine.
      
      Also refactors costing to change based on the model type.
      
      Change-Id: I46c1759de06c42c176c64ec21307ff347ddcc259
      b0f6bd44
  34. 08 Dec, 2016 1 commit
  35. 07 Dec, 2016 1 commit
  36. 01 Dec, 2016 1 commit
  37. 19 Nov, 2016 1 commit
    • Jingning Han's avatar
      Pre-store the pred_diff for nmv context · 3f338830
      Jingning Han authored
      Replace the int_mv storage in the ref_mv_stack struct with unit8_t
      integer to indicate the prediction difference level.
      
      Change-Id: I0bfbcab350a46ecdd5bc47bd918cce9614365227
      3f338830