1. 10 Jan, 2014 2 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
    • Deb Mukherjee's avatar
      Cleanups on refresh flags · 412e4954
      Deb Mukherjee authored
      Cleanups on frame refresh flags and external overrides.
      
      Change-Id: Ia6a56fe1bde906b1dc3fcbf4ef1c7b207cd2df2d
      412e4954
  2. 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
    • 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
  3. 03 Jan, 2014 1 commit
    • 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
  4. 20 Dec, 2013 1 commit
  5. 19 Dec, 2013 3 commits
  6. 18 Dec, 2013 2 commits
  7. 17 Dec, 2013 2 commits
    • 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
    • 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
  8. 13 Dec, 2013 1 commit
    • 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
  9. 11 Dec, 2013 2 commits
  10. 06 Dec, 2013 4 commits
    • 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
    • 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
    • Dmitry Kovalev's avatar
      Renaming constants. · 0d4b8d7e
      Dmitry Kovalev authored
      NUM_YV12_BUFFERS        => FRAME_BUFFERS
      ALLOWED_REFS_PER_FRAME  => REFS_PER_FRAME
      NUM_REF_FRAMES_LOG2     => REF_FRAMES_LOG2
      NUM_REF_FRAMES          => REF_FRAMES
      NUM_FRAME_CONTEXTS_LOG2 => FRAME_CONTEXTS_LOG2
      NUM_FRAME_CONTEXTS      => FRAME_CONTEXTS
      
      Change-Id: I4e1ada08f25d8fa30fdf03aebe1b1c9df0f87e63
      0d4b8d7e
  11. 27 Nov, 2013 1 commit
    • 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
  12. 26 Nov, 2013 1 commit
    • Deb Mukherjee's avatar
      Some cleanups on rate control · 25f1195a
      Deb Mukherjee authored
      Removes the active_worst_qchanged variable since it is never
      set to 1.
      
      Change-Id: I29a291fd1068fd9b504a2db7768d45644c1eae3e
      25f1195a
  13. 25 Nov, 2013 1 commit
    • Paul Wilkins's avatar
      In frame Q adjustment experiment. · 644bd87e
      Paul Wilkins authored
      The idea here is to allow "in frame" adjustment of the final Q
      value used to encode each SB64, using segmentation.
      
      There is also adjustment of the rd mult in regions of overspend.
      
      Activated using aq_mode=2
      
      Change-Id: I2f140cd898c9f877c32cd6d2e667f5e11ada4b1c
      644bd87e
  14. 23 Nov, 2013 1 commit
    • Dmitry Kovalev's avatar
      Renaming COMPPREDMODE_TYPE enum and its members. · fb9c19c6
      Dmitry Kovalev authored
      List of renames:
        COMPPREDMODE_TYPE      => REFERENCE_MODE
        SINGLE_PREDICTION_ONLY => SINGLE_REFERENCE
        COMP_PREDICTION_ONLY   => COMPOUND_REFERENCE
        HYBRID_PREDICTION      => REFERENCE_MODE_SELECT (like TX_MODE_SELECT)
        NB_PREDICTION_TYPES    => REFERENCE_MODES
      
      Change-Id: If723dabe9435325d0165dcd028142a2c78b417b4
      fb9c19c6
  15. 22 Nov, 2013 2 commits
  16. 21 Nov, 2013 1 commit
  17. 15 Nov, 2013 1 commit
  18. 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
  19. 11 Nov, 2013 1 commit
    • Jingning Han's avatar
      Decouple macroblockd_plane buffer usage · d8b4c792
      Jingning Han authored
      Make the macroblockd_plane contain dynamic buffer pointers instead
      static pointers to the memory space allocated therein. The decoder
      uses the buffer allocated in pbi, while encoder will use a dual
      buffer approach for rate-distortion optimization search.
      
      Change-Id: Ie6f24be2dcda35df7c15b4014e5ccf236fb3f76c
      d8b4c792
  20. 04 Nov, 2013 2 commits
    • Adrian Grange's avatar
      Remove unused members from VP9_COMP · 44e25155
      Adrian Grange authored
      Removed:
      goldfreq, avg_encode_time, avg_pick_mode_time,
      cpu_freq, interquantizer
      member variables from VP9_COMP since they are no longer
      used in the code.
      
      Change-Id: I010a82c217d0da03c3f53d1858d3462190c12dcf
      44e25155
    • Adrian Grange's avatar
      Remove unused member variables from VP9_COMP · a0a6590e
      Adrian Grange authored
      Removed three members from the VP9_COMP data structure:
      inter_zz_count, gf_bad_count, gf_update_recommended.
      
      These were part of the VP8 real-time mode implementation
      that was removed from the initial VP9 codecbase.
      
      Change-Id: I866b083b88ef02c74837277d50ce532ca88492f3
      a0a6590e
  21. 31 Oct, 2013 1 commit
  22. 30 Oct, 2013 1 commit
  23. 25 Oct, 2013 2 commits
  24. 19 Oct, 2013 2 commits
    • Paul Wilkins's avatar
      Modified no memory rate control. · eec3def7
      Paul Wilkins authored
      This 2-pass rate control setting allocates bits based
      on first pass stats to each kf group, gf group and individual
      frame but does not correct the bits left and allocation after
      each frame.
      
      In other words it recommends a bit allocation for each frame
      but does not try and correct any over or under spend on a
      frame over the remainder of the clip. This reduces the accuracy
      of rate control in terms of hitting an average bitrate but prevents
      problems that may arise because early frames either use to many
      or too few bits. This mode is currently more inclined to undershoot
      than overshoot (particularly at higher data rates).
      
      Also minor changes to rate of adaption when recode loop is not
      enabled.
      
      This mode is currently enabled by default for VBR.
      It gives the following % performance gains.
      
      derf +0.467, +1.072
      yt 2.962, 2.645
      stdhd 1.682, 1.595,
      yt-hd 2.3, 2.174
      
      Change-Id: I3c84a9bf8884e5b345698ff0e19187f792c2f3a0
      eec3def7
    • Dmitry Kovalev's avatar
      Removing NUM_ prefix from constant names. · 6d2a0da7
      Dmitry Kovalev authored
      Renames for consistency with other constants:
        NUM_FRAME_TYPES -> FRAME_TYPES
        NUM_PARTITION_CONTEXTS -> PARTITION_CONTEXTS
      
      Change-Id: I3db30acb2868eb0a424237c831087b2e264ec47f
      6d2a0da7
  25. 16 Oct, 2013 1 commit