summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_mcomp.h
AgeCommit message (Collapse)Author
2019-08-28Move motion field from TplDepFrame to MotionFieldAngie Chiang
Replace get_pyramid_mv by vp9_motion_field_mi_get_mv. The goal is to modularize motion field related operations. Change-Id: I33084e680567ab106659ba9389cc4b507b893c69
2019-07-31Reduce call num of exhaustive searchAngie Chiang
The encoding time difference between non_greedy_mv and baseline is reduced from 51% to 13% However, there is also a performance impact. non_greedy_mv performance: Before this CL lowres 0.395% midres 0.716% hdres 0.533% After this CL lowres 0.242% midres 0.429% hdres 0.305% Change-Id: I047d6509df504b264981c0b903c0cc955f45b273
2019-07-18Add vp9_non_greedy_mv.c/hAngie Chiang
Move vp9_nb_mvs_inconsistency to vp9_non_greedy_mv.c This is to facilitate following SIMD optimizations. Change-Id: I8eb8f820368928e0c4fb287e557cddf0bd2c763e
2019-07-17Make vp9_prepare_nb_full_mvs only return valid mvsAngie Chiang
In this case, vp9_nb_mvs_inconsistency doesn't need to check whether each neighbor mv is valid or not. non_greedy_mv encoding time is reduced by 1.5% Change-Id: I3216c98481e777d5e0b917ea20ee39b7ca9c9d23
2019-06-26Integerize vp9_full_pixel_diamond_newAngie Chiang
Change-Id: I833c82fb910c8274b5a237e26fe0dcda7def9796
2019-06-26Integerize vp9_refining_search_sad_newAngie Chiang
Change-Id: I05a39165b9910262eca8fdf644ae982b80d309b4
2019-06-26Remove mv_dist/mv_cost from new mv search funcsAngie Chiang
The functions are diamond_search_sad_new() vp9_full_pixel_diamond_new() vp9_refining_search_sad_new() Change-Id: Ied6fe98b8a1401c95f0488faf781c5cd5e8e0db6
2019-06-21Make vp9_nb_mvs_inconsistency return int64_tAngie Chiang
Change-Id: I925156ed45e13a06c449c2fbff8a3c26baf8d835
2019-06-21Make type of lambda int in TplDepFrameAngie Chiang
Change-Id: I8fdf1ad4790201b1624c8408d92983aeb0b08302
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