- 10 Feb, 2015 1 commit
-
-
Adrian Grange authored
Note: This feature is still in development. Add an option for the encoder to decide the resolution at which to encode each frame. Each KF/GF/ARF goup is tested to see if it would be better encoded at a lower resolution. At present, each KF/GF/ARF is coded first at full-size and if the coded size exceeds a threshold (twice target data rate) at the maximum active Q then the entire group is encoded at lower resolution. This feature is enabled in vpxenc by setting: --resize-allowed=1 In addition, if the vpxenc command line also specifies valid frame dimensions using: --resize-width=XXXX & --resize_height=YYYY then *all* frames will be encoded at this resolution. Change-Id: I13f341e0a82512f9e84e144e0f3b5aed8a65402b
-
- 28 Jan, 2015 1 commit
-
-
Paul Wilkins authored
Remove damping parameter and use the damping formula introduced by Yaowu Xu in all cases. Change-Id: I18db7e0d0f262d5140102f259ab07821d374d285
-
- 21 Jan, 2015 1 commit
-
-
Paul Wilkins authored
Just before a forced key frame we often get a foreshortened arf/gf group. In such a case, we do not want to update rc->last_boosted_qindex, which is used to define the Q range for the forced key frame itself. This gives a small average metrics gain for the YT and YT-HD sets (eg. YT SSIM +0.141%). Change-Id: Ie06698bc4f249e87183b8f8fb27ff8f3fde216d9
-
- 05 Dec, 2014 1 commit
-
-
Frank Galligan authored
ioc found a potential integer overflow in the rate control. This is related to https://code.google.com/p/webm/issues/detail?id=821 Change-Id: Ib6c4acd6e964972f932fce7490592eb134f2b7ea
-
- 03 Dec, 2014 1 commit
-
-
Marco authored
For a few refresh periods after key frame, use large qp-delta to increase quality ramp-up. Change-Id: Ib5a150fb2dfa6bafd0d4e6b5d28dfd0724b61319
-
- 02 Dec, 2014 1 commit
-
-
Marco Paniconi authored
Incorporate segment delta-q into estimated bits. This generally improves the rate control under cyclic refresh (aq=3) mode. Change-Id: I1dc60fb230e7d08357fae18909d8ed27bf58e037
-
- 25 Nov, 2014 1 commit
-
-
Yaowu Xu authored
When the golden frame is boosted, the rate correction factor is not correlated well with other inter frames even in CBR mode. This commit changes to use GF specific rate_correction_factor when gf_cbr_boost is greater than 20%. Change-Id: I6312c1564387bcacc11f4c5e8a9cfdc781b5c3ab
-
- 19 Nov, 2014 1 commit
-
-
Yaowu Xu authored
VP9/DatarateTestVP9Large.ChangingDropFrameThresh/[34] fails post the merge of commit#ffa06b37. This commit adds reset of rc tracking info when frame is dropped, and fixes the causes of the bad interaction between the tests and the previous commit. Change-Id: I848acfd9fcb336359662274325190f94aac76eae
-
- 18 Nov, 2014 1 commit
-
-
Yaowu Xu authored
In rare cases, the interaction between rate correction factor and Q choices may cause severe oscillating frame sizes that are way off target bandwidth. This commit adds tracking of rate control results for last two frames, and use the information to prevent oscillating Q choices. Change-Id: I9a6d125a15652b9bcac0e1fec6d7a1aedc4ed97e
-
- 17 Nov, 2014 1 commit
-
-
Marco authored
Current setting had active_worst_quality set too high (close to worst_quality) for first frame(s) following first key frame. This changes that to be somewhat more aggressive in allowing active_worst_quality to be lower following key frame. Also remove the 4/5 reduction in active_worst for key frame as this should be set by the user qp_max setting. Change-Id: I0530b3ddcc85c00e3eb7568de1b14a31206c4a4c
-
- 13 Nov, 2014 2 commits
-
-
Adrian Grange authored
Prepare for the introduction of frame-size change logic into the recode loop. Separated the speed dependent features into separate static and dynamic parts, the latter being those features that are dependent on the frame size. Change-Id: Ia693e28c5cf069a1a7bf12e49ecf83e440e1d313
-
Yaowu Xu authored
Rate correction factor is used to correct the estimated rate for any given quantizer, and feeds into rate control for quantizer selection. We make use of the actual bits used to calculate this rate correction factor with an adjustment limit to prevent over-adjustment. This commit adapts the adjustment limit to the difference between the estimated bits and the actual bits, allows the adjustment limit to vary between 0.125 (when estimate is close to actual) and 0.625 (when there is >10X factor off between estimated and actual bits). By doing this, the commit appears to have largely corrected two observed issues: 1. Adjustment is too slow when the actual bits used is way off from estimate due to the small adjustment limit. 2. Extreme oscillating quantizer choices due to the feedback loop. Change-Id: I4ee148d2c9d26d173b6c48011313ddb07ce2d7d6
-
- 11 Nov, 2014 1 commit
-
-
Yaowu Xu authored
I0c5f010 changed to allow update golden reference buffer in CBR mode, this commit changes the use of rate_correction_factor for those frames to be aligned with the new usage. This commit attempts to solve two issues: a. Initialization of rate correction factor for Golden Frame Prior to this patch, even the regular inter frame has been update the rate correction factor based on content and encoding results, the first golden frame would still use the ininitialized value that can be way off. b. Allowing rate correction factor update to be slightly faster Prior to this patch, when the rate correction factor is off, the update to the factor is too slow, the factor could not get close to a semi-correct value even after many frames. The commit helps all clips in psnr/ssim metric, but especially to a few clip in RTC set that rate correction was way off. For example thaloundeskmtgvga gained about .5dB for both overall/average psnr. Change-Id: I0be5c41691be57891d824505348b64be87fa3545
-
- 28 Oct, 2014 1 commit
-
-
Yaowu Xu authored
This commit changes to allow the usage of golden reference frame in VP9 CBR mode to improve quality. VP9 supports potentially up to 8 reference buffers, it has reference buffers available for this purpose. This was not possible in VP8 as golden and alt-ref buffers were used for temporal scalability purpose in CBR mode in WebRTC. For frames that update golden frame, there can be a quality boost. The amount of allowed bitrate boost can be controlled via parameter rc_max_inter_bitrate_pct. The inital value of the boost ratior is currently based on over_shoot_pct. Further experiments will work out the adaption of this boost value. Change-Id: I0c5f010c8fd8b7b598f69779c1b30e5b2ac30a4d
-
- 24 Oct, 2014 1 commit
-
-
Yaowu Xu authored
Change-Id: I205de3611622cff7f751ea8baf9f82784581730a
-
- 23 Oct, 2014 1 commit
-
-
Paul Wilkins authored
Add second level arf Q adjustment when using dual arfs in constant Q mode. Previously in constant Q mode enabling dual arf hurt by ~5% but with this change the average benefit is ~1-1.5% with some mid range data points up ~10%. Note however that it still hurts on some clips including some very low motion show content. Change-Id: I5b7789a2f42a6127d9e801cc010c20a7113bdd9b
-
- 16 Oct, 2014 1 commit
-
-
Paul Wilkins authored
This removes an unnecessary restriction that causes a problem (noticed by AWG) when the forced key frame interval is set to a very small value, such as 10. In this case we were being forced to code minimal length GF groups. Change-Id: I76ef5861a09638ff51f61fea02359554184ada53
-
- 13 Oct, 2014 1 commit
-
-
Paul Wilkins authored
Allow min and maxQ to creep when the undershoot or overshoot exceeds thresholds controlled by the command line under_shoot_pct and over_shoot_pct values. Default is 100%,100% which ~disables adaptation. Derf results for example undershoot% / overshoot%:- Head:- Mean abs (%rate error) = 14.4% This check in:- 25%/25% - Mean abs (%rate error) = 6.7% PSNR hit -1% SSIM -0.1% 5% / 5% - Mean abs (%rate error) = 2.2% PSNR hit -3.3% SSIM - 1.1% Most of the remaining error and most of the quality hit is at extreme data rates. The adaptation code still has an exception for material that is in effect static so that we don't over adjust and over spend on YT slide show type content. (Rebase of If25a2449a415449c150acff23df713e9598d64c9 to resolve a auto-merge error) Change-Id: Iec4e1613ef0d067454751d8220edb7058dfbd816
-
- 10 Oct, 2014 2 commits
-
-
Alex Converse authored
This reverts commit 869d4ca5. This breaks the build via conflict with e18edd5e. Change-Id: If544b99e367a449452834eb8cce600f58c34ec0d
-
Paul Wilkins authored
Allow min and maxQ to creep when the undershoot or overshoot exceeds thresholds controlled by the command line under_shoot_pct and over_shoot_pct values. Default is 100%,100% which ~disables adaptation. Derf results for example undershoot% / overshoot%:- Head:- Mean abs (%rate error) = 14.4% This check in:- 25%/25% - Mean abs (%rate error) = 6.7% PSNR hit -1% SSIM -0.1% 5% / 5% - Mean abs (%rate error) = 2.2% PSNR hit -3.3% SSIM - 1.1% Most of the remaining error and most of the quality hit is at extreme data rates. The adaptation code still has an exception for material that is in effect static so that we don't over adjust and over spend on YT slide show type content. Change-Id: If25a2449a415449c150acff23df713e9598d64c9
-
- 07 Oct, 2014 1 commit
-
-
Jim Bankoski authored
Change-Id: Ie69a164bc166b6a8819777038d65a7d9f9c3361f
-
- 06 Oct, 2014 1 commit
-
-
Paul Wilkins authored
Adjustments to the GF interval choice and minimum boost. Adjustment to the calculation of 2 pass worst q. Compared to 09/29 head there is metrics hit on derf of (-0.123%,-0.191%) Compared to the September 29 head and a baseline on September 18 baseline the accuracy of the VBR rate control measured on the derf set is as follows:- Mean error % / Mean abs(error %) Sept 18 baseline (-7.0% / 14.76%) Sept 29 head (-15.7%, 19.8%) This check in (-1.5% / 14.4%) The mean undershoot is reduced slightly but the worst case overshoot on e.g. harbour/highway is increased. This will be addressed in a later patch. Change-Id: Iffd9b0ab7432a131c98fbaaa82d1e5b40be72b58
-
- 18 Sep, 2014 1 commit
-
-
Paul Wilkins authored
Substantial restructuring of the way we estimate the rate of decay in prediction quality and determine the arf interval and amount of boost used. Also other changes to support moving to a lower first pass Q which exposes some new features and allows us to better distinguish genuinely static blocks from low motion or noisy blocks. Net gains now visible on all the test sets with std-hd PSNR up 1.87%. There are still some bad outlier cases but most of these are low motion or slide show type content where the metrics are already high at any given rate. The best + case is up by more than 10%. Change-Id: I18e25170053bdf3188f493ff8062f48a74515815
-
- 16 Sep, 2014 1 commit
-
-
Deb Mukherjee authored
Adds various high bitdepth quantization functions. Change-Id: I36fc0bf75a1bd15128ed271df8723de0ac134b0c
-
- 02 Sep, 2014 1 commit
-
-
Minghai Shang authored
It's built based on current spatial svc code. We only support one spatial two temporal layers at this time. Change-Id: I1fdc8584354b910331e626bfae60473b3b701ba1
-
- 19 Aug, 2014 1 commit
-
-
Jim Bankoski authored
Change-Id: Iacc0b5c58032bde372ed9f99b87712547c4d8454
-
- 12 Aug, 2014 1 commit
-
-
Paul Wilkins authored
Alter way in which we identify static scenes. Remove some redundant code. Change-Id: I883c2ea2e341770648a8663d8881f720ed099b61
-
- 08 Aug, 2014 2 commits
-
-
Dmitry Kovalev authored
Framerate changes over time, VP9EncoderConfig supposed to have static read-only data. Change-Id: I36580a7ee71243c1eabb57691089691731d03e67
-
Dmitry Kovalev authored
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
-
- 06 Aug, 2014 1 commit
-
-
Minghai Shang authored
Change-Id: Ice5376100d8e27cbdaddfd3cd06898cedd2720fe
-
- 04 Aug, 2014 1 commit
-
-
Minghai Shang authored
[spatial svc]Enabl golden frame for base layer and fix wrong ref_frame_flag for upper layers in first frame Change-Id: I1fec9c084b499b2f445b79726066d01b136b59fa
-
- 23 Jul, 2014 1 commit
-
-
Minghai Shang authored
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
-
- 14 Jul, 2014 1 commit
-
-
Minghai Shang authored
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
-
- 06 Jul, 2014 1 commit
-
-
Guillaume Martres authored
Change-Id: I53db06acf5bc434f9584136b848322f5870300b3
-
- 24 Jun, 2014 4 commits
-
-
Paul Wilkins authored
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
-
Paul Wilkins authored
Adjust enforced minimum arf Q deltas for non primary arfs in the middle of an arf/gf group. Change-Id: Ie8034ffb3ac00f887d74ae1586d4cac91d6cace2
-
Paul Wilkins authored
Remove the old experimental multi arf code that was under the flag CONFIG_MULTIPLE_ARF. Change-Id: Ib24865abc11691d6ac8cb0434ada1da674368a61
-
Paul Wilkins authored
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
-
- 13 Jun, 2014 1 commit
-
-
Dmitry Kovalev authored
Both enums are identical. Change-Id: I06653f9c90a2d3a2dd5c741e75b17ee7d066a56f
-
- 12 Jun, 2014 1 commit
-
-
Dmitry Kovalev authored
Change-Id: I54cdb4ce11590511e6f86bc2fd55771f1c18a20a
-