summaryrefslogtreecommitdiff
path: root/vp9
AgeCommit message (Collapse)Author
2017-11-13Small parameter clean up.paulwilkins
Removed three parameters that are no longer needed in calls to calc_arf_boost() and associated minor changes. No impact on encode results. Change-Id: Ieaf31d0d2e1990b99cf69647170145a1bbfbb9fb
2017-11-13Merge "Fix to frames considered in arf boost calculation."Paul Wilkins
2017-11-13Merge "CVBR command line option."Paul Wilkins
2017-11-10Merge "vpx: [x86] add vp9_block_error_fp_avx2()"Scott LaVarnway
2017-11-09vp9-svc: Avoid minmax variance for non-reference frames.Marco
For choose_partitioning (speed >= 6): avoid computation of minmax variance for non-reference frames in SVC. Existing condition only avoided this for speed >= 8. Combine that existing logic with non-reference condition. Small speedup (~0.5-1%) for 3 layer SVC, neutral change on avgPSNR/SSIM metrics. Change-Id: I3e9f3a1af0647b15e475cf170d9402908d672ee5
2017-11-09vp9: SVC feature to use partition from lower resolution.Jerome Jiang
For SVC with 3 spatial layers: Add feature to copy/upscale partition from middle spatial layer to the upper/highest resolution, when superblock sad is not high. Enabled for speed >= 7 and only for non-reference frames. Speedup ~3-4%, small loss in avgPNSR/SSIM of ~1%. Change-Id: I7f0a2716c0fde28bade0f86159d11b7e31d6ab8d
2017-11-09vpx: [x86] add vp9_block_error_fp_avx2()Scott LaVarnway
SSE2 asm vs AVX2 intrinsics speed gains: blocksize 16: ~1.00 blocksize 64: ~1.17 blocksize 256: ~1.67 blocksize 1024: ~1.81 Change-Id: I2a86db239cf57e3ff617890ccb2d236aba83ad5e
2017-11-09Fix to frames considered in arf boost calculation.paulwilkins
For a chosen interval "i" the existing arf boost calculation examined frames +/- (i-1) frames from the current location in the second pass. This change checks to make sure that the forward search does not extend beyond the next key frame in the event that the distance to the next key frame is < (i - 1). Small metrics gains on all our test sets but these are localized to a few clips (e.g. midres set psnr-hvs sintel -2.59% but overall average was only -0.185%) Change-Id: I26fc9ce582b6d58fa1113a238395e12ad3123cf6
2017-11-08Merge "Support building AVX-512 and implement sadx4 for AVX-512"Johann Koenig
2017-11-08CVBR command line option.paulwilkins
Added command line control of Corpus VBR. The new corpus vbr mode is a variant of standard VBR (end-usage=0) where the complexity distribution mid point is passed in rather than calculated for a specific clip or chunk. The new variant is enabled by setting a new command line parameter --corpus-complexity to a zero value. Omitting this parameter or setting it to 0 will cause the codec to use standard vbr mode. The correct value for a given corpus needs to be derived experimentally using a training set such that the average rate for the corpus is close to the target value. For example our using our low res test set with upper and lower vbr limits of 50%-150% and a corpus complexity value of 650 gives a similar average data rate across the set to using standard vbr. However, with the corpus mode easier clips will be allocated fewer bits and harder clips more bits rather than having the same rate target for all. Change-Id: I03f0fc8c6fb0ee32dc03720fea6a3f1949118589
2017-11-06Nonrd_pickmode: avoid computing UV cost when early_term is set.Marco
For nonrd_pickmode: if early_term is set there should be no need to include UV in rdcost (when color_sensitivity is set). Neutral change on RTC and RTC_derf metrics, for speed >= 5. No change for ytlive metrics. Very small speed gain (~0.5%) on some clips with strong color content. Change-Id: Ifc00928ecd935fc71e94935ceef0ae7481249f07
2017-11-03Support building AVX-512 and implement sadx4 for AVX-512Kyle Siefring
The added AVX-512 support requires the subset of AVX-512 added in Skylake-X. Change-Id: I39666b00d10bf96d06c709823663eb09b89265b7
2017-11-03Compound prediction mode for nonrd pickmode.Marco
Allow for compound prediction mode in nonrd_pickmode for ZEROMV. For real-time encoding, 1 pass with non-zero lag-in-frames. Added speed feature to control the feature. Enabled for speed >=6 for now, under VBR mode. avgPSNR/SSIM metrics positive on ytlive set, for speed 6: some clips up by ~3-5%, some clips neutral gain, average gain across clips is ~1%. Small/negligible decrease in speed. Change-Id: I7a60c7596e69b9a928410c5ee2f9141eecd8613d
2017-11-01Merge "vp9: Move allocation of vt2 after early exits."Jerome Jiang
2017-10-31vp9: Move allocation of vt2 after early exits.Jerome Jiang
Remove the memory deallocation on the early exits. Change-Id: I00b4a814ae6705105ecab89644d055ca3311d9f4
2017-10-31Merge "vp9: Reduce stack usage of choose_partitioning."Jerome Jiang
2017-10-31vp9: Reduce stack usage of choose_partitioning.Jerome Jiang
Move vt2 to heap. Reduce the stack usage from ~87K to ~44K. BUG=b/68362457 Change-Id: I8f5f93712934d59a8cc4564378172d409a736a2e
2017-10-30Merge "vp9: Reduce stack usage of choose_partioning."Jerome Jiang
2017-10-30vp9: Reduce stack usage of choose_partioning.Jerome Jiang
Change type of sum_square_error from int64_t to uint32_t. Change type of sum_error from int64_t to int32_t. This reduces the stack usage from ~131K to ~87K. BUG=b/68362457 Change-Id: I147d7c7b226bceb4f0817bb86848e1fa9d9ac149
2017-10-23vp9-svc: Allow for adapt_rd_thresh with row-mt.Marco
Set adaptive_row_thresh_mt = 1 at speed >= 7, for svc when multi-threading is used with row-mt. This allow the adaptive_rd_thresh feature to be used in the nonrd-pickmode. ~1-2% speedup for SVC encoding with small quality loss (< 0.6%) on RTC set. Change-Id: Iab9878dff117bccdaef3e4d0645165db9808cdfc
2017-10-19Merge "Corpus VBR tweak for undershoot."Paul Wilkins
2017-10-19Merge "Increase precision of some debug stats output for corpus VBR."Paul Wilkins
2017-10-19Merge "Prevent double application of min rate in two pass."Paul Wilkins
2017-10-17Merge changes I17fff122,Ic149e3cbLinfeng Zhang
* changes: Add 4 to 3 scaling SSSE3 optimization Test extreme inputs in frame scale functions
2017-10-16Add 4 to 3 scaling SSSE3 optimizationLinfeng Zhang
Note this change will trigger the different C version on SSSE3 and generate different scaled output. Its speed is 2x compared with the version calling vpx_scaled_2d_ssse3(). Change-Id: I17fff122cd0a5ac8aa451d84daa606582da8e194
2017-10-13Adjust threshold in gf_boost for 1 pass vbrMarco
Small inncrease the sad_thresh1, avoids some false detection of possible scene changes within lag. Small improvement in few clips on ytlive, otherwise neutral change. Change-Id: Ia79b53bb657bbce65a7aac7d20666b6373d5af8b
2017-10-13Merge "Further Corpus VBR change."Paul Wilkins
2017-10-13Merge "Corpus Wide VBR test implementation."Paul Wilkins
2017-10-13Corpus VBR tweak for undershoot.paulwilkins
In cases of strong undershoot adjust Q range down faster. Change-Id: I84982beceb3c9b6dc50e52e4a6e891c7dd395d03
2017-10-12Merge "Adjust to scene detection for 1 pass vbr."Marco Paniconi
2017-10-12Adjust to scene detection for 1 pass vbr.Marco
Expose the threshold for setting key frame on cut, and increase it for speed 5. Also small adjustment to min_thresh. No change in overall metrics or fps. Small quality improvement and lower encode time on scene cuts. Change-Id: I36e06ff3b26b6c29aede39c23fce454525fc9026
2017-10-12Increase precision of some debug stats output for corpus VBR.paulwilkins
Change-Id: I75841797cc0c215781b5b36e3a3e9f4b0e35ba63
2017-10-11vp9: use nonrd pick_intra for small blocks on keyframes.Jerome Jiang
Keyframe encoding is more than 2x faster. Disabled on Speed 8. Change-Id: I2157318b6ac8253fa5398322c72d98cd7fa9b2b6
2017-10-11Prevent double application of min rate in two pass.paulwilkins
The initial allocation of bits in the two pass code to each frame should be within the min max limits on the command line. However, when forming an ARF group the cost of the ARF is shared by frames in that group such that the residual bits for a frame could drop below the min value. This change prevents the minimum being re-applied after the cost of the ARF has been deducted as this may otherwise cause low rate sections to overshoot their target. Test runs comparing to a baseline run with min and max section pct 0-2000% vs one closer to the YT use case (50-150%) suggest that this fix not only results in better rate control but also gives a better rd outcome. For example the HD set vs 0-2000% baseline (opsnr, ssim). Old code (50-150): +0.751, +1.099 New code(50-150): +0.241, -0.009 Change-Id: I715da7b130bf53ba8aa609532aa9e18b84f5e2ef
2017-10-10Add 4 to 1 scaling x86 optimizationLinfeng Zhang
Change-Id: I51c190f0a88685867df36912522e67bdae58a673
2017-10-10Adjustment to scene detection and key frame.Marco
For 1 pass vbr: use higher threshold on avg_sad and force key frame under scene cut detection if above the threshold. Allow it for speed >= 6 for now, since it does not use the full nonrd_pickmode partition (as in speed 5). Improves quality somewhat on scene cut frames. Neutral on overall metrics and fps for speed 6 on ytlive set. Change-Id: I12626f7627419ca14f9d0d249df86c7104438162
2017-10-10Merge changes I9d4c1af5,I882da3a0Linfeng Zhang
* changes: Rename some inline functions in NEON scaling Generalize 2:1 vp9_scale_and_extend_frame_ssse3()
2017-10-10Further Corpus VBR change.paulwilkins
Change to the bit allocation within a GF/ARF group. Normal VBR and CQ mode allocate bits to a GF/ARF group based of the mean complexity score of the frames in that group but then share bits evenly between the "normal" frames in that group regardless of the individual frame complexity scores (with the exception of the middle and last frames). This patch alters the behavior for the experimental "Corpus VBR" mode such that the allocation is always based on the individual complexity scores. Change-Id: I5045a143eadeb452302886cc5ccffd0906b75708
2017-10-10Corpus Wide VBR test implementation.paulwilkins
This patch makes further changes to support an experimental corpus wide VBR mode that uses a corpus complexity number as the midpoint of the distribution used to allocate bits within a clip, rather than some average error score derived from the clip itself. At the moment the midpoint number is hard wired for testing and the mode is enabled or disabled through a #ifdef. Ultimately this would need to be controlled by command line parameters. Change-Id: I9383b76ac9fc646eb35a5d2c5b7d8bc645bfa873
2017-10-09Rename some inline functions in NEON scalingLinfeng Zhang
Change-Id: I9d4c1af53d57f72fc716bacbe3b0965719c045ac
2017-10-09Merge "Update vp9_scale_and_extend_frame_ssse3()"Linfeng Zhang
2017-10-06Merge "Revert "Speed >=5 real-time: add TM intra mode for high_source_sad.""Marco Paniconi
2017-10-06Revert "Speed >=5 real-time: add TM intra mode for high_source_sad."Marco Paniconi
This reverts commit 9311ef18b4b4eff0da3adf9d702a34f489a270ff. Reason for revert: Notice small regression in some clips. Will revisit in another change. Original change's description: > Speed >=5 real-time: add TM intra mode for high_source_sad. > > Small/neutral change in metrics or speed for ytlive. > Some improvement in quality on frames with big content change. > > Change-Id: Ib3b0703a5f28ea6710e90324436e27598ab7384d TBR=marpan@google.com,builds@webmproject.org,jianj@google.com Change-Id: I9d8ec5195bb05ddf329d325699355185affb9b13 No-Presubmit: true No-Tree-Checks: true No-Try: true
2017-10-06Adjust threshold in scene detectionMarco
For 1 pass vbr: increase min_thresh slightly, and also add condition on golden/arf update for using full nonrd_pick_partition. Reduces possible false detection for scene cut detection. Neutral/small change in metrics or speed for speed 5. Change-Id: I388f4d9a56e3cc763e0148338c1bc0381e58ad76
2017-10-05Speed >=5 real-time: add TM intra mode for high_source_sad.Marco
Small/neutral change in metrics or speed for ytlive. Some improvement in quality on frames with big content change. Change-Id: Ib3b0703a5f28ea6710e90324436e27598ab7384d
2017-10-04Adjust threshold for adapt_partition for speed 6.Marco
Lower SAD threshold to select non_rd pickmode partition at superblock level more often. Small gain in metrics, small/negligible decrease in speed. Change-Id: I0f728236b91a604e4ca7e02039adc54d5985c4dc
2017-10-04Avoid nonrd_pick_partition for speed >= 6.Marco
For 1 pass vbr speed >= 6: when REFERENCE_PARTITION is selected, avoid doing the full nonrd_pickmode based partition. No change in overall metrics or speed. Reduces encode times on scene cuts by 10-20%. Change-Id: I0310b1610cc1c83793a509e0a9059840e8f18308
2017-10-04Generalize 2:1 vp9_scale_and_extend_frame_ssse3()Linfeng Zhang
Change-Id: I882da3a04884d5fabd4cd591c28682cbb2d76aa5
2017-10-04Update vp9_scale_and_extend_frame_ssse3()Linfeng Zhang
Change-Id: I22622faebfcc36f7a4d1f37e3800ae8ab87c8cd4
2017-10-04Modify early exit for alt_ref in nonrd_pickmode.Marco
For 1 pass vbr mode: On no-show_frame/ARF: instead of skipping alt_ref_frame completely in mode testing, allow for checking (0, 0) on alt_ref. Small gain in metrics, ~0.18%, no change in speed. Change-Id: I32a3c24faca64ab70dd5091071a0dc301db7dd1e