1. 10 Jan, 2014 1 commit
    • Jingning Han's avatar
      Enable skipping reference frame check in rd loop · d66c7486
      Jingning Han authored
      This commit allows encoder to compare the SAD cost associated with
      the best motion vector predictor, per frame. If one reference frame
      has this cost more than 4 times of the best SAD cost given by other
      reference frames, skip NEARESTMV, NEARMV, ZEROMV mode check of this
      reference frame.
      
      This setting is turned on in speed 2 and above. Compression quality
      change in speed 2:
      derf  -0.014%
      yt    -0.097%
      hd    -0.023%
      stdhd  0.046%
      
      It reduces the speed 2 runtime of test sequences:
      pedestrian_area_1080p 4000 kbps 310763 ms -> 303595 ms
      bluesky_1080p 6000 kbps         259852 ms -> 251920 ms
      
      Change-Id: I7f59cf79503d51836d61d56d50dc5bdf0e502e22
      d66c7486
  2. 09 Jan, 2014 1 commit
    • Johann's avatar
      Use the correct member for initialization · 719dadf3
      Johann authored
      On Windows this fails with:
      error C2440: 'initializing': cannot convert from int_mv to uint32_t
      
      Change-Id: I51630efd0e83a0ce620c91aa7859dd6fc1572e99
      719dadf3
  3. 08 Jan, 2014 1 commit
  4. 07 Jan, 2014 4 commits
    • Jingning Han's avatar
      Fix an issue in motion vector prediction stage · 06e4f825
      Jingning Han authored
      The previous implementation stops motion vector prediction test when
      the zero motion vector appears for the second time. This commit fixes
      it by simply skipping the second time check on zero mv and continuing
      on to next mv candidate.
      
      It slightly improves stdhd in speed 2 by 0.06% on average. Most static
      sequences are not affected. A few hard ones, like jet, ped, and riverbed
      were improved by 0.1 - 0.2%.
      
      Change-Id: Ia8d4e2ffb7136669e8ad1fb24ea6e8fdd6b9a3c1
      06e4f825
    • Dmitry Kovalev's avatar
      Removing unused mvp_fill manipulation code. · 6a7a7341
      Dmitry Kovalev authored
      The code can be removed because mvp_full will be overridden after that.
      
      Change-Id: I89559b1b6914c86bcd02b7359d37241948ac11d3
      6a7a7341
    • Dmitry Kovalev's avatar
      Adding new_mv local variable. · c015ba5f
      Dmitry Kovalev authored
      Change-Id: I9631b35810c232c134f39dc0edadb1b3860a45ae
      c015ba5f
    • Dmitry Kovalev's avatar
      Replacing &cpi->common with cm. · abe4940d
      Dmitry Kovalev authored
      Change-Id: Ic5bf5682ccdb8d2fbad6bba0d7db19a4f47b62a1
      abe4940d
  5. 06 Jan, 2014 3 commits
    • Dmitry Kovalev's avatar
      Adding get_ref_frame_buffer() function. · 7919bf6a
      Dmitry Kovalev authored
      Encapsulating direct references to lst_fb_idx, gld_fb_idx, alt_fb_idx.
      
      Change-Id: I7e65ba3f131286e433e6651970c5647311fa4687
      7919bf6a
    • Jingning Han's avatar
      Remove avoid_frame_with_high_error from RD loop · 393a8cce
      Jingning Han authored
      The feature undergoes prior assumption that the recursive partition
      size search from 4x4 to 64x64, hence utilizing information from small
      blocks to determine early termination in large block rate-distortion
      optimization search. The current codebase is now going from top down.
      The previous function might go with not properly initialized values,
      hence removed.
      
      Tested on pedestrian_area_1080p at 4000 kbps running under speed 2.
      No visible difference in runtime observed.
      
      Change-Id: I553df415c6191413762db7ae34e8790c71d8118e
      393a8cce
    • Dmitry Kovalev's avatar
      Combining ref_frame and second_ref_frame into ref_frames[2]. · 6b150c28
      Dmitry Kovalev authored
      Change-Id: I007d66a1cb1b44751dcceafbaa64649ed9a34562
      6b150c28
  6. 03 Jan, 2014 3 commits
  7. 27 Dec, 2013 1 commit
    • Jingning Han's avatar
      Adaptive motion control on ref and search range · a4ce53f1
      Jingning Han authored
      This commit takes a preliminary attempt to refine the motion search
      control. It detects the SAD associated with mv predictor per reference
      frame, and based on which to determine whether the encoder wants to
      reduce the motion search range (if the predicted mv provides fairly
      small SAD), or to skip the current reference frame (if there exists
      another ref frame that gives much smaller SAD cost).
      
      This feature is turned on in the settings of speed 1 and above.
      
      In speed 1, compression performance changed
      derf  -0.018%
      yt    -0.043%
      hd    -0.045%
      stdhd -0.281%
      
      speed-up
      pedestrian_area_1080p at 4000 kbps 100 frames
      199651ms -> 188846ms (5.5% speed-up)
      blue_sky_1080p at 6000 kbps
      443531ms -> 415239ms (6.3% speed-up)
      
      In speed 2, compression performance changed
      derf  -0.026%
      yt    -0.090%
      hd    -0.055%
      stdhd -0.210%
      
      speed-up
      pedstrian 113949ms -> 108855ms (4.5% speed-up)
      blue_sky  271057ms -> 257322ms (5% speed-up)
      
      Change-Id: I1b74ea28278c94fea329d971d706d573983d810d
      a4ce53f1
  8. 20 Dec, 2013 3 commits
    • Jingning Han's avatar
      Store the SSE of prediction residuals · 243327f4
      Jingning Han authored
      Buffer the SSE of prediction residuals in the rate-distortion
      optimization loop of a given block. This information would be used
      for later encoding control.
      
      Change-Id: If4e63f3462490513c48be9407d3327c8dd438367
      243327f4
    • Dmitry Kovalev's avatar
      Removing vp9_findnearmv.{h, c} files. · 987810ad
      Dmitry Kovalev authored
      Moving all code from that files to vp9_mvref_common.{h, c}.
      
      Change-Id: Ibc4afcb8cea6847166ff411130e93611ebe63b20
      987810ad
    • Dmitry Kovalev's avatar
      Using single struct to represent scale factors. · a3fbcc88
      Dmitry Kovalev authored
      Moving back to scale_factors struct. We don't need anymore x_offset_q4 and
      y_offset_q4 because both values are calculated locally inside vp9_scale_mv
      function.
      
      Change-Id: I78a2122ba253c428a14558bda0e78ece738d2b5b
      a3fbcc88
  9. 19 Dec, 2013 1 commit
    • Dmitry Kovalev's avatar
      Call set_scaled_offsets() just before scale_mv() call. · c872d2be
      Dmitry Kovalev authored
      Before mv scaling it is required to calculate x_offset_q4/y_offset_q4
      by calling set_scaled_offsets(). Now offset configuration can not be
      missed because it happens just before scale_mv().
      
      Change-Id: I7dd1a85b85811a6cc67c46c9b01e6ccbbb06ce3a
      c872d2be
  10. 18 Dec, 2013 1 commit
  11. 17 Dec, 2013 1 commit
    • Deb Mukherjee's avatar
      Rate control changes on active_worst_quality · 1e59cbf2
      Deb Mukherjee authored
      Various cleanups and refactoring.
      Removes feedback of active worst qaulity and uses last_q
      instead to make the interface cleaner. Active worst quality
      is now decided only once for a frame being coded in the
      beginning based on last_q and other stats. Also, adds other
      cleaups on last_q to store also the last_q for altref frames,
      and reduces the altref interval a little.
      
      The output does change a little.
      derfraw300: +0.224% (global psnr)
      stdhdraw250: +0.442% (global psnr)
      
      Change-Id: Ie634cdc032697044c472dd0fe79c109b3e7f9767
      1e59cbf2
  12. 16 Dec, 2013 2 commits
  13. 14 Dec, 2013 1 commit
  14. 13 Dec, 2013 4 commits
    • Dmitry Kovalev's avatar
      Using MV struct instead of int_mv union in encoder. · 25da21b1
      Dmitry Kovalev authored
      Change-Id: I8b81a3e4b4fa530a654c28d9c136afa0c1d379fd
      25da21b1
    • Jingning Han's avatar
      Remove redefinition in handle_inter_mode · 84acc988
      Jingning Han authored
      Change-Id: I44513b9db6d42e2c52723e1a429f06a93d300c8b
      84acc988
    • James Zern's avatar
      vp9 asserts: fix compile warning · 178db94c
      James Zern authored
      string literal to int within an assert
      
      Change-Id: I0c889256b67a078e6e2a79577f0b7ae084243258
      178db94c
    • Jingning Han's avatar
      Enable adaptive pred filter type for sub8x8 · 3b5a90bd
      Jingning Han authored
      This commit enables an adaptive prediction filter type selection
      for sub8x8 block sizes. In speed 1, it re-uses the filter type of
      collocated 8x8 block if it is tested in the rate-distortion optimization
      loop, for the sub8x8 blocks. Otherwise, it runs the normal test
      over all the three filter types. In speed 2, it re-uses the 8x8
      block's prediction filter type, if available. Otherwise, force it
      to be EIGHTTAP.
      
      Compression and speed performance wise:
      speed 1
      derf -0.266%
      yt   -0.138%
      
      bus at 2000 kbps: 33766ms -> 30451ms (10% speed-up)
      football at 600 kbps: 48173ms -> 43786ms (9% speed-up)
      
      speed 2
      derf -0.026%
      yt   +0.134%
      
      bus at 2000 kbps: 18973ms -> 17698ms (6% speed-up)
      football at 600 kbps: 26748ms -> 25096ms (6% speed-up)
      
      Change-Id: I77e097533b969fd3472147225fa79fc98095d342
      3b5a90bd
  15. 11 Dec, 2013 3 commits
  16. 10 Dec, 2013 1 commit
    • Dmitry Kovalev's avatar
      Cleaning up skip context calculation. · 2dd20e46
      Dmitry Kovalev authored
      Renames:
        vp9_get_pred_context_mbskip => vp9_get_skip_context
        vp9_get_pred_prob_mbskip    => vp9_get_skip_prob
      
      Change-Id: I2af499848ef73f3f5cd8cdb27852d0bcdfe31d09
      2dd20e46
  17. 09 Dec, 2013 2 commits
  18. 07 Dec, 2013 1 commit
  19. 06 Dec, 2013 5 commits
  20. 05 Dec, 2013 1 commit