1. 14 Jan, 2014 1 commit
    • Deb Mukherjee's avatar
      Minor fix on an assert · 1699d6bd
      Deb Mukherjee authored
      Fixes assert that fails occasionally on small values of
      max-key frame intervals. Also, adds a small change on
      updating frames_to_key for frame drops.
      
      Change-Id: Icc2b33b25e3e4ced7e49f8db73e0a887ef9c99e0
      1699d6bd
  2. 13 Jan, 2014 1 commit
    • Yaowu Xu's avatar
      Enable reference frame masking for rt mode · 5e5d4c0e
      Yaowu Xu authored
      Reference frame masking helped good quality mode to gain about 5% in
      encoding speed, this commit enable it for rt mode to gain the speed
      improvement.
      
      In addition, this commit move the speed feature setup to a separate
      function.
      
      Change-Id: I015e8f78bbb21dd43ae183b9b9355bea2ccda9c5
      5e5d4c0e
  3. 11 Jan, 2014 1 commit
    • Dmitry Kovalev's avatar
      Cleaning up and fixing psnr calculation code. · 4def0a81
      Dmitry Kovalev authored
      Introducing calc_psnr() which calculates psnr between two yv12 buffers.
      Previously we incorrectly used width/height instead of
      crop_width/crop_height to calculate number of samples -- fixed.
      
      Change-Id: Iecda01980555de55ad347e0276e6641c793fa56c
      4def0a81
  4. 10 Jan, 2014 4 commits
    • Jim Bankoski's avatar
      explain speed features · 6439aa5a
      Jim Bankoski authored
      Added comments to explain what the various speed features do, and removed
      1 that was clearly unused.
      
      Change-Id: Icd37a536072ddafedbfaefcecbe48979f6d10faf
      6439aa5a
    • Marco Paniconi's avatar
      Don't use gf_update by default for 1-pass CBR. · c46538d4
      Marco Paniconi authored
      Change-Id: I5df6abceb0a2a69706feadeb820b593cae88f573
      c46538d4
    • 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
    • Deb Mukherjee's avatar
      Cleanups on refresh flags · 412e4954
      Deb Mukherjee authored
      Cleanups on frame refresh flags and external overrides.
      
      Change-Id: Ia6a56fe1bde906b1dc3fcbf4ef1c7b207cd2df2d
      412e4954
  5. 09 Jan, 2014 2 commits
    • Marco Paniconi's avatar
      Keep buffer clipped to maximum in change_config. · 193fa5c8
      Marco Paniconi authored
      Under a configuration change, where the bitrate suddenly decreases,
      the buffer level may be larger than maximum allowed (for that first frame to be encoded after change_config).
      This change keeps it clipped to its maximum level.
      
      Change-Id: I4d0b5b3d1fd8148600dd39e02bd630c9464baba5
      193fa5c8
    • Yaowu Xu's avatar
      Simplify set_rt_speed_feature() · 2d381d76
      Yaowu Xu authored
      1. Made speed choices to be progressive
      2. Adjusted rt speed settings to achieve better speed/quality
      
      Overall, rt-5 gained 2.5% in compression/quality, encoding time of 720p
      niklas clip goes from 137,052ms to 121,874ms
      
      Change-Id: Ia6e7e1e15225395a868a2f1059c3db8e266e1600
      2d381d76
  6. 08 Jan, 2014 3 commits
  7. 07 Jan, 2014 3 commits
    • Deb Mukherjee's avatar
      Further rate control cleanups · 730ade41
      Deb Mukherjee authored
      Some cleanups on frames_to_key, frames_since_key.
      Also removes the unused fixed_q parameters in vp9.
      
      Change-Id: If8743a32c71de30a8d17136477b53d607a7acda8
      730ade41
    • 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
    • Jingning Han's avatar
      Remove deprecated variable from rt_speed_feature · fdad4fd2
      Jingning Han authored
      This resolves a merge error.
      
      Change-Id: Ifb83acc0a08e80c82f7624f9c86f79d3a86cc871
      fdad4fd2
  8. 06 Jan, 2014 4 commits
    • 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
    • Yaowu Xu's avatar
      Added placeholder for real time mode · a2c01ed5
      Yaowu Xu authored
      Change-Id: I203d10f76c7ca78d875eaae15557cd765c6240d1
      a2c01ed5
    • Dmitry Kovalev's avatar
      Moving reset_segment_features() to encoder/vp9_segmentation.h. · 4603f31d
      Dmitry Kovalev authored
      Change-Id: I0db4b31cb2382d4f6249eae0a8f42d227ad0ac57
      4603f31d
    • Deb Mukherjee's avatar
      Corerctly sets frame type in the 2 pass case · cf3d2c8d
      Deb Mukherjee authored
      This patch sets frame types correctly in the new
      vp9_get_second_pass_params() function called prior
      to encode_frame_to_data_rate() function, so that the
      latter function can just work with what is passed to
      it. This will allow multiple vp9_get_second_pass_params()
      to be created for various encode strategies without
      messing with the core encode function.
      
      There is no difference in derf and yt. stdhd/hd are pending.
      
      Change-Id: I70dfb97e9f497e9cee04052e0e8e0c2892eab0c3
      cf3d2c8d
  9. 03 Jan, 2014 1 commit
    • Dmitry Kovalev's avatar
      Adding RefBuffer struct. · ba41e9d4
      Dmitry Kovalev authored
      Adding RefBuffer to simplify reference buffer management. The struct has a
      pointer to image data and scale factors relative to the current frame.
      
      Change-Id: If38eb1491ff687cc11428aee339f3e052e2c5d9e
      ba41e9d4
  10. 20 Dec, 2013 2 commits
    • Yaowu Xu's avatar
      Fix a bug · 2472f125
      Yaowu Xu authored
      The line was accidently removed in 4dbad63a.
      
      Change-Id: Ic1e18f209cead95cecc684f952ae667271b58a97
      2472f125
    • 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
  11. 19 Dec, 2013 4 commits
  12. 18 Dec, 2013 2 commits
  13. 17 Dec, 2013 4 commits
    • Yaowu Xu's avatar
      Remove redundant function and calls · ed90a176
      Yaowu Xu authored
      lf deltas are later setup in function vp9_setup_past_independence(),
      so this commit removed the redundant copy. Also renamed a function
      to better align the behavior of the funciton.
      
      Change-Id: I5d28c2f5b12b3d31817e14296ed4605c1fd5c98c
      ed90a176
    • Dmitry Kovalev's avatar
      Reusing FRAME_COUNTS in the encoder. · 1d23a659
      Dmitry Kovalev authored
      Change-Id: I6ab9fe2326ebbadf0dd10cca9f66cf8277e3f43b
      Replacing: comp_inter_count, single_ref_count, comp_ref_count.
      1d23a659
    • Yaowu Xu's avatar
      Move two functions to encoder · 50ec6311
      Yaowu Xu authored
      As they are used by encoder only.
      
      Change-Id: I7b1e6955b218aba66fe156523521a8121c9a84a4
      50ec6311
    • 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
  14. 16 Dec, 2013 1 commit
  15. 13 Dec, 2013 2 commits
    • Yunqing Wang's avatar
      Increase disable_filter_search_var_thresh threshold · da9f55c3
      Yunqing Wang authored
      Increased threshold(t) for interp filter search. This sped up the
      encoder with some PSNR loss.
      
      Borg tests were ran at speed 2.
      t = 100, PSNR loss:
      -0.710%(derf); -0.561%(stdhd); -0.647%(youtube)
      speedup:
      9%(derf); 3%(stdhd); 5.7%(youtube)
      
      t = 500, PSNR loss:
      -1.687%(derf); -1.665%(stdhd); -1.664%(youtube)
      speedup:
      18%(derf); 10%(stdhd); 8%(youtube)
      
      Change-Id: I180e3657c1e156aaa88dc7c437f8bcbd19f5caba
      da9f55c3
    • 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
  16. 11 Dec, 2013 2 commits
  17. 06 Dec, 2013 3 commits
    • Jingning Han's avatar
      Full range motion search for regular block sizes · b295092b
      Jingning Han authored
      Add a full range motion search for regular block sizes. This runs
      exhaustive search within the given reference area. This commit further
      optimizes the search process by combining 4 points test into one
      pipeline, which gives 30% speed-up as compared to run each individual
      point at a time.
      
      This full range search serves as a best possible motion search reference.
      When replacing the diamond search with full range search, the speed 0
      runtime of bus CIF at 2000 kbps goes from 153872ms to 623051ms. The
      compression performance compared to speed 0 setting gains 0.585% for
      derf set.
      
      Change-Id: Ieef1225216b0b86b4ac4872fa7fb9e18bf2eabb3
      b295092b
    • Dmitry Kovalev's avatar
      Removing BLOCK_TYPES and adding PLANE_TYPES constant instead. · d6b159d4
      Dmitry Kovalev authored
      Change-Id: Ic3bb862e93aedf6a489a33ea6f7e5097d96855ee
      d6b159d4
    • Paul Wilkins's avatar
      Remove rate correction factor. · 570b6d25
      Paul Wilkins authored
      Removed an adaptive rate correction factor that was having
      a negative impact on quality in many clips. This factor
      was influencing the Q range available to each frame
      independently of the bits allocated to each.
      
      Average results with DISABLE_RC_LONG_TERM_MEM.
      
      derf +0.199, -0.059.
      yt +3.957, +3.798
      std hd +1.577, +2.140
      yt hd +4.127, +4.513
      
      Average results without  DISABLE_RC_LONG_TERM_MEM
      
      derf -0.628, -0.665
      yt +3.432, +3.015
      std hd -0.105, +0.153
      yt hd +3.432, +3.015
      
      Change-Id: I45bab6b606f49a442e7b27a6d631f3ffd843bbce
      570b6d25