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
  2. 08 Jan, 2014 1 commit
  3. 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
    • 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
    • Dmitry Kovalev's avatar
      Adding new_mv local variable. · c015ba5f
      Dmitry Kovalev authored
      Change-Id: I9631b35810c232c134f39dc0edadb1b3860a45ae
    • Dmitry Kovalev's avatar
      Replacing &cpi->common with cm. · abe4940d
      Dmitry Kovalev authored
      Change-Id: Ic5bf5682ccdb8d2fbad6bba0d7db19a4f47b62a1
  4. 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
    • 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
    • Dmitry Kovalev's avatar
      Combining ref_frame and second_ref_frame into ref_frames[2]. · 6b150c28
      Dmitry Kovalev authored
      Change-Id: I007d66a1cb1b44751dcceafbaa64649ed9a34562
  5. 03 Jan, 2014 3 commits
  6. 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%
      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%
      pedstrian 113949ms -> 108855ms (4.5% speed-up)
      blue_sky  271057ms -> 257322ms (5% speed-up)
      Change-Id: I1b74ea28278c94fea329d971d706d573983d810d
  7. 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
    • 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
    • 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
      Change-Id: I78a2122ba253c428a14558bda0e78ece738d2b5b
  8. 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
  9. 18 Dec, 2013 1 commit
  10. 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
  11. 16 Dec, 2013 2 commits
  12. 14 Dec, 2013 1 commit
  13. 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
    • Jingning Han's avatar
      Remove redefinition in handle_inter_mode · 84acc988
      Jingning Han authored
      Change-Id: I44513b9db6d42e2c52723e1a429f06a93d300c8b
    • James Zern's avatar
      vp9 asserts: fix compile warning · 178db94c
      James Zern authored
      string literal to int within an assert
      Change-Id: I0c889256b67a078e6e2a79577f0b7ae084243258
    • 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
  14. 11 Dec, 2013 3 commits
  15. 10 Dec, 2013 1 commit
    • Dmitry Kovalev's avatar
      Cleaning up skip context calculation. · 2dd20e46
      Dmitry Kovalev authored
        vp9_get_pred_context_mbskip => vp9_get_skip_context
        vp9_get_pred_prob_mbskip    => vp9_get_skip_prob
      Change-Id: I2af499848ef73f3f5cd8cdb27852d0bcdfe31d09
  16. 09 Dec, 2013 2 commits
  17. 07 Dec, 2013 1 commit
  18. 06 Dec, 2013 5 commits
  19. 05 Dec, 2013 1 commit
  20. 04 Dec, 2013 1 commit
    • Dmitry Kovalev's avatar
      Moving eob array to the encoder. · f00d157c
      Dmitry Kovalev authored
      In the decoder we don't need to save eobs, we can pass eob as an argument.
      That's why removing eob arrays from VP9Decompressor and TileWorkerData,
      and moving eob pointer from macroblockd_plane to macroblock_plane.
      Change-Id: I8eb919acc837acfb3abdd8319af63d1bbca8217a