summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_mcomp.c
AgeCommit message (Collapse)Author
2015-04-07vp9_full_search_sadx[38]: align sad arraysJames Zern
the sse4 code expects 16-byte aligned arrays; vp8 already had a similar change applied: b2aa401 Align SAD output array to be 16-byte aligned Change-Id: I5e902035e5a87e23309e151113f3c0d4a8372226
2015-03-16Refactor column integral projection computationJingning Han
Move the scaling factor outside column projection. This avoids repeated calculation of the same scaling factor. Profiling shows that the percentage of vp9_int_pro_col_sse2 of overall cycles goes from 2.29% down to 1.88%. Change-Id: I5ac4e324ab2d7f33ba2de66dd2a12e04e04dfd66
2015-03-14Fix 1-step refinement search tableJingning Han
Change-Id: I32f0bcb40c6e7ba63bfae487739ededd0b6b2dde
2015-03-13Use sdx4df to do 1-step refinementJingning Han
Change-Id: Ie0c3ef3ae3aedf049b1a296de607730b79c12672
2015-03-12Reset src buffer only once in vp9_int_pro_motion_estimationJingning Han
Change-Id: I5c96b6a25f9df60da65b7af7c92a921b611746e3
2015-03-12Reduce the number of full block SAD callsJingning Han
This commit uses a 6-point 1-step refine motion search in the integral projection based full pixel motion estimation, to replace the current 9-point search. It reduces runtime cost of speed -6 on some noisy clips, e.g., dark720p single thread 33314 b/f, 40.076 dB, 18231 ms -> 33307 b/f, 40.067 dB, 17768 ms The compression performance for rtc set remains unchanged. Change-Id: I194ea5a9ce52e5a10baeee36338633adc22f764c
2015-03-11Refactor to remove GLOBAL_MOTIONJingning Han
Make the vp9_int_pro_motion_estimation() function return zero motion vector if high bit depth is turned on, instead of removing it from compiled codes. Change-Id: Ia48f010eb590b2d517d5678c394110b326a1a95e
2015-03-05Move pred_mv assign outside integral projection motion searchJingning Han
Change-Id: I040b066fdce08e2f05115a22ea808715aa147779
2015-03-04Move integral projection motion search to vp9_mcomp.cJingning Han
Make it a general purpose fast motion estimation function, to be used in the mode search process. Change-Id: Ib354cb0e664dc61c30c0b2314297835ee75b157a
2015-02-03Remove unnecessary pointer checkJohann
The original implementation had the following comment: // Ignore mv costing if mvsadcost is NULL However the current implementation does not allow for this. If x exists then nmvsadcost must not be null. This removes the only warning from -Wpointer-bool-conversion https://code.google.com/p/webm/issues/detail?id=894 Change-Id: I1a2cee340d7972d41e1bbbe1ec8dfbe917667085
2014-12-05vp9 asserts: fix compile warningJames Zern
string literal to int within an assert Change-Id: I76a173f96b9add5bf27c3f5ad5d72c6f30e51629
2014-12-02Reinsert macro to fix issue 884.Peter de Rivaz
Change 72056 unfolded some macro definitions, but lost some alternative behaviour required for high bitdepth encodes. This causes the encoder to crash, see issue 884. Change-Id: I8ce4d73c9fe0a3c10ccb86fba210fabc8b2f0ccc
2014-11-17change to call vp9_refining_search_sad() directlyYaowu Xu
The function pointer in compressor instance does not change, so this commit changes to call the function directly. Change-Id: I9c9c460e3475711c384b74c9842f0b4f3d037cc5
2014-11-03Refactor sub-pixel motion search unitJingning Han
This commit unfolds the legacy macro definitions used in the sub-pixel motion search and refactors the operational flow for later optimizations. Change-Id: I3e3f770cad961d03d1a6eb0b2a0186cc77eaf2b8
2014-10-09Merge "Rename highbitdepth functions to use highbd prefix"Deb Mukherjee
2014-10-09Rename highbitdepth functions to use highbd prefixDeb Mukherjee
Uses highbd_ prefix convention consistently. Change-Id: I58f7f799a7ff8e32701bcd71c955bcf1cdd4581e
2014-10-08Subpel search cleanups and enhancementsDeb Mukherjee
- Some fixes to surface fit. - Returns variance function as cost rather than sad in the pattern search and diamond search functions. Only vp9_pattern_search_sad function used in bigdia search uses sad as integer 1-away costs. - Deploys SUBPEL_TREE_PRUNED_MORE for speed 4+. Results: derf [Speed 3]: About +0.036% in coding efficiency without any discernible speed loss. derf [Speed 4]: About 2-3% faster at -0.199% loss in coding efficiency. derf [Speed 5]: About 3-4% faster at -0.149% loss in coding efficiency. Change-Id: I8462f94f6adb46966ca964f2bd0400977357fd63
2014-09-29Adds two new subpel search methodsDeb Mukherjee
One is a more aggressive version of the pruned subpel tree search where only a single halfpel candidate is searched. The search candidate is based on a surface fit result. The other is a method to obtain the subpel position at one shot based on the same surface fit. The methods have not been deployed in any speed setting yet. Change-Id: I34fef3f2e34f11396c9d1ba97f4be8c4ffca62d3
2014-09-25Adds various high bit-depth encode functionsDeb Mukherjee
Change-Id: I6f67b171022bbc8199c6d674190b57f6bab1b62f
2014-09-23Pruned subpel search for speed 3.Deb Mukherjee
Adds code to return an integer cost list for NSTEP search. Then uses it for pruned subpel search in speed 3. derf: -0.06% Speed on mobcal 720p increaes from 10.28 fps to 10.65 fps. [Subject to further testing]. Change-Id: Ib591382d25b2c11bcaba9d3a27a93a9d1ab27a96
2014-09-12Use bigdia search with pruned subpel searchDeb Mukherjee
Improves function to return sad of integer pels by reusing integer pels already visited in the smallest scale. Turns on BIGDIA search for speed 4. Also, turns on the first version of the pruned subpel search at this speed. derf: -0.32% (speed 4) Speed seems to improve by at least 5% but subject to verification. Change-Id: Iaec8eaffd61d6237ac029e6a2a1b0a88b2a35271
2014-08-28Updates vp9_pattern search to return integer sadsDeb Mukherjee
Updates the vp9_pattern_search function to return integer one-away neighbors' sad values, for subsequent use in speeding up the sub-pel search. Also, removes code for the do_refine option which is not being used currently. Updates the integer and subpel functions to pass in a 5-element sad list for output or input. A new pruned sub-pel search algorithm is implemented that uses the sad returned from the integer pel search. But it is not deployed yet. Change-Id: Ifa9f5ad024b5b660570366d2bd900343e1891520
2014-07-11Remove an unused parameter in vp9_init_search_range()Yaowu Xu
Change-Id: I3d9130e726a1299fd258f6dfe93315e2d12f76da
2014-07-10Refactor vp9_diamond_search_sad functionYunqing Wang
Currently, vp9_diamond_search_sadx4() is only called when sse3 is enabled, which is improper since sse2 optimization of sdx4df functions are available. Changed to always use vp9_diamond_search_sadx4(). Change-Id: I4b95d6b7a3c6c645783c373f0ba8d645ece24717
2014-07-09Refactor refining_search_sad codeYunqing Wang
There are sse2 optimization of sdx4df functions. Instead of calling vp9_refining_search_sadx4 only when sse3 is enabled, call it always. Change-Id: I24f93818f7d4209d1425039e0eb099ff9ff08fe9
2014-07-09Remove repetitive code in mcomp.cYunqing Wang
Deleted vp9_find_best_sub_pixel_comp_tree(), and combined it in vp9_find_best_sub_pixel_tree(). Change-Id: Ifb25763c8b19822df5537cc1daa76ce88dc3b056
2014-07-07Cleanup motion search speed features.Alex Converse
* Replace max_step_search_steps with constant MAX_MVSEARCH_STEPS * Fold (reduce_first_step_size + speed > 5) into reduce_first_step_size replacing uses of reduce_first_step_size that don't add the speed check with zero. Change-Id: Iae46395dbf3eaca138bf4d18b838a9e364b5a198
2014-06-12Adding MV_SPEED_FEATURES struct.Dmitry Kovalev
Moving all motion vector related speed parameters from SPEED_FEATURES to MV_SPEED_FEATURES. Change-Id: I3e9af0039c7162f8671878c5920bce3cb256a84e
2014-06-12Moving full_pixel_search() to vp9_mcomp.c.Dmitry Kovalev
Change-Id: I12389f801ebd3bd2ae3bf31e125433bfb429ee65
2014-06-02Remove Wextra warnings from vp9_sad.cDeb Mukherjee
As a side-effect, the sad unit tests for VP8 and VP9 had to be separated. Fixes a bug in original patch: (https://gerrit.chromium.org/gerrit/#/c/70163/8) that was reverted due to a nightly test failure. Change-Id: Ia2a4e9e278fd3c89d6c3c82fcc6381320ec2a8a6
2014-06-01Revert "Remove Wextra warnings from vp9_sad.c"Frank Galligan
This reverts commit 916550428db803c54c993ff9d3c34b9b0bcebb7c Change-Id: I500822b03f09c64ff6ec5396c68edee9ca3b75cb
2014-05-22Remove Wextra warnings from vp9_sad.cDeb Mukherjee
As a side-effect, the sad unit tests for VP8 and VP9 had to be separated. Change-Id: I068cc2391eed51e9b140ea6aba78338c5fec8d71
2014-05-15Merge "Revert "Remove Wextra warnings from vp9_sad.c""Jim Bankoski
2014-05-15Revert "Remove Wextra warnings from vp9_sad.c"Jim Bankoski
This reverts commit 7ab9a9587b96db4edce6be916c1f02297a9555ff Nightly test http://build.webmproject.org/jenkins/view/libvpx-nightly-tests/job/libvpx%20unit%20tests%20(valgrind-2)/arch=x86_64-linux-gcc,filter=-*VP8*:*Large.*/276/console Failed This patch did not address all the assembly issues some of the vp8 assembly counts on 5 arguments being passed in to this function: one example : vp8_sad8x16_wmt Please address or split this into vp9 and vp8 patches. Change-Id: I78afcc171649894f887bb8ee3c66de24aaddc7ca
2014-05-15Merge "Silence unused parameter warnings."Paul Wilkins
2014-05-14Merge "Remove Wextra warnings from vp9_sad.c"Deb Mukherjee
2014-05-14Silence unused parameter warnings.Paul Wilkins
The various motion search functions share a common function prototype. In the case of vp9_full_range_search() two of the parameters are not needed. Change-Id: I0e190af54a3b3f276409f20e8ec55912f9b0b798
2014-05-14Silence unused parameter warnings.Paul Wilkins
Remove two unused parameters in the function vp9_refining_search_8p_c(). Change-Id: Ic192734586291cf5400926eeb8e720e69d40835c
2014-05-14Remove Wextra warnings from vp9_sad.cDeb Mukherjee
As a side-effect, the max_sad check is removed from the C-implementation of VP8, for consistency with VP9, and to ensure that the SAD tests common to VP8/VP9 pass. That will make the VP8 C implementation of sad a little slower but given that is rarely used in practice, the impact will be minimal. Change-Id: I7f43089fdea047fbf1862e40c21e4715c30f07ca
2014-05-07Merge "Using SPEED_FEATURES instead of VP9_COMP in vp9_init_search_range()."Dmitry Kovalev
2014-05-01Using SPEED_FEATURES instead of VP9_COMP in vp9_init_search_range().Dmitry Kovalev
Change-Id: I961d50d6fafdd37ef7f23f0a871d28e28d2084ca
2014-04-30Cleaning up vp9_full_range_search_c() function.Dmitry Kovalev
Change-Id: Ifc9114aeacd493cfa04d4cb3d071bf1de80e0568
2014-04-29Merge "Adding search_site_config struct."Dmitry Kovalev
2014-04-29Adding search_site_config struct.Dmitry Kovalev
Change-Id: I2ad333553e673dbabcdc0f0366aea311e90849bf
2014-04-25Cleaning up vp9_full_search_sadx8() function.Dmitry Kovalev
Change-Id: I61f977a7d0b177881bd5c1a7179fa5f8f089e9a6
2014-04-25Merge "Cleaning up vp9_full_search_sadx3()."Dmitry Kovalev
2014-04-22Renaming "onyx" to "encoder".Dmitry Kovalev
Actual renames: vp9_onyx_if.c -> vp9_encoder.c vp9_onyx_int.h -> vp9_encoder.h Change-Id: I80532a80b118d0060518e6c6a0d640e3f411783c
2014-04-14Cleaning up vp9_full_search_sadx3().Dmitry Kovalev
Change-Id: Ia63fee65c827fd33080119184e6cf3167421807c
2014-04-11Removing redundant mvsadcost local variables.Dmitry Kovalev
Change-Id: I19a197b9525172579f253702c77fa76af88f6565
2014-04-11Merge "Removing offset argument of mvcomp macros."Dmitry Kovalev