1. 06 Jan, 2014 2 commits
    • Dmitry Kovalev's avatar
      Using struct twopass_rc* instead of VP9_COMP*. · b57b82b5
      Dmitry Kovalev authored
      Change-Id: Id9ff7772aa3a3fb5d6cf94aff7dc9489bd964340
    • 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
  2. 03 Jan, 2014 2 commits
    • Dmitry Kovalev's avatar
      Cleaning up get_prediction_decay_rate() function. · 84520829
      Dmitry Kovalev authored
      Change-Id: Ie8fcee21f41f91f94b4fa02f2a55691dea1734e3
    • 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
  3. 19 Dec, 2013 6 commits
    • Dmitry Kovalev's avatar
      Adding get_block_variance_fn() function. · 66ef9d1c
      Dmitry Kovalev authored
      Change-Id: I67d934b6af899ffd4bcad2d913a650685fa64abd
    • 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
    • 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
    • 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
    • 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
    • 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
  4. 18 Dec, 2013 1 commit
  5. 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
  6. 14 Dec, 2013 1 commit
  7. 13 Dec, 2013 1 commit
  8. 12 Dec, 2013 1 commit
  9. 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
  10. 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
    • 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
  11. 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
  12. 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
    • 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
  13. 26 Nov, 2013 1 commit
  14. 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
  15. 21 Nov, 2013 1 commit
  16. 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
    • 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
  17. 15 Nov, 2013 2 commits
  18. 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
  19. 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
  20. 06 Nov, 2013 1 commit
  21. 31 Oct, 2013 1 commit
  22. 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
  23. 24 Oct, 2013 1 commit
  24. 17 Oct, 2013 1 commit
  25. 16 Oct, 2013 3 commits
  26. 09 Oct, 2013 1 commit
    • Jingning Han's avatar
      Deprecate the use of PARTITION_INFO from encoder · 03fe08ca
      Jingning Han authored
      Use b_mode_info to store the inter prediction mode of sub8x8 block,
      in replacement of the use of partition_info. Remove redundant buffer
      update for partition_info. For bus_cif at 2000 kbps, this seem to make
      speed 0 about 1% faster.
      Change-Id: Id1b3be45e75a24fb4b42335ac480c23e440978f6
  27. 06 Oct, 2013 1 commit