1. 10 Jan, 2014 2 commits
  2. 08 Jan, 2014 1 commit
    • Paul Wilkins's avatar
      Fix rate allocation bug. · d7b49b28
      Paul Wilkins authored
      Fix miss alignment of the frames contributing to the
      error score and bit allocation for gf/arf groups.
      
      Initial results slightly +.
      
      Change-Id: Ie508bdcfdac52e592d48e1f13e01b3551b523deb
      d7b49b28
  3. 07 Jan, 2014 1 commit
    • 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
  4. 06 Jan, 2014 4 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
    • Dmitry Kovalev's avatar
      Using struct twopass_rc* instead of VP9_COMP*. · b57b82b5
      Dmitry Kovalev authored
      Change-Id: Id9ff7772aa3a3fb5d6cf94aff7dc9489bd964340
      b57b82b5
    • 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
    • Paul Wilkins's avatar
      Clean up: unused function and variables · d7663ede
      Paul Wilkins authored
      Remove adjust_maxq_qrange() and related variables.
      
      Change-Id: I50d065f4619c499283e2680e31d0d99c22439dec
      d7663ede
  5. 03 Jan, 2014 2 commits
    • Dmitry Kovalev's avatar
      Cleaning up get_prediction_decay_rate() function. · 84520829
      Dmitry Kovalev authored
      Change-Id: Ie8fcee21f41f91f94b4fa02f2a55691dea1734e3
      84520829
    • Paul Wilkins's avatar
      Modified Handling of min and max vbr rates. · 65ede3da
      Paul Wilkins authored
      In two pass encodes bits are allocated to each frame
      according to a modified error score for the frame as a
      fraction of the modified error score for the clip or section.
      
      Previously a minimum rate per frame was reserved and
      subtracted from the bits allocatable by the two pass code.
      The vbr max section rate was enforced by clipping the
      actual number of bits allocated.
      
      In this patch the min and max vbr rates are enforced
      instead by clipping the modified error scores for each frame
      rather than the number of bits allocated.
      
      Small gains for all test sets (psnr and SSIM) ranging from
      ~ +0.05 for YT psnr up to ~ +0.25 for Std-hd SSIM.
      
      Change-Id: Iae27d70bdd3944e3f0cceaf225bad2e8802833de
      65ede3da
  6. 19 Dec, 2013 6 commits
    • Dmitry Kovalev's avatar
      Adding get_block_variance_fn() function. · 66ef9d1c
      Dmitry Kovalev authored
      Change-Id: I67d934b6af899ffd4bcad2d913a650685fa64abd
      66ef9d1c
    • Deb Mukherjee's avatar
      Begin refactor of frame schedule in rate control · 4dbad63a
      Deb Mukherjee authored
      Various cleanups and streamlining of interfaces as precursor
      to further advancements in rate control.
      Pre-encode parameter setting for different use cases:
      One-pass, first of 2-pass, second of 2-pass, and Svc
      are separated out.
      
      There is no change in output with this change.
      
      Change-Id: Ied8ca7d84d610993776aa30ef263fe20452e0e3e
      4dbad63a
    • Paul Wilkins's avatar
      Adjust gf_group_error_left for arf groups. · ee29b7e8
      Paul Wilkins authored
      Take account of the fact that the overlay frame is usually
      very cheap so distribute target bits among the other frames.
      
      Change-Id: I120685122e8cbbe75da8d07d02932f7877059867
      ee29b7e8
    • Paul Wilkins's avatar
      Allow arf just before kfs or end of sequence. · cb865998
      Paul Wilkins authored
      This will hurt metrics in some cases (particularly for static
      clips at low data rates where there is extra overhead, but it
      helps smooth transitions around forced key frames between
      stitched kf sections.
      
      Change-Id: I7e1026ae0de6c77bba863061e115136d7f283cc0
      cb865998
    • Paul Wilkins's avatar
      Further q estimate adjustment. · e1312c36
      Paul Wilkins authored
      Slightly reduces the mean tendency to undershoot target
      rate in vbr, especially when using the memory less mode
      and when recodes are disabled.
      
      The effect is primarily at low q.
      
      Change-Id: I59a593b99522cc7da31b4134d1c8a65f5b7b7c53
      e1312c36
    • Paul Wilkins's avatar
      Remove unused code and data structure. · d99e8908
      Paul Wilkins authored
      Remove modified_error_used and adjust_active_maxq().
      
      Change-Id: I8915007128dc1a17e11693104cfb008a6d64e6a2
      d99e8908
  7. 18 Dec, 2013 1 commit
  8. 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
  9. 14 Dec, 2013 1 commit
  10. 13 Dec, 2013 1 commit
  11. 12 Dec, 2013 1 commit
  12. 09 Dec, 2013 1 commit
    • Paul Wilkins's avatar
      Further clean up of estimate_max_q. · 267dadde
      Paul Wilkins authored
      Clean up and simplification of both estimate_max_q
      variants and only call once per clip/section.
      
      This leads to a more constrained range of Q values
      across a clip / section.
      
      Average gains across all 4 test sets:-
      
      PSNR ~0.5%  SSIM ~0.3%
      
      Change-Id: If77d5f7bb50939a464e117724f4da5b001c62d70
      267dadde
  13. 06 Dec, 2013 2 commits
    • 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
    • Deb Mukherjee's avatar
      Further rate control cleanups · 52d27367
      Deb Mukherjee authored
      Includes various cleanups.
      Streamlines the interfaces so that all rate control state
      updates happen in the vp9_rc_postencode_update() function.
      This will hopefully make it easier to support multiple
      rate control schemes.
      Removes some unnecessary code, which in rare cases can casue
      a difference in the constrained quality mode output, but
      other than that there is no bitstream change yet.
      
      Change-Id: I3198cc37249932feea1e3691c0b2650e7b0c22fc
      52d27367
  14. 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
      f00d157c
  15. 27 Nov, 2013 2 commits
    • Deb Mukherjee's avatar
      Continued rate control clean-ups · d17ac4fe
      Deb Mukherjee authored
      Moves all post encode rate control updates to a separate function
      plus other cleanups.
      
      Change-Id: I70e8eccf666c88d8b649b969997fd84d27e4baaa
      d17ac4fe
    • Dmitry Kovalev's avatar
      Removing qcoeff buffers from the decoder. · d3a2e55a
      Dmitry Kovalev authored
      We only need qcoeff buffers in the encoder. Reducing TileWorkerData struct
      and VP9Decompressor struct sizes by 24K.
      
      Change-Id: Id148868461f7ffa3d3dd634b371503ae9c57e207
      d3a2e55a
  16. 26 Nov, 2013 1 commit
  17. 22 Nov, 2013 1 commit
    • Deb Mukherjee's avatar
      Refactoring of rate control - part 1 · f1781e86
      Deb Mukherjee authored
      Moves all rate control variables to a separate structure,
      removes some currently unused variables,
      moves some rate control functions to vp9_ratectrl.c,
      and splits the encode_frame_to_data_rate function.
      
      Change-Id: I4ed54c24764b3b6de2dd676484f01473724ab52b
      f1781e86
  18. 21 Nov, 2013 1 commit
  19. 18 Nov, 2013 2 commits
    • Yaowu Xu's avatar
      Move vp9_extend.{h,c} from common to encoder · 1c61e196
      Yaowu Xu authored
      Since they used in encoder only. This commit also re-order includes
      for the files that include vp9_extend.h
      
      Change-Id: I929fc113f2135d3198cd1fc6a17434e5a2f8a459
      1c61e196
    • Jingning Han's avatar
      Constrain encoder motion search range · bbe68fbd
      Jingning Han authored
      Explicitly constrain the upper limit of motion search range (in the
      unit of full pixel) to be [-1023, +1023]. It is intended to control
      the effective motion search range for 4K sequences.
      
      Change-Id: I645539c70885eec0f155781f439d97d333336e88
      bbe68fbd
  20. 15 Nov, 2013 2 commits
  21. 13 Nov, 2013 1 commit
    • Jingning Han's avatar
      Dual buffer encoding for intra modes · b6b91432
      Jingning Han authored
      Overall change (using dual buffer scheme for superblocks of both inter
      and intra modes) reduces speed 2 runtime:
      bluesky_1080p at 6000kbps:   263553ms -> 257441ms
      riverbed_1080p at 8000kbps:  233230ms -> 225308ms.
      
      Change-Id: Idf8d70f768a4b0d97b2a8506372c57b7b4022119
      b6b91432
  22. 12 Nov, 2013 1 commit
    • Jingning Han's avatar
      Allocate dual buffer sets for encoding · 3b3aea68
      Jingning Han authored
      Allocate memory space of dual buffer sets that store the coeff, qcoeff,
      dqcoeff, and eobs. Connect the pointers of macroblock_plane and
      macroblockd_plane to the actual buffer in use accordingly.
      
      Change-Id: I2f0b5f482ca879fae39095013eaf8901db20a5a4
      3b3aea68
  23. 06 Nov, 2013 1 commit
  24. 31 Oct, 2013 1 commit
  25. 28 Oct, 2013 1 commit
    • James Zern's avatar
      vp9: add TileInfo · 58a0f6db
      James Zern authored
      replaces use of cur_tile_mi_(row|col)_(start|end) by VP9_COMMON, making
      it less stateful and more reusable for parallel tile decoding
      
      Change-Id: I1df09382b4567a0e5f4434825d47c79afe2399be
      58a0f6db
  26. 24 Oct, 2013 1 commit