summaryrefslogtreecommitdiff
path: root/vp9/encoder
AgeCommit message (Collapse)Author
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-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
2016-05-05vp9: Modify logic for gf setting based on up-coming key frame.Marco
For 1 pass vbr mode: Refactor to move the logic for gf setting based on up-coming key frames to a separate function, so same logic can be used for scene-cuts/changes. Change-Id: Ic4ede308e08ba869bb62e4566e19ea31222c5229
2016-05-04vp9_frame_scale_ssse3.c: make 2 functions staticJames Zern
downsample_2_to_1_ssse3/upsample_1_to_2_ssse3() are local to this module Change-Id: I78a9de8e1eca475ba1bf137102580c531aa3f7dd
2016-05-04vp9_pickmode.c: make function staticJames Zern
set_intra_cost_penalty() is local to this module Change-Id: Ie277bfc5e8a26f05a04fd261bdb888388ad0e2a1
2016-05-04vp9_noise_estimate.c: make function staticJames Zern
enable_noise_estimation() is local to this module Change-Id: Id736c419387ca1959695dd327ce164bec029b597
2016-05-04vp9_aq_360.c: add missing includeJames Zern
Change-Id: Ia8ac9b7023211b1da2294b0934cf076fb1cdc65f
2016-05-04Merge "vp9-noise estimation. Decrease frame period for estimating noise."Marco Paniconi
2016-05-04Merge "Change to use proper type in vp{9,10}_token_state"Yaowu Xu
2016-05-04vp9-noise estimation. Decrease frame period for estimating noise.Marco
Makes the noise estimation react little faster. Little/no change in metrics. Change only affects 1 pass cbr. Change-Id: I13f0daa90ecbf9d49eb1cf2e48febd9d92292940
2016-05-04Change to use proper type in vp{9,10}_token_stateYaowu Xu
"qc" in vp{9,10}_token_state is used to save quantized coefficients, this commit changes the type from short to tran_low_t to properly reflect the value range for highbitdepth build. This fixes an out-of-range bug when optimize_b is used in highbitdepth build. Change-Id: Ibf330879e6ac6ae8f099e085caa9d3d9a889fde8
2016-05-04variance aq: Fix a variance calculation overflow bug.Alex Converse
This is an actual overflow where the result of the calculation is materially changed, not just a negative value that is stored in an unsigned. Caught with fsanitize=integer on the VP9/AqSegmentTest.TestNoMisMatchAQ2/1 test. Change-Id: I514b0ef4ae7ad50e3e08c0079aa204d59fa679aa
2016-05-03Fix unsigned overflows in temporal filter.Alex Converse
Change-Id: Iebdc8304d30c78f03f99f6dc665003ff41c8b1cd
2016-05-02Merge "Use signed variables in the lookahead."Alex Converse
2016-05-02Merge "vp9: Refactor vp9_denoiser_NxM_sse2."Jacky Chen
2016-05-02vp9: Refactor vp9_denoiser_NxM_sse2.JackyChen
Denoiser is ~1.5% faster in speed 6~8. Change-Id: I7b350f3c50cce6773d9c4eded4c0c1b722d0a5fc
2016-05-02vp9: Refactor choose_partitioning.JackyChen
Move skin superblock force split out of this function as well as some minor code refactors. Checked bitexact for different speed settings and different resolutions. Change-Id: I6078cbe88dd9ce6c0b69470a8a0a8f8d2274161b
2016-04-28vp9: Move the initialization of some rc variables to rc_init.Marco
And initialize a variable (avg_source_sad) that was not initialized to 0. Change-Id: I63223e20fffe2a2ea38f03da62dad16af0618ea4
2016-04-28Merge "Avoid an unsigned overflow in invert_quant"Alex Converse
2016-04-27vp9: Don't force block size to 8x8 in denoiser.JackyChen
First, we only set use_4x4_partition for key frame where we don't denoise; second, envision we have small partitions, we should pass the actual block size to denoiser and make an early termination if needed. Change-Id: I331f42046d792b17360723d17ff817d601394658
2016-04-27Use signed variables in the lookahead.Alex Converse
Wrap around behavior is enforced manually and we use the values in arithmetic involving negative integers. Change-Id: I199706b6f3af91f4fb6fe2ef302fbbc6d0cf5785
2016-04-27Avoid an unsigned overflow in invert_quantAlex Converse
Change-Id: I16a570b2af66b6580d1cd6f8345a25f079009bf4
2016-04-26Merge "VP9: adjust trellis quant optimization RD parameters"Hui Su