summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_ratectrl.c
AgeCommit message (Collapse)Author
2014-04-02Merge "Adding local pointer variables referencing REATE_CONTROL struct."Dmitry Kovalev
2014-04-02Merge "Remove the q division by 3 for first frame."Marco Paniconi
2014-04-02Merge "Speed setting correction to max q estimate."Paul Wilkins
2014-04-01Adding local pointer variables referencing REATE_CONTROL struct.Dmitry Kovalev
Change-Id: I1d8c312a599db505a023e5cd0cc4ba2b8f696a2e
2014-04-01Remove the q division by 3 for first frame.Marco Paniconi
This code/setting was actually not used (since speed features were not set on first frame, until a recent change) and should be removed. In CBR mode, the q value for the first frame can be controlled by setting the target size via the parameters rc_buf_initial_sz (and max_intra_size_pct). Change-Id: I65afc64972b36c449bd5a8c25800e65da5389066
2014-04-01Speed setting correction to max q estimate.Paul Wilkins
Use a crude correction factor to correct for lower compression efficiency at higher encode speeds when estimating the max Q for the clip. Change-Id: I5ae377647f4adf5e91d700a8791fb3b8f70efc73
2014-03-31Apply finer quantizer to partition search frames in non-RD flowJingning Han
This commit optimizes the bit allocation for the non-RD coding flow. It applies slightly better quantizer to the frames, where all blocks run a non-RD partition search. Such frames typically have better rate-distortion trade off, thus improving the reconstruction quality for next few frames reference at reasonably low increment in rate cost. The coding performance for rtc set at speed -5 with error-resilient tuned on and rate control set as cbr is improved by 19.58%. It improved the coding speed by about 10% for a portion of local test clips. Change-Id: I9d56696cd4359dc8136ca10aff10fff05aaa2686
2014-03-28[svc] Finalize first version of 2nd pass rcMinghai Shang
Change-Id: I366850015004644c4fc7feabe27a782fdd8d8718
2014-03-25Merge "Moving setup_{key, inter}_frame() to vp9_onyx_if.c."Dmitry Kovalev
2014-03-24Initialization code cleanup.Dmitry Kovalev
Change-Id: I47a8b4bf9a6cc0063d1a6785eaaad641d0659e24
2014-03-24Moving setup_{key, inter}_frame() to vp9_onyx_if.c.Dmitry Kovalev
Change-Id: I044e393438c7b58a6393e20efa38fd03d745ad33
2014-03-19Merge "Removed several unused functions."Yaowu Xu
2014-03-18Merge "Cleaning up calc_active_worst_quality_one_pass_vbr()."Dmitry Kovalev
2014-03-18Cleaning up calc_active_worst_quality_one_pass_vbr().Dmitry Kovalev
Change-Id: Ibfccee5e35c235c02843e1c1fbd3c39034619cf5
2014-03-17Removed several unused functions.Yaowu Xu
Change-Id: Ib9e27298c575afc02a98b593bc6ad60762064d9b
2014-03-17Moving defines from vp9_onyx_int.h to suitable *.c files.Dmitry Kovalev
Change-Id: I0d39bdbb8166ee44561f1008d1a2e76e70b36f30
2014-03-03Avoid gf/altref boost in pick_q under svc cbr mode.Marco Paniconi
Change-Id: Ib719a9f74924718715592e0238bc391ae239d026
2014-02-27Fixing include order in vp9_ratectrl.c.Dmitry Kovalev
Change-Id: Id1ec41275cc35565e522a1b2ac252ea3ec05638f
2014-02-26Merge "Using clamp() for active_{best, worst}_quality."Dmitry Kovalev
2014-02-25Using clamp() for active_{best, worst}_quality.Dmitry Kovalev
Change-Id: Ia79f975f54829b8ae6b568ca5c05f4f1f541706f
2014-02-25Adds variance based fixed size partitioningDeb Mukherjee
Adds a method for determining a fixed size partition based on variance of a 64x64 SB. This method is added to rtc speed 6. Also fixes a bug in rtc_use_partition() and includes some refactoring related to partitioning search, and some cosmetics. Currently compared to speed 5, the coding efficiency of speed 6 is -19% and that of speed 7 is -55%, in cbr mode. Change-Id: I057e04125a8b765906bb7d4bf7a36d1e575de7c6
2014-02-18Remove comment from calls to vp9_clear_system_state.Adrian Grange
Removed the comment "// __asm emms;" from all calls to vp9_clear_system_state. Change-Id: Ib4dae69c1cdf3f185b04184a870cd70c4d703f10
2014-02-14Enforce max-intra-pct in one-pass cbr modeDeb Mukherjee
This was inadvertently left out in a previous refactoring step. Change-Id: Idf3350e95152f876a1a1a4591dd30c8981856c96
2014-02-14vp9_ratectrl - convert buffers to int64 to avoid castingJim Bankoski
Change-Id: Ifd6b2d36d91237b5f38853a3a8a529d8be38ba09
2014-02-13Fix target frame size setting, for 1pass cbr.Marco Paniconi
Only use layered average size if number_temporal_layers > 1. Also removed unneeded commented-out line, and change some parameter setting in vpx_temporal_scalable_patterns.c Change-Id: Ic86e43e7daf0313e8c5a4aba1497299158111955
2014-02-13Merge "static analysis warning in vp9_ratectrl.c"Jim Bankoski
2014-02-12static analysis warning in vp9_ratectrl.cJim Bankoski
Change-Id: I8aa3dd068d9a7225b3e8b24392a7b4a54b9435dd
2014-02-12Merge "Removes active_worst_quality feedback"Deb Mukherjee
2014-02-11Removes active_worst_quality feedbackDeb Mukherjee
Removes certain cases of feedback of active_worst_quality, and removes it from the RATE_CONTROL structure. Now active worst quality is expected to be computed locally in the q picking function during the encode. Making temporal filter strength depend on avg_frame_qindex rather than on active_worst_quality actually improves performance esp. for yt. derf: +0.038% yt: +0.359% Change-Id: I1fe5a343034b55af9322289165321f00ac0827b1
2014-02-11Merge "Use more meaningful names for speed features"Jingning Han
2014-02-10Use more meaningful names for speed featuresJingning Han
Use frame_parameter_update to precisely describe the functionality. Change-Id: Ia9a55ba8efef7b987e30d949dd00ac716189bdb9
2014-02-10Further one-pass vbr rate control changesDeb Mukherjee
Some parameter changes and fixes on one-pass rate control. derfraw300 is now only 10% below 2-pass speed 0 rate control. Change-Id: I1940eef8a5a035dc18e71b880d5e00cabd1f01b9
2014-02-10Some updates and fixes for layered CBR mode.Marco Paniconi
-Properly set the average frame size for each layer. -Allow each layer to update its average/last Q stats after encoding. -Initialize for some layer context variables. Change-Id: Iaa37d144fcf4f30ff4283a4e8db8b9ca8bf4c815
2014-02-07Cleaning up vp9_ratectl.c.Dmitry Kovalev
Change-Id: I13738ef1f307cc5f563126bc7a92beaa01fde3bd
2014-02-06Parameter fixes for one-pass non-cbr modeDeb Mukherjee
Fixes some of the parameters for 1-pass non-cbr mode. Also includes some cleanups, inlcuding refactoring of the recode_loop options. Results on derfraw300 improve by about 5-6%, so that the one-pass mode is now 13% below the 2-pass mode in speed 0. Change-Id: I844cc2638694c7574f3be00d41d60b23dc1016f0
2014-02-06Layer based rate control for CBR mode.Marco Paniconi
This patch adds a buffer-based rate control for temporal layers, under CBR mode. Added vpx_temporal_scalable_patters.c encoder for testing temporal layers, for both vp9 and vp8 (replaces the old vp8_scalable_patterns). Updated datarate unittest with tests for temporal layer rate-targeting. Change-Id: I8900a854288b9354d9c697cfeb0243a9fd6790b1
2014-02-05Merge "Clamping active_{best, worst}_quality values."Dmitry Kovalev
2014-02-05One-pass rate control cleanups/fixes/refactoringDeb Mukherjee
Inlcudes a number cleanups: 1. Moves the one-pass pre-encode parameter setting functions to vp9_ratectrl.c 2. Deprecates per_frame_bandwidth in RATE_CONTROL structure 3. Removes target_bandwidth in cpi structure since it is not used. 4. Various renaming of functions There is no bit-stream change in 2-pass, one-pass cbr and one-pass vbr modes. Change-Id: Ifd9916bf4d485b7d04c5f52044ffe6703254ccbd
2014-02-04One-pass rate control fixes and cleanupsDeb Mukherjee
Fixes rate control partially in one-pass non-cbr case to achieve a bitrate close to the one desired. Previous version was way off at the high bitrate end. Also includes several one-pass rate control cleanups and refactoring. On derfraw300, one-pass encoding is now 19% off from two-pass speed 0 encoding, down from 35%. Change-Id: I6f0dcdb7f8aa85a7e7cd3a3155d4f9d2a4d2f4f4
2014-01-31vp9/encoder: fix function prototypesJames Zern
silences warnings about declarations not matching prototype Change-Id: I30b9a24f78ebe3b9cc2bbfcd3a7363ba7c328e4d
2014-01-29Enables alt-ref frames in one pass modeDeb Mukherjee
Includes a few fixes and clean-ups that adds the ability to use alt-ref frames in one-pass mode. Whether alt-refs are actually used or not is controlled by a macro USE_ALTREF_FOR_ONE_PASS in vp9_firstpass.c. This first cut seems to improve derf by 15+% in 1-pass mode. But further experiments with parameters are underway. Change-Id: I78254421435478003367c788c7930d2dc4ee2816
2014-01-27Clamping active_{best, worst}_quality values.Dmitry Kovalev
Change-Id: If370f83080b403e417716d1edad58fdaa2b90170
2014-01-24Cleaning up vp9_ratectl.c file.Dmitry Kovalev
Change-Id: I8cfa5d5eb2c1bbacd9b604cc5dc0a2cd2e5cebb8
2014-01-22Simplifying target_size_from_buffer_level() function.Dmitry Kovalev
Change-Id: I1d556ddf04ab0a98eadf412972a6977c1055446f
2014-01-17Cleaning up vp9_ratectrl.c.Dmitry Kovalev
Change-Id: I3a260d3ca68db3a9352ae5409de76e56202976e5
2014-01-16Fix key frames for one pass.Alex Converse
Set this_key_frame_forced flag and don't use kf_boost when not set. Change-Id: Ibe66a82fa9219e60db358ddeb43d6471816c8b50
2014-01-15Merge "Cleaning up reatectrl.c file."Dmitry Kovalev
2014-01-15Merge "Add max burst bitrate control."Yaowu Xu
2014-01-14Minor fix on an assertDeb Mukherjee
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
2014-01-14Add max burst bitrate control.Paul Wilkins
Applies an upper limit on burst bitrate for any frame. This is to insure that typical encodes for YT do not produce frames that are so large that they risk stalling HW implementations. Such frames could also cause playback problems in SW. For now the limit is set at 250 bits per MB for 1080P and larger (with the 1080P limit used for smaller frames). Setting maxQ, constant quality mode or targeting a very high bandwidth will have precedence over this limit. Change-Id: Ie6f776c38b06ac7cec043d034085f4b79ee46a38