summaryrefslogtreecommitdiff
path: root/vp9/encoder
AgeCommit message (Collapse)Author
2016-06-08Merge "Refactor probability savings search."Alex Converse
2016-06-08Merge "Revert "remove vp9_diamond_search_sad_avx.c""James Zern
2016-06-08Merge "Avoid a potential assertion fail in optimize_b()"Hui Su
2016-06-07Revert "remove vp9_diamond_search_sad_avx.c"Scott LaVarnway
This reverts commit be12fefa4b7d224e9f39275a6bb4fab01b8bae3b and commit 057c1c4034ba5b9bf360c5c1f600ebc6d0718c3a. Also, the mismatch between the avx version and the c version has been fixed. BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1168 For a rt encode using 1080p@60fps material, up to 11% performance improvement overall was seen. Change-Id: Icd1f216209ebc6fc0b8da885f32f356fa4355ed0
2016-06-07Avoid a potential assertion fail in optimize_b()hui su
The eob of a block is not perperly set when skip_recode is true, thus triggering assert(eob <= default_eob) to fail. Change-Id: Ifecbe33dce2dc4903e0a80bd384dc09bf0dd8a44
2016-06-07vp9: Replace the avg_size_inter metric, for 1 pass vbr.Marco
Code cleaup, use existing rolling_actual/target metrics instead, set threshold to get same/similar effect. Little/no change in metrics on ytlive set. Change-Id: I74f3c3d0a143a9cf20dc9c3dee54c0f7e6a97a51
2016-06-07vp9: Small ajustment to settings gf_interval, 1 pass vbr.Marco
Add a max condition and lower the min value. No change in behavior (metrics for yt live set) for the default min/max_gf_interval=4/16 settings. Small positive change when min/max_gf_interval=7/16 (for 60fps clips on ytlive set). Change-Id: I1c1d72425c86c69419ea43fb9730130e81062f91
2016-06-03Merge "Slightly more damped VBR adjustment."Paul Wilkins
2016-06-03Merge "Change to get_twopass_worst_quality()"Paul Wilkins
2016-06-03Merge "Removed unused data structure."Paul Wilkins
2016-06-03Merge "Adjustment to VBR rate correction."Paul Wilkins
2016-06-03Merge "Adjustment calculation of active worst quality."Paul Wilkins
2016-06-03Merge "Remove gf_zeromotion_pct."Paul Wilkins
2016-06-03Slightly more damped VBR adjustment.paulwilkins
Increase in the damping used in adjusting the active Q range. This does hurt rate accuracy a little in a few extreme cases especially if the clip is very short*, but helps metrics. * Note that the adjustment is applied at the GF/ARF group level based on what happened in the last group. Hence for very short clips where the length of a single group may be a significant % of the clip length there is still scope for some drift that cannot be accommodated. In practice most data points in our test sets are now much closer to target than was previously the case with default settings and in some cases are better even than they were with the command line undershoot and overshoot parameter was set very low (e.g. 2%). For example in bridge_close at high rates the old mechanism was unable to adapt enough to prevent extreme overshoot. Change-Id: I634f8f0e015b5ee64a9f0ccaa2bcfdbc1d360489
2016-06-03Change to get_twopass_worst_quality()paulwilkins
Change to the calculation of the error divisor used in get_twopass_worst_quality(). This follows on from other changes to the rate control that impact the output of this function. Change-Id: I414fa9aa1e6a68a64dccea17c3712f44b8a0c10c
2016-06-03Removed unused data structure.paulwilkins
Removed unused element from TWOPASS data structure. Change-Id: I9b662fd8eea727a7978055bc14f7c7328f048a5e
2016-06-03Adjustment to VBR rate correction.paulwilkins
Changes to the function the redistributes bits from overshoot or undershoot throughout the rest of the clip to respond more quickly. Change-Id: I90f10900cdd82cf2ce1d8da4b6f91eb5934310da
2016-06-03Adjustment calculation of active worst quality.paulwilkins
Added a factor based on the bit spend in the last arf group vs the target to adjust the choice of the active worst quality in subsequent groups. Helps clips where previously there was a big overshoot or undershoot to adapt and get closer to the target rate. Change-Id: I67034b801679b99024409489a2273ea6fe23b8e6
2016-06-03Remove gf_zeromotion_pct.paulwilkins
The use of this value is preventing rate adjustment on clips or sections that have very little motion but high noise and this can give rise to some sections with massive overshoot. Change-Id: I9a65c7c1148dc5d3a7d8b23e50fc1733f3661621
2016-06-02vp9: Fix valgrind failure for short circuit on low temporal vaiance block.JackyChen
Add check for actual split before using the variance of the split. Change-Id: If0f93248be0b16d17738675d16c90516054dad2b
2016-06-02Disable short circuit feature for low temporal variance.JackyChen
The featrue fails in libvpx_unit_tests-valgrind. Will re-enable it after fixing the issue. Change-Id: I8ba132f04e98f4615b31fbff2097eda83c5e42bc
2016-06-01vp9: Skip some modes when variance is low for big blocks, for 1 pass real-time.jackychen
Skip intra-mode and some inter-modes (newmv, nearmv, nearestmv) for golden frame if the variance got from choose_partitioning is very low. Only for 1 pass real-time CBR mode and bsize >= 32x32, it has ~2.5% speed up with less than 0.1% PSNR drop for rtc test set. Don't see visual regression. Change-Id: I70efbc95a1007231ae36f02c5b2fbf6cd35077ad
2016-05-31vp9: Skip computation of best_sad for newmv, unless needed.Marco
For non-rd pickmode: best_pred_sad, computed for NEWMV-last, is only used for skipping golden non-zero modes. Add condition to avoid this computation if not used (i.e, if golden nonzero modes are not used). And remove code for computing best_pred_sad for NEWMV-golden, since that sad is not used. No change in behavior; small speed gain (~1%) for svc encodes. Change-Id: Ic2cbdef6c4e9a233a57c0db0eeac8ad5fcead366
2016-05-27Merge "Upgrade fwht4x4_mmx() to fwht4x4_sse2() for vp9 and vp10."Linfeng Zhang
2016-05-27Upgrade fwht4x4_mmx() to fwht4x4_sse2() for vp9 and vp10.Linfeng Zhang
Function level timing test shows about 27% time saving on a Xeon E5-2680 v2 desktop. Rename vp9_dct_sse2.c to vp9_dct_intrin_sse2.c for vp9 and rename dct_sse2.c to dct_intrin_sse2.c for vp10 to avoid duplicate basenames. Actually vp9_fwht4x4_mmx/sse2() and vp10_fwht4x4_mmx/sse2() are identical. TODO: They should be unified later if there is no intention to keep a duplicate. Change-Id: I3e537b7bbd9ba417c606cd7c68c4dbbfa583f77d
2016-05-25Refactor probability savings search.Alex Converse
- Avoid excessive copying - Don't both searching if no update can possibly offer savings - Simplify the interface - Remove the confusing vp9_cost_upd256 macro Change-Id: Id9d9676a361fd1203b27e930cd29c23b2813ce59
2016-05-24remove vp9_diamond_search_sad_avx.cJames Zern
vp9_diamond_search_sad_avx was disabled in: 057c1c4 disable vp9_diamond_search_sad_avx this removes a missing prototype warning as the prototype is no longer included in vp9_rtcd.h. the file can be restored if someone gets around to fixing the issue. BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1168 Change-Id: Ia9fda4b81c53dc5fba7c31d780d761f886940b52
2016-05-20vp9: Remove a redundent condition in sub-pixel filter choosing.jackychen
Change-Id: I5cbb0f452ec9622437482b3a9496ead1253acfe0
2016-05-19Merge "vp9: Refactor some denoiser logic in vp9_pick_inter_mode."Jacky Chen
2016-05-19vp9: Refactor some denoiser logic in vp9_pick_inter_mode.JackyChen
Move the logic for rechecking zeromv on denoised block out to simplify the function. To simplify the param passing, add a new structure VP9_PICKMODE_CTX_DEN which is only used when denoiser is enabled. Change-Id: Iaa9b4396dfcb8147236c02d4a1868a09103a4476
2016-05-16Merge "vp9: Update to rc-metric for keeping track of average frame size."Marco Paniconi
2016-05-13Move non-zero mv bias on large block out of vp9_pick_inter_mode.JackyChen
This is to simplify pick inter mode funtion and is bitexact. Change-Id: Ib1a115bac5fbd212c626be194bcd4a6ce4af9bf2
2016-05-13vp9: Update to rc-metric for keeping track of average frame size.Marco
Rename and change to how its updated. Only affects 1 pass vbr. Small change in metrics (< ~0.1%) on ytlive set. Change-Id: Ibb1fe485699b6c4a8194951c8f229abe2f64b9a5
2016-05-11vp9: Fix to quality regression issue for 1 pass.Marco
BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1217 Issue introduced in https://chromium-review.googlesource.com/#/c/339162/. The factor on avg_frame_qindex[INTER_FRAME] in that CL, used for q-basis to set active_best, can cause the QP to decrease too slowly or get stuck in some cases when max-q=63. Removing that factor fixes the regression in issue#1217. Change-Id: I97fe28dca3c2bc2d852b1775f39c62164e032d4f
2016-05-11Merge changes I412c24aa,I28a8bbf0Alex Converse
* changes: mcomp: Remove an obsolete undef. mcomp: Remove an obsolete comment.
2016-05-11Merge "Added a measure of rc drift."Yaowu Xu
2016-05-11Merge "Fixed 8K two pass encoder crash."Paul Wilkins
2016-05-11Added a measure of rc drift.paulwilkins
Added actual and absolute rate miss values to the opsnr.stt stats output line. Changes to the borg graphing may be needed before merge. Change-Id: I1e9d548ce445d29002f0c59ebfd3957a6f15e702
2016-05-11Fixed 8K two pass encoder crash.paulwilkins
Bug found by Yunqing relating to the correction for size at 8K and above in get_twopass_worst_quality(). The basis for the correction was changed to the linear size relative to 1080P as a baseline and the adjustment has been clamped to prevent problems at extreme images sizes. For 1080P the results on our test sets were neutral but the low res and mid res sets saw a small gain (0.1%-0.2% average). I would also expect some gains on 4k and larger content where the previous correction was overly aggressive. Change-Id: I30b026b5f4535e9601e3178d738066459d19c8fb
2016-05-10mcomp: Remove an obsolete undef.Alex Converse
The macro was removed in 6724676. Change-Id: I412c24aac49bd1ff60a331a30933e0d8ae3f2dd5
2016-05-10mcomp: Remove an obsolete comment.Alex Converse
This was copied over from VP8. VP9 doesn't seem to do this buffer copy. Change-Id: I28a8bbf0503a7f99b2cb60620ab3674adde863bb
2016-05-10Add VP9 encoder API for level specification.hui su
Add control API VP9E_SET_TARGET_LEVEL that allows the encoder to control the output bitstream level and/or keep level related statistics. Usage: 255 do not care about level (default) 0 keep level related stats only 10 target for level 1 11 target for level 1.1 . . . 62 target for level 6.2 Usage for vpxenc: --target-level=0/255/10/11... Change-Id: I31d1aeca19358b893e7577b4e63748c8e614034a
2016-05-10Merge "Fix comment for target_bandwidth in VP9 and VP10"Hui Su
2016-05-09Fix comment for target_bandwidth in VP9 and VP10hui su
Unlike in VP8, it is in units of bits per second in VP9 and VP10. Change-Id: Iee1936cc58cdfaff205624c2fe87cecdf7eda123
2016-05-09Merge "pickmode: Fix a pair of unsigned overflows."Alex Converse
2016-05-09pickmode: Fix a pair of unsigned overflows.Alex Converse
block_variance: This operates on 8x8s and would be safe with a int32 * int32 to uint32 multiply, but this is potentially unsafe for 12-bit input. Unfortunately the code already segfaults on 12-bit input: https://bugs.chromium.org/p/webm/issues/detail?id=1223 calculate_variance: This operates on up to a 32x32 of 8x8s and can overflow even with 8-bit input (log2((256*32*32)**2) == 36). BUG=https://bugs.chromium.org/p/webm/issues/detail?id=1220 Change-Id: I1ca4ff6092db9a7580da371ee9a21f403fdadc40
2016-05-09vp9: 1 pass vbr: Reduce base qp for active_best_quality for inter-frames.Marco
Reduce factor for setting base-qp for active_best_quality (for inter-frames). Small increase in metrics on yt live set. Change-Id: I9cf0ac797783aeddbfaf1ff510696c9035d7c5ee
2016-05-06Merge changes from topic 'missing-proto'James Zern
* changes: vp9_frame_scale_ssse3.c: make 2 functions static vp9_pickmode.c: make function static vp9_noise_estimate.c: make function static vp9_aq_360.c: add missing include vp9_idct_intrin_sse2: add missing vp9_rtcd.h include vpx_dsp/*.[hc]: add missing vpx_dsp_rtcd.h include
2016-05-05Merge "vp9: Modify logic for gf setting based on up-coming key frame."Marco Paniconi
2016-05-05vp9: Reduce qp threshold for limiting cyclic refresh on steady blocks.Marco
Makes the delta-qp stop little earlier on areas that have been refreshed enough. This helps to reduce some pulsing artifact on noisy flat areas observed in some noisy vc-clips. Threshold changes only take effect for sources where noise level is estimated to be >= medium level. Only affects 1 pass CBR, non-screen content case. Change-Id: Iacf557f6aa8abbcd6782c02ff2e6c14891960850