summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_mcomp.h
AgeCommit message (Collapse)Author
2019-01-29Add some const qualifiers where applicableHui Su
Change-Id: Ib820f625e0b616fd57a2722ec3614b4fccf307f8
2019-01-24Add get_mv_distAngie Chiang
Given an mv_mode, get_mv_dist() obtains the mv and uses it to compute distortion. Change-Id: I58b8c7137b99c2736d651e678f0cd013dbd94877
2019-01-14Fix typo.Jerome Jiang
Blocking libvpx update into google3. Change-Id: I18c29f0a68568e65ae5e0c7fcdb5097b08b586a6
2019-01-04Use motion field for mv inconsistency in mv searchAngie Chiang
Change-Id: I25ea05f4bfe3c6f420e967c33763909c979a0d1b
2018-12-11Move prepare_nb_full_mvs to vp9_mcomp.cAngie Chiang
Change-Id: I36e3bcae60751a9caeac03a3c94cb752b73a010b
2018-12-06Implement get_full_mv()Angie Chiang
Change-Id: Icde1b01ea7f64e2c43dcd039cc37fd306e43030f
2018-12-06Pass mv_num into vp9_nb_mvs_inconsistency()Angie Chiang
This allow av1_nb_mvs_inconsistency to cope with variant number of motion vectors. Change-Id: I391aa322d458cfefaf640e7b07d5ad5ce2d3375c
2018-11-29Change the interface of vp9_full_pixel_diamond_newAngie Chiang
Avoid passing in tpl_stats because this function will be called in motion search, where tpl_stats should be fixed at the point. Let further_steps becomes internal variable in the function. Change-Id: Iebe380925eb1891c19e0b78163dab8e6bfafccdb
2018-11-14Recompute mv inconsistency after mv search is doneAngie Chiang
Change-Id: I6061f38cb42eea2b4c8996ad372c829dc1051c8d
2018-10-30clang-tidy: fix vp9/encoder parametersJohann
BUG=webm:1444 Change-Id: I6823635eb1a99c3fcca0a8f091878e3ab2fdd2ac
2018-10-05Changes to facilitate accurate sub-pel motion searchYunqing Wang
This patch included changes to facilitate accurate sub-pel motion search. More patch will follow to turn on accurate sub-pel motion search. Change-Id: I224c28c338353fe5c7609372162f79885c54248f
2018-09-28Add mv_dist/mv_cost to TplDepStatsAngie Chiang
Change-Id: I66b35ef76c229d4eb3bf3c913619a0e219c4c2f9
2018-09-28Change interface of motion_compensated_predictionAngie Chiang
Change the interface of vp9_full_pixel_diamond_new Change-Id: Ic9ed6ed61c5178f3f445f40860ebaac7ea17f75d
2018-09-25Add vp9_full_pixel_diamond_newAngie Chiang
This function will call vp9_diaomond_search_sad_new / vp9_refining_search_sad_new accordingly. Change-Id: If96a8a1c9c06b6b4ed3aac6d59bdb03f20c96df9
2018-09-15cosmetics: normalize include guardsJames Zern
use the recommended format [1] of: <PROJECT>_<PATH>_<FILE>_H_ [1] https://google.github.io/styleguide/cppguide.html#The__define_Guard "All header files should have #define guards to prevent multiple inclusion. The format of the symbol name should be <PROJECT>_<PATH>_<FILE>_H_." Change-Id: I2e8ab0b32fb23c30fa43cff5fec12d043c0d2037
2018-08-02Refactor vp9_full_pixel_search()Hui Su
Code cleanup; add some comment. Also remove a reduncant call to vp9_get_mvpred_var() at the end when method is MESH. Change-Id: I4b58e7e1c42161642708f8b0342ab3c0ce39ed7d
2018-04-26Respect MV limit in vp9_int_pro_motion_estimation()Hui Su
Change-Id: I08cb072a32e06c6452eca068b2f7ef7287f221e6
2017-04-06VP9 motion vector unit testYunqing Wang
To prevent the motion vector out of range bug, added a motion vector unit test in VP9. In the 4k video encoding, always forced to use extreme motion vectors and also encouraged to use INTER modes. In the decoding, checked if the motion vector was valid, and also checked the encoder/decoder mismatch. The tests showed that this unit test could reveal the issue we saw before. Change-Id: I0a880bd847dad8a13f7fd2012faf6868b02fa3b4
2017-04-03Fix for out of range motion vector bug in sub-pel motion estimationRanjit Kumar Tulabandu
BUG=webm:1397 (yunqingwang) To verify that this patch wouldn't cause much performance change, the Borg tests were run. Here was the result: avg_psnr overall_psnr ssim hdres: -0.002 0.006 0.013 midres: 0 0 0 lowres: 0 0 0 Change-Id: Iae395ae7b741e0513cf5bab9dcace110b792a67d
2017-02-01Changes to facilitate row based multi-threading of ARNR filteringRanjit Kumar Tulabandu
Change-Id: I2fd72af00afbbeb903e4fe364611abcc148f2fbb
2016-08-08Refactor mv limits.Alex Converse
Change-Id: Ifebdc9ef37850508eb4b8e572fd0f6026ab04987
2016-08-02vp9/encoder: apply clang-formatclang-format
Change-Id: I45d9fb4013f50766b24363a86365e8063e8954c2
2016-06-21Fix ubsan warnings: vp9/encoder/vp9_mcomp.cYaowu Xu
This commit fixes a number of ubsan warnings in HBD build. BUG=webm:1219 Change-Id: I05f0fd0ef50e93db4ba34205005c54af1ed32acc
2016-03-15Use whole pixel only at speed 8 screen content.Alex Converse
+5.857% BD-RATE on SCREEN_CONTENT Leaving this off for non-screen content because: +25.300% on TWITCH120 +37.833% BD-RATE on RTC Change-Id: Ie0a312182d6cc859fb04298e4cd81d02b39e23fe
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-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-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-10-28Convert motion search config from AoS to SoAGeza Lore
This is a prerequisite for vectorizing vp9_diamond_search_sad_c. Change-Id: I49cd9148782410ca8b16e8a468ca9e7c6d088410
2015-08-28vp9_mcomp: make search functions privateJames Zern
vp9_full_pixel_search() can be used as a replacement as it dispatches to all search methods Change-Id: I57fcb79c1362b569dc95237bdcc8390f54efd440
2015-07-07Move sub pixel variance to vpx_dspJohann
Change-Id: I66bf6720c396c89aa2d1fd26d5d52bf5d5e3dff1
2015-05-22Fix integral projection motion search for frame resizeJingning Han
This commit fixes the integral projection motion search crash when frame resize is used. It fixes issue 994. Change-Id: Ieeb52619121d7444f7d6b3d0cf09415f990d1506
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
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-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-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-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-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-06-12Moving full_pixel_search() to vp9_mcomp.c.Dmitry Kovalev
Change-Id: I12389f801ebd3bd2ae3bf31e125433bfb429ee65
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-01Using SPEED_FEATURES instead of VP9_COMP in vp9_init_search_range().Dmitry Kovalev
Change-Id: I961d50d6fafdd37ef7f23f0a871d28e28d2084ca
2014-04-29Adding search_site_config struct.Dmitry Kovalev
Change-Id: I2ad333553e673dbabcdc0f0366aea311e90849bf
2014-04-11Removing unused cost arguments from mcomp functions.Dmitry Kovalev
Change-Id: Id81a76d18be6b2de69f81bb563d74c3bb356d434
2014-03-26Cleaning up vp9_get_mvpred_{av_,}var() functions.Dmitry Kovalev
Change-Id: I0df8c2a6d9863f92ee406010f2daeb5e40627649
2014-03-10Merge "Support for a fast diamond search"Deb Mukherjee
2014-03-07Support for a fast diamond searchDeb Mukherjee
Adds a fast diamond search which is about 5% faster than FAST_HEX with only a 0.1% drop in psnr when turned on for both speeds 5 and 7. This search is turned on for speed 7. Change-Id: I497630aa88a5148926086bb3038e7975e5f4eb98
2014-03-06Cleaning up vp9_get_mvpred_var().Dmitry Kovalev
Change-Id: Ic535f0a1c2501c1af143237af3b2b51b4b4980f4
2014-03-03Refactoring motion search libsDeb Mukherjee
The core motion estimation fucntions all return sad now consistently. The only exception is vp9_full_pixel_diamond(), however the core diamond and refining search routines called from vp9_full_pixel_diamond() also return SAD. If variance of pred error + mv cost is desired it must be calculated explicitly outside these functions. For very fast encoding, hopefully this will eliminate some redundant computations. Also suggests reimplementing FAST_HEX with the vp9_pattern_search framework. It is not exactly the same as the existing FAST_HEX, but performance is slightly better and speed is very similar. Enables removing a lot of duplicate code. Change-Id: I152736393438c25bdf7e96b37cbb8ce330f4f94a
2014-02-25Merge "Changing vp9_full_search_sad{, x3, x8} signatures."Dmitry Kovalev