summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_ratectrl.c
AgeCommit message (Collapse)Author
2014-08-19vp9_ratectrl.c : remove dead assignment to clear warningJim Bankoski
Change-Id: Iacc0b5c58032bde372ed9f99b87712547c4d8454
2014-08-14Merge "Moving framerate from VP9EncoderConfig to VP9_COMP."Dmitry Kovalev
2014-08-12Minor Two pass rate control adjustments.Paul Wilkins
Alter way in which we identify static scenes. Remove some redundant code. Change-Id: I883c2ea2e341770648a8663d8881f720ed099b61
2014-08-08Moving framerate from VP9EncoderConfig to VP9_COMP.Dmitry Kovalev
Framerate changes over time, VP9EncoderConfig supposed to have static read-only data. Change-Id: I36580a7ee71243c1eabb57691089691731d03e67
2014-08-08Moving pass from VP9_COMP to VP9EncoderConfig.Dmitry Kovalev
We had a very complicated way to initialize cpi->pass from cfg->g_pass: switch (cfg->g_pass) { case VPX_RC_ONE_PASS: oxcf->mode = ONE_PASS_GOOD; break; case VPX_RC_FIRST_PASS: oxcf->mode = TWO_PASS_FIRST; break; case VPX_RC_LAST_PASS: oxcf->mode = TWO_PASS_SECOND_BEST; break; } cpi->pass = get_pass(oxcf->mode). Now pass is moved to VP9EncoderConfig and initialization is simple: switch (cfg->g_pass) { case VPX_RC_ONE_PASS: oxcf->pass = 0; break; case VPX_RC_FIRST_PASS: oxcf->pass = 1; break; case VPX_RC_LAST_PASS: oxcf->pass = 2; break; } Change-Id: I8f582203a4575f5e39b071598484a8ad2b72e0d9
2014-08-06[spatial svc]Add is_spatial_svc() helper function.Minghai Shang
Change-Id: Ice5376100d8e27cbdaddfd3cd06898cedd2720fe
2014-08-04[spatial svc]Enabl golden frame for base layer and fix wrong ref_frame_flag ↵Minghai Shang
for upper layers in first frame Change-Id: I1fec9c084b499b2f445b79726066d01b136b59fa
2014-07-23[spatial svc]Fix reference issuesMinghai Shang
1. Remove last reference flag for first frame upper layers in one pass mode. 2. Disable refresh golden frame flag for key frames. Change-Id: I44ac1bd2c795169e4fbfdd078ea79a1d33a204d6
2014-07-16Merge "vp9_ratectrl.c: refactor get_active_quality usage"Guillaume Martres
2014-07-14[spatial svc]Implement alt reference framesMinghai Shang
All changes are for spatial svc only. 1. Enable encoding hidden frames in each layer and use alt reference idex to reference the hidden frame in each layer 2. Use golden reference idx for spatial reference 3. For those layers that don't have hidden frames (caused by lack of frame buffers), reference a hidden frame in lower layers 4. Add "auto-alt-refs" in svc options Change-Id: Idf27d1fd2fb5f3ffd9e86d2119235e3dad36c178
2014-07-06vp9_ratectrl.c: refactor get_active_quality usageGuillaume Martres
Change-Id: I53db06acf5bc434f9584136b848322f5870300b3
2014-06-24Dual ARF changes: Buffer index selection.Paul Wilkins
Add indirection to the section of buffer indices. This is to help simplify things in the future if we have other codec features that switch indices. Limit the max GF interval for static sections to fit the gf_group structures. Change-Id: I38310daaf23fd906004c0e8ee3e99e15570f84cb
2014-06-24Adjust arf Q limits with multi-arf.Paul Wilkins
Adjust enforced minimum arf Q deltas for non primary arfs in the middle of an arf/gf group. Change-Id: Ie8034ffb3ac00f887d74ae1586d4cac91d6cace2
2014-06-24Clean out old CONFIG_MULTIPLE_ARF code.Paul Wilkins
Remove the old experimental multi arf code that was under the flag CONFIG_MULTIPLE_ARF. Change-Id: Ib24865abc11691d6ac8cb0434ada1da674368a61
2014-06-24Experiment for mid group second arf.Paul Wilkins
This patch implements a mechanism for inserting a second arf at the mid position of arf groups. It is currently disabled by default using the flag multi_arf_enabled. Results are currently down somewhat in initial testing if multi-arf is enabled. Most of the loss is attributable to the fact that code to preserve the previous golden frame (in the arf buffer) in cases where we are coding an overlay frame, is currently disabled in the multi-arf case. Change-Id: I1d777318ca09f147db2e8c86d7315fe86168c865
2014-06-13Replacing RC_MODE with vpx_rc_mode.Dmitry Kovalev
Both enums are identical. Change-Id: I06653f9c90a2d3a2dd5c741e75b17ee7d066a56f
2014-06-12Adding is_altref_enabled() function.Dmitry Kovalev
Change-Id: I54cdb4ce11590511e6f86bc2fd55771f1c18a20a
2014-06-05Fixes qindex for first frame in 1-pass cq/q modesDeb Mukherjee
Produces sane qindex for the first frame in 1-pass constant and constrained qualirty modes. Change-Id: Ib2a5091df15a23489e9bb5534a2019cf2689755e
2014-06-03Using 2 instead of 3 elements for avg_frame_qindex array.Dmitry Kovalev
The third array element was unused. 2 elements now: key- and interframe. Change-Id: I5b8b9f5d889cc96a204cedfc432059293256298e
2014-06-03Adding buffer levels to RATE_CONTROL struct.Dmitry Kovalev
Change-Id: Ib35ff854378764dc3c6745844c67a33dee545663
2014-05-30Merge "Re-factor some duplicate code."Paul Wilkins
2014-05-28Re-factor some duplicate code.Paul Wilkins
Change-Id: I89a1dbea39c50c7633f746d9c93fec3a289f1b42
2014-05-27Using 2 instead of 3 elements for last_q array.Dmitry Kovalev
Change-Id: I2c6950e7d79fc89c6f97e6dcf47317ef66c453a5
2014-05-22Fix for missing initialization of ratectrl varsDeb Mukherjee
Initializes total_actual_bits and total_target_bits to 0 Change-Id: Ia50d3bf5df765146a44aa1f6045e73367ccf50df
2014-05-22vp9_ratectrl.c: Fix MSVC warnings.Tom Finegan
Change-Id: I4bd635949240880ced5f581c24e981ccd0374e40
2014-05-22Adjust cq_level in constrained quality modeDeb Mukherjee
If we are already saving a lot in bits from the target (maximum) bitrate in the constrained quality mode, allow the quantizer to go lower than the cq level. This hopefully will solve issues with getting too low a bitrate and consequently poor quality for certain videos in cq mode. Change-Id: I1c4e8b0171fcf58f95198b3add85eea5f3c8f19f
2014-05-15Merge "vp9_ratectrl.c: cleanup -wextra warning"Yaowu Xu
2014-05-14vp9_ratectrl.c: cleanup -wextra warningYaowu Xu
Change-Id: I7ca46fa26acd80a21210cb8d9584ad812cb995bf
2014-05-13Tune minq index table for P frames in one_pass_cbr coding modeJingning Han
Allow slightly larger minq-maxq range for P frames. This improves the compression performance of speed -5 for rtc set by 2.7% in psnr. Change-Id: I438653d52d0fe51111509c6092e2334bac2de0cf
2014-05-09Allow speed 5 losslessAlex Converse
tx_mode supercedes whatever mechanism is used to push for 16x16 allowing for the use of the 4x4 transform. Change-Id: I6c3f05ab9fe52050e40cc6303de9334653763289
2014-05-07Remove separate arf and gf minq tables.Paul Wilkins
Merged minq tables for arf and gf cases. These tables were almost the same and for VBR the arf table was not used at all. Change-Id: Ie3c87e91dab613cf06f6945ac1ace0e0e4213d34
2014-05-07Rate control adjustment.Paul Wilkins
Small adjustment to the active Q range calculations. These changes should slightly extend the available Q range for KF/GF/ARF and narrow it for other frames. The results for this change in isolation are broadly positive for SSIM and average PSNR and slightly up but mixed for opsnr. derf +0.293% opsnr, +1.286% SSIM std-hd + 0.528% opsnr, + 1.746% SSIM yt +0.056% opsnr, +0.457% SSIM yt-hd -0.147% opsnr, + 0.226% SSIM Change-Id: If065280342027ecc5d44b49fc1d440dfef041002
2014-05-05Merge "[spatial svc] No need to code full width and height for non key frame"Minghai Shang
2014-05-02[spatial svc] No need to code full width and height for non key frameMinghai Shang
Change-Id: I62ab0f4346b4157a90dc5b5f73ab5e597d69c1bd
2014-05-01Merge "Moving #defines to *.c from *.h."Dmitry Kovalev
2014-04-30[svc rc] RC improvement for key frames in upper layers for spatial svc.Minghai Shang
Change-Id: Id6ab59e505be28cd4eb9f1fe114feb47debe0539
2014-04-30Moving #defines to *.c from *.h.Dmitry Kovalev
Change-Id: I7cc6f441f414ca1b4d95dad3f789fff6faf8c3c4
2014-04-24Remove key_frame_frequency variable from VP9_COMPAdrian Grange
This member of VP9_COMP seemed unnecessary since it only shadowed VP9EncoderConfig.key_freq that is accessible through VP9_COMP. Change-Id: Ib751bb1cf1b0b3c50a2a527d7c34f6829dd6fee3
2014-04-21Change naming of end_usage parameter.Paul Wilkins
The end_useage parameter is confusingly named since it now actually defines the rate control method used. Change-Id: I98912caabfe556b7af0b939a645d1336409e4d71
2014-04-21Merge "Merge two new VBR adjustment schemes."Yaowu Xu
2014-04-21Merge "Add experimental VBR adaptation method."Yaowu Xu
2014-04-18Renaming VP9_CONFIG to VP9EncoderConfig.Dmitry Kovalev
Change-Id: Id48edd12c6f649c82113128491ef6ea7410e93b2
2014-04-17Removing cq_target_quality from VP9_COMP.Dmitry Kovalev
Use cq_level (which is identical) from VP9_CONFIG instead. Change-Id: I1aaf2fcef3d2dbd4577f613d27693ff8a68989fd
2014-04-17Merge two new VBR adjustment schemes.Paul Wilkins
To make direct side by side testing this patch combines two VBR corrections schemes to allow more direct side by side testing. (The other patch was by Debargha chg id I0cd1f7...) Change-Id: I271c45e5c4ccf8de8305589000218b80d9dc3a25
2014-04-16Add experimental VBR adaptation method.Paul Wilkins
Add code to monitor over and under spend and apply limited correction to the data rate of subsequent frames. To prevent the problem of starvation or overspend on individual frames (especially near the end of a clip) the maximum adjustment on a single frame is limited to a % of its un-modified allocation. Change-Id: I6e1ca035ab8afb0c98eac4392115d0752d9cbd7f
2014-04-16Merge "Fix rate control bug."Paul Wilkins
2014-04-16Fix rate control bug.Paul Wilkins
Fix rate control bug whereby the rate factor heuristics were being updated on arf overlays causing a rate surge for a few frames followed by a corrective drop. This fix eliminates many of the overshoot problems that we were seeing on hard clips (even without applying stricter vbr rate control) and also helps quality on almost all clips with some hard clips improving by >5%. Overall quality results measured at speed 2. Derf +1.78% opsnr , +2.44% SSIM Stdhd +2.41% opsnr, +2.85% SSIM Change-Id: I2369df6295c2705963fa6307877f6acb304bcc39
2014-04-15Renaming av_per_frame_bandwidth to avg_frame_bandwidth.Dmitry Kovalev
Just to be consistent with min_frame_bandwidth & max_frame_bandwidth names. Change-Id: I36702c708cba9ad1a5c36393f37758a2edeadb90
2014-04-15Merge "Cleaning up vp9_rc_compute_frame_size_bounds()."Dmitry Kovalev
2014-04-15Merge "Moving frame_frags field from VP9Common to VP9_COMP."Dmitry Kovalev