summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_mcomp.c
AgeCommit message (Collapse)Author
2014-02-04Adding is_mv_in() function.Dmitry Kovalev
Change-Id: I9bdb18c5cde386d3caaa2c2846649cfbda609927
2014-02-03Inlinging get_next_chkpts macro in vp9_mcomp.c.Dmitry Kovalev
Change-Id: I38ca35dccfb9051d08b026d75ba2f3a35adb0259
2014-01-31Cleaning up vp9_mcomp.{c, h}.Dmitry Kovalev
Change-Id: Ib71d9ed3f98e9468ad951bdc24c9ab565216eb38
2014-01-31Merge "Cleaning up motion compensation code."Dmitry Kovalev
2014-01-24Inlining IFMVCV macro.Dmitry Kovalev
Change-Id: I5173f996612e410d9cd495df9414d194b1ab18f3
2014-01-23Cleaning up motion compensation code.Dmitry Kovalev
Change-Id: I74cf028e8c732cd0dbc070326152d3085b824a80
2014-01-22Merge "Cleaning up vp9_refining_search_sad() function."Dmitry Kovalev
2014-01-22Merge "Enforce effective motion vector search range"James Zern
2014-01-21Enforce effective motion vector search rangeJingning Han
This commit explicitly enforces the effective motion vector range in the motion search stage. The range needs to be the intersection of UMV border, effective absolute motion vector value range, and the target search area. Change-Id: I1cf7c563e02b1086040dad6c1f4f6be1538635a6
2014-01-21Merge "Replacing macros with inline functions."Dmitry Kovalev
2014-01-17Cleaning up vp9_refining_search_sad() function.Dmitry Kovalev
Change-Id: I660b53da8ebf3049832ce8a10721051c4e0ebb00
2014-01-16Replacing macros with inline functions.Dmitry Kovalev
Change-Id: Ibde8fb45594cd259fc3281d7874de8fc877fd4f2
2014-01-16Cleaning up vp9_refining_search_8p_c() function.Dmitry Kovalev
Change-Id: Icf3b3dd96d7e133a4ad7260cd95288f6217998a6
2014-01-13Making motion search code more compact.Dmitry Kovalev
Change-Id: I04d6a006eaf2676f2d8d1d96b87f69e081969382
2014-01-03Merge "Converting CHECK_POINT macro to inline function."Dmitry Kovalev
2014-01-03Merge "Replacing int_mv with MV."Dmitry Kovalev
2014-01-03Converting CHECK_POINT macro to inline function.Dmitry Kovalev
Change-Id: I08533d59a78346dac30a7dcbc12146f23ef88bbc
2014-01-03Merge "Replacing CHECK_BOUNDS macro with inline check_bounds function."Dmitry Kovalev
2014-01-03Replacing int_mv with MV.Dmitry Kovalev
Change-Id: Ifd432fa3741ba47102d298e0b348eb00f5a9ce53
2013-12-27Merge "Remove a unused sub-pixel search"Yunqing Wang
2013-12-19Removing vp9_findnearmv.{h, c} files.Dmitry Kovalev
Moving all code from that files to vp9_mvref_common.{h, c}. Change-Id: Ibc4afcb8cea6847166ff411130e93611ebe63b20
2013-12-19Remove a unused sub-pixel searchYunqing Wang
The original iterative search was replaced by subpel_tree search, and was not used anymore. Change-Id: I998b38e1cb0ee359a08b2410d0766dbf183ab071
2013-12-13Using MV struct instead of int_mv union in encoder (2).Dmitry Kovalev
Change-Id: I068345f722a7116e3119927295ad23a28d3066a0
2013-12-13Using MV struct instead of int_mv union in encoder.Dmitry Kovalev
Change-Id: I8b81a3e4b4fa530a654c28d9c136afa0c1d379fd
2013-12-11Replacing CHECK_BOUNDS macro with inline check_bounds function.Dmitry Kovalev
Change-Id: I8437113da256088576bf66401186e35125089c03
2013-12-11Rename clamp_mv_min_max to set_mv_search_rangeJingning Han
This function sets the motion search range limit. Rename it to be more informative. Change-Id: I2e8e01073dcb99c9bea9c9acd0a61d672d615444
2013-12-10avoid crash when using --best on cpus with SSE3 (but not SSE4) supportGuillaume Martres
Change-Id: Ie100114a01b8b4da7248603c40676792cd06b32a
2013-12-06Clean-ups in diamond_search_sadJingning Han
Use the pre-fetched stride value. Change-Id: I8d4aaedab7a83a4870be51c110da27e55ca3bc85
2013-12-06Full range motion search for regular block sizesJingning Han
Add a full range motion search for regular block sizes. This runs exhaustive search within the given reference area. This commit further optimizes the search process by combining 4 points test into one pipeline, which gives 30% speed-up as compared to run each individual point at a time. This full range search serves as a best possible motion search reference. When replacing the diamond search with full range search, the speed 0 runtime of bus CIF at 2000 kbps goes from 153872ms to 623051ms. The compression performance compared to speed 0 setting gains 0.585% for derf set. Change-Id: Ieef1225216b0b86b4ac4872fa7fb9e18bf2eabb3
2013-11-18Constrain encoder motion search rangeJingning Han
Explicitly constrain the upper limit of motion search range (in the unit of full pixel) to be [-1023, +1023]. It is intended to control the effective motion search range for 4K sequences. Change-Id: I645539c70885eec0f155781f439d97d333336e88
2013-10-17Adding allow_hp as an argument to mv search functions.Dmitry Kovalev
Making this change in order to move allow_high_precision_mv field from MACROBLOCKD structure to VP9_COMMON (because it is a frame level flag). Change-Id: I1d006ba36d938e0caf4d40fa051e2e38df9c1108
2013-10-05cpplint issues resolved in vp9_mcomp.cJim Bankoski
Change-Id: I2c2f83f4dfa2782fc6b0aa6db3ba2c4e6e423ffa
2013-09-25Moving from int_mv* to MV* (3).Dmitry Kovalev
Change-Id: I9795d0937bc07793c13d067281995e0750f694d9
2013-09-24Moving from int_mv* to MV* (2).Dmitry Kovalev
Updating fractional_mv_step_fp and fractional_mv_step_comp_fp function types. Change-Id: I601c4378bc39ac3ffd4e295d9cbd8e1f74829d46
2013-09-24Merge "Moving from int_mv to MV."Dmitry Kovalev
2013-09-23Correct 3 step search site initialziationYaowu Xu
39c7b01d accidently reverted the row/col initialization, which broke mv clamps, which is dependent on the sites for valid motion vector range. This commit fixed the issue. Change-Id: Ibcce0226e0360b1ef483fe760b2e33f1af4bf494
2013-09-20Moving from int_mv to MV.Dmitry Kovalev
Converting vp9_mv_bit_cost, mv_err_cost, and mvsad_err_cost functions for now. Change-Id: I60e3cc20daef773c2adf9a18e30bc85b1c2eb211
2013-09-20Cleanup in vp9_init3smotion_compensation.Dmitry Kovalev
Change-Id: Ie47f53e76bc9530475c8c6d24e9b7a5a0189de56
2013-09-19fix integer overflow errorsYaowu Xu
Change-Id: I76f440a917832c02d7a727697b225bac66b99f56
2013-09-18Removing redundant code from vp9_mcomp.c.Dmitry Kovalev
Replacing ((1 << MV_MAX_BITS) - 1) with MV_MAX, adding const qualifiers, reusing computed values. Change-Id: I7b46d47f6c644b079d9c3478116a9de465a9baec
2013-09-11New mode_info_context storage -- undo revertScott LaVarnway
mode_info_context was stored as a grid of MODE_INFO structs. The grid now constists of pointers to MODE_INFO structs. The MODE_INFO structs are now stored as a stream (decoder only), eliminating unnecessary copies and is a little more cache friendly. Change-Id: I031d376284c6eb98a38ad5595b797f048a6cfc0d
2013-09-09Revert "New mode_info_context storage"James Zern
This reverts commit dae17734ece414091ba1184f7becd0aa6c0004f1 Encode crashes, leaks and increases integer overflow errors. Change-Id: I595aa2649bb8d0b6552ff91652837a74c103fda2
2013-09-06New mode_info_context storageScott LaVarnway
mode_info_context was stored as a grid of MODE_INFO structs. The grid now constists of a pointer to a MODE_INFO struct and a "in the image" flag. The MODE_INFO structs are now stored as a stream, eliminating unnecessary copies and is a little more cache friendly. For the test clips used, the decoder performance improved by ~4.3% (1080p) and ~9.7% (720p). Patch Set 2: Re-encoded clips with latest. Now ~1.7% (1080p) and 5.9% (720p). Change-Id: I846f29e88610fce2523ca697a9a9ef2a182e9256
2013-08-19fix a bug when null function pointer is used.Yaowu Xu
For certain partition size, the function poniter may not be intialized at all. The patch prevent the call if the pointer is not set. Change-Id: I78b8c3992b639e8799a16b3c74f0973d07b8b9ac
2013-08-12Using MV* instead of int_mv* as argument of vp9_clamp_mv_min_max.Dmitry Kovalev
Change-Id: I3c45916a9059f11b41e9d798e34ffee052969a44
2013-08-08General code cleanup.Dmitry Kovalev
Removing redundant parenthesis and curly braces. Combining declarations with initializations. Adding useful intermediate variables instead of recalculating expressions every time. Change-Id: I00106f404afd60bfc189905b0fded881684f941a
2013-08-08Adds a new subpel motion functionDeb Mukherjee
Adds a new subpel motion estimation function that uses a 2-level tree-structured decision tree to eliminate redundant computations. It searches fewer points than iterative search (which can search the same point multiple times) but has the same quality roughly. This is made the default setting at speeds 0 and 1, while at speed 2 and above only a 1-level search is used. Also includes various cleanups for consistency and redundancy removal. Results: derf: +0.012% psnr stdhd: +0.09% psnr Speedup of about 2-3% Change-Id: Iedde4866f5475586dea0f0ba4cb7428fba24eee9
2013-08-06Clean ups of the subpel search functionsDeb Mukherjee
Removes some unused code and speed features, and organizes the interfaces for fractional mv step functions for use in new speed features to come. In the process a new speed feature - number of iterations per step during the subpel search - is exposed. No change when this parameter is set as the original value of 3. Results: subpel_iters_per_step = 3: baseline subpel_iters_per_step = 2: psnr -0.067%, 1% speedup subpel_iters_per_step = 1: psnr -0.331%, 3-4% speedup Change-Id: I2eba8a21f6461be8caf56af04a5337257a5693a8
2013-08-06Flexible support for various pattern searchesDeb Mukherjee
Adds a few pattern searches to achieve various tradeoffs between motion estimation complexity and performance. The search framework is unified across these searches so that a common pattern search function is used for all. Besides it will be easier to experiment with various patterns or combinations thereof at different scales in the future. The new pattern search is multi-scale and is capable of using different patterns at different scales. The new hex search uses 8 points at the smallest scale and 6 points at other scales. Two other pattern searches - big-diamond and square are also added. Big diamond uses 4 points at the smallest scale and 8 points in diamond shape at the larger scales. Square is very similar conceptually to the default n-step search but is somewhat faster since it keeps only one survivor across all scales. Psnr/speed-up results on derf300: hex: -1.6% psnr%, 6-8% speed-up big-diamond: -0.96% psnr, 4-5% speedup square: -0.93% psnr, 4-5% speedup Change-Id: I02a7ef5193f762601e0994e2c99399a3535a43d2
2013-08-02Cleanups around allow_high_precision_mv flag.Dmitry Kovalev
Change-Id: Ic07f5f8ffeaedd5b7513b464871f83afc82dcd5c