summaryrefslogtreecommitdiff
path: root/vp9/encoder
AgeCommit message (Collapse)Author
2015-11-25Merge "vp9 denoiser: Re-evaluate ZEROMV after denoiser filtering."Marco Paniconi
2015-11-25Merge changes Iaf8cbe95,I6748183d,I2a49811dJames Zern
* changes: add vp9_satd_neon fix vp9_satd_sse2 vp9_satd: return an int
2015-11-24vp9 denoiser: Re-evaluate ZEROMV after denoiser filtering.Marco
For denoising, and for noise level above threshold, re-evaluate ZEROMV for mode selection after denoising. Current change only does this check if selected best mode (before denoising) was intra. Change-Id: I4b1435b68d26c78f7597b995ee7bff0ddd5f9511
2015-11-24add vp9_satd_neonJames Zern
~60-65% faster at the function level across block sizes Change-Id: Iaf8cbe95731c43fdcbf68256e44284ba51a93893
2015-11-24vp9-denoiser: Fix to reset frame_stats.Marco
zeromv_lastref_sse was not reset. Change-Id: I23c12e804d63dc7dc18514f6efe71de1d1acbd6a
2015-11-24Merge "vp9 non-rd pickmode: Fix logic in reference masking."Marco Paniconi
2015-11-24Merge "Deduplicate some high bit depth tables"Alex Converse
2015-11-24vp9 non-rd pickmode: Fix logic in reference masking.Marco
This change makes sure last reference with zero mv is always checked for mode selection. No change in metrics. Change-Id: Iaf01877bf34272b966c78bfe18daad882a0a419e
2015-11-20vp9 denoiser: Bias to last reference for temporal filter.Marco
Change-Id: I6a360a12e8da8cdcb8a779647512591612d64f31
2015-11-20fix vp9_satd_sse2James Zern
accumulate satd in 32-bits + add unit test Change-Id: I6748183df3662ddb9d635f9641f9586f2fd38ad5
2015-11-20vp9_satd: return an intJames Zern
the final sum may use up to 26 bits + add a unit test + disable the sse2 as the result will rollover; this will be fixed in a future commit Change-Id: I2a49811dfaa06abfd9fa1e1e65ed7cd68e4c97ce
2015-11-20Merge "vp9-svc: Fix the setting of is_key_frame."Marco Paniconi
2015-11-20vp9-svc: Fix the setting of is_key_frame.Marco
Change on affects 1 pass CBR. On key frame, temporal layer_id is reset to 0 for 1 pass CBR, but since "layer" is reset, the svc.layer_context[layer].is_key_frame was not correspondingly set properly. Change-Id: I08f6da0a55ac7429ccfbaddfb7be14479e43543b
2015-11-19Fix unsigned overflow in rd_variance_adjustment.Alex Converse
Found with clang -fsanitize=integer Change-Id: I2538e7483cb2d5f06bceecbd3326bdd88bfecfa1
2015-11-19Merge "Changes to best quality settings."Paul Wilkins
2015-11-18vp9-svc: Fix to key frame counter for spatial layers.Marco
Existing condition only applied to temporal layers. Change-Id: Icef20a59d0afc61d4e14dea01aff4786fa9e41ae
2015-11-18Merge "Changes to exhaustive motion search."Paul Wilkins
2015-11-17Changes to best quality settings.paulwilkins
Small changes to the best quality default speed trade off. Some speedup settings are worth while even for best quality as they have only a very small impact on quality but a significant impact on encode time. These changes give as much as a further 50-60% increase in encode speed for my test animations clip with minimal impact on quality. For this sequence these changes improve the best quality encode speed to about the same level as good quality speed 0 in Q3 2015 whilst retaining the large quality gain of over 1 db For many natural videos though the quality difference from good 0 to best is much smaller. Change-Id: I28b3840009d77e129817a78a7c41e29cb03e1132
2015-11-13Reduce sampling time for noise estimate.Marco
Change-Id: I46abd85e2187b8f4c2846416a23fab26d9b9f67d
2015-11-13Merge "VP9 noise estimation: add frame level motion metrics and adjust ↵Marco Paniconi
thresholds."
2015-11-13Changes to exhaustive motion search.paulwilkins
This change alters the nature and use of exhaustive motion search. Firstly any exhaustive search is preceded by a normal step search. The exhaustive search is only carried out if the distortion resulting from the step search is above a threshold value. Secondly the simple +/- 64 exhaustive search is replaced by a multi stage mesh based search where each stage has a range and step/interval size. Subsequent stages use the best position from the previous stage as the center of the search but use a reduced range and interval size. For example: stage 1: Range +/- 64 interval 4 stage 2: Range +/- 32 interval 2 stage 3: Range +/- 15 interval 1 This process, especially when it follows on from a normal step search, has shown itself to be almost as effective as a full range exhaustive search with step 1 but greatly lowers the computational complexity such that it can be used in some cases for speeds 0-2. This patch also removes a double exhaustive search for sub 8x8 blocks which also contained a bug (the two searches used different distortion metrics). For best quality in my test animation sequence this patch has almost no impact on quality but improves encode speed by more than 5X. Restricted use in good quality speeds 0-2 yields significant quality gains on the animation test of 0.2 - 0.5 db with only a small impact on encode speed. On most clips though the quality gain and speed impact are small. Change-Id: Id22967a840e996e1db273f6ac4ff03f4f52d49aa
2015-11-12VP9 noise estimation: add frame level motion metrics and adjust thresholds.JackyChen
Change-Id: Ia1aba00603b32cee6835951d3d8f740937cf20f4
2015-11-13Merge "Add AVX vectorized vp9_diamond_search_sad"James Zern
2015-11-12Adjust variance threshold for 16x16 split at low resolutions.Marco
Change-Id: I635e37f81237e9703d7d9a11ed76a043f4ec6eb0
2015-11-13Revert "Update to noise estimation."Marco Paniconi
This reverts commit 6b79a1e3e0dfc265f43445b8181aa95e1c02deac. Change-Id: I5a4923ca8a6de842855ce0725e92567ccbed6fb7
2015-11-12Update to noise estimation.Marco
Add frame level global check and adjust some parameters. Change-Id: I42103394f2d329781195d94ce6cbb5b3383eea17
2015-11-12Merge "Non-rd partition: reduce variance threshold low resolutions."Marco Paniconi
2015-11-12Merge "Adjust varianace threshold for high noise condition."Marco Paniconi
2015-11-11Adjust motion threshold to limit cyclic refresh.Marco
Change-Id: Icfca27a567eb8929c312c6315856ee130d982a04
2015-11-11Adjust varianace threshold for high noise condition.Marco
Change-Id: I91c722e480328ff95b8c57614d8176ccaceb2539
2015-11-11vp9 denoiser: Add another noise level to denoising.Marco
Change-Id: Idc755ab54e4f78bb7d75bc97634c451804edad99
2015-11-11Add AVX vectorized vp9_diamond_search_sadGeza Lore
This function now has an AVX intrinsics version which is about 80% faster compared to the C implementation. This provides a 2-4% total speed-up for encode, depending on encoding parameters. The function utilizes 3 properties of the cost function lookup table, constructed in 'cal_nmvjointsadcost' and 'cal_nmvsadcosts'. For the joint cost: - mvjointsadcost[1] == mvjointsadcost[2] == mvjointsadcost[3] For the component costs: - For all i: mvsadcost[0][i] == mvsadcost[1][i] (equal per component cost) - For all i: mvsadcost[0][i] == mvsadcost[0][-i] (Cost function is even) These must hold, otherwise the AVX version of the function cannot be used. Change-Id: I6c2791d43022822a9e6ab43cd124a773946d0bdc
2015-11-10Non-rd partition: reduce variance threshold low resolutions.Marco
Change-Id: I06306905d187948a92f839357df5d21413823808
2015-11-10Add bias to zero/small motion for noisy source.Marco
Change is only for real-time mode, speed >= 5, and non-screen content mode. Add bias to zero/low motion for big blocks, if noise estimation is enabled and noise level is above threshold. Change-Id: I3a0a4608ede6aa535bda6eca528d20f8aba738e7
2015-11-09VP9 noise estimate: no noise estimate if frame size change.JackyChen
Change-Id: I521f7b53c143d562a88fe7de330aa3f0ef09f414
2015-11-09Merge "VP9 dynamic resize: increase waiting time after key frame."Marco Paniconi
2015-11-09VP9 dynamic resize: increase waiting time after key frame.jackychen
For 1 pass CBR mode: increase waiting time after key frame before we start sampling rate control behavior for determining resize. This change need to disable one internal resize(DownUp) temporally since it requires a longer clip to do so. Change-Id: If21beda1be23f169ee541ab4dd642f718347887a
2015-11-09Merge "Use same bias (against non-zero mv for big blocks) for speed 5."Marco Paniconi
2015-11-09Merge "Expand unconstrained nodes in pack_mb_tokens and loop on zeros."Alex Converse
2015-11-09Use same bias (against non-zero mv for big blocks) for speed 5.Marco
Use same setting for speed 5 (as it is for speed > 5). Change is only for real-time (non-rd) mode. Change-Id: I830250eac654328373cb318baa89d4f0e63942e1
2015-11-07Merge "Use accurate bit cost for uv_mode in UV intra mode RD selection"Hui Su
2015-11-06Expand unconstrained nodes in pack_mb_tokens and loop on zeros.Alex Converse
Reduces Linux perf estimated cycle count for pack_mb_tokens on a lossless encode on my desktop from 61858501855 to 48154040219 or from 26% of the overall profile to 21%. Change-Id: I9ca3426d7e3272bc7f7030abda4f0d0cec87fb4a
2015-11-06Use accurate bit cost for uv_mode in UV intra mode RD selectionhui su
On derflr, +0.1% for VP10; however, -0.03% on VP9. Change-Id: I09c724232ede74254043d61d3cadc506256af0af
2015-11-06Merge "Revert "Add AVX vectorized vp9_diamond_search_sad""James Zern
2015-11-06Revert "Add AVX vectorized vp9_diamond_search_sad"James Zern
This reverts commit f1342a7b070ef61b9fbdf03e899ac2107cfcb6bd. This breaks 32-bit builds: runtime error: load of misaligned address 0xf72fdd48 for type 'const __m128i' (vector of 2 'long long' values), which requires 16 byte alignment + _mm_set1_epi64x is incompatible with some versions of visual studio Change-Id: I6f6fc3c11403344cef78d1c432cdc9147e5c1673
2015-11-06vp9: Disable noise estimate on resize trigger frame.Marco
Change-Id: I35767a6320943582ee11d737b5f240cea2d01b25
2015-11-05vp9: Updates to noise estimation.Marco
Add threshold/condition on spatial_variance and brightness level. Modification to normalization of block variance. Change resolution limit below which we disable noise estimation. Change-Id: If5be08a26ceda351242d8a58d2f0bc88c0a918f0
2015-11-05Merge "Add AVX vectorized vp9_diamond_search_sad"Yunqing Wang
2015-11-05Add AVX vectorized vp9_diamond_search_sadGeza Lore
This function now has an AVX intrinsics version which is about 80% faster compared to the C implementation. This provides a 2-4% total speed-up for encode, depending on encoding parameters. The function utilizes 3 properties of the cost function lookup table, constructed in 'cal_nmvjointsadcost' and 'cal_nmvsadcosts'. For the joint cost: - mvjointsadcost[1] == mvjointsadcost[2] == mvjointsadcost[3] For the component costs: - For all i: mvsadcost[0][i] == mvsadcost[1][i] (equal per component cost) - For all i: mvsadcost[0][i] == mvsadcost[0][-i] (Cost function is even) These must hold, otherwise the AVX version of the function cannot be used. Change-Id: I184055b864c5a2dc37b2d8c5c9012eb801e9daf6
2015-11-04Merge "Bias against non-zero mv for large blocks."Marco Paniconi