summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_mcomp.h
AgeCommit message (Collapse)Author
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-23Cleaning up motion compensation code.Dmitry Kovalev
Change-Id: I74cf028e8c732cd0dbc070326152d3085b824a80
2014-01-23vp9/encoder: add extern "C" to headersJames Zern
Change-Id: I4f51ce859a97bf1b8fd2b37ac585b7c643232b69
2014-01-17Cleaning up vp9_refining_search_sad() function.Dmitry Kovalev
Change-Id: I660b53da8ebf3049832ce8a10721051c4e0ebb00
2014-01-16Cleaning up vp9_refining_search_8p_c() function.Dmitry Kovalev
Change-Id: Icf3b3dd96d7e133a4ad7260cd95288f6217998a6
2014-01-03Replacing int_mv with MV.Dmitry Kovalev
Change-Id: Ifd432fa3741ba47102d298e0b348eb00f5a9ce53
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-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-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-09-29Merge "Moving from int_mv* to MV* (3)."Dmitry Kovalev
2013-09-25Merge "Limit mv search range for first pass and mbgraph"Yaowu Xu
2013-09-25Moving from int_mv* to MV* (3).Dmitry Kovalev
Change-Id: I9795d0937bc07793c13d067281995e0750f694d9
2013-09-24Limit mv search range for first pass and mbgraphYaowu Xu
Both first pass and mbgraph search use block size 16x16 for motion estimation. This commit put a limit of motion vector range. The effective range allows the entire 16x16 with required subpel interpolation input to be completely outside image border, but not any further away from image border. Change-Id: Id70a5ed08be49e70959f064859d72adc7d775d08
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-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-08-12Using MV* instead of int_mv* as argument of vp9_clamp_mv_min_max.Dmitry Kovalev
Change-Id: I3c45916a9059f11b41e9d798e34ffee052969a44
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-07-31Removing unused "ishp" arguments.Dmitry Kovalev
Using different variable names "allow_hp" and "use_hp" instead of "usehp". Change-Id: I0cd5996ddeb46bd754473b680a993c0aaf8eb879
2013-06-26Change meaning of cpi->sf.first_step and rename.Paul Wilkins
Renamed cpi->sf.first_step to cpi->sf.reduce_first_step_size and changed its meaning such that it is a delta applied to reduce the default first step size (>> x) in the motion search rather than an absolute value. The default first step size is already changed according to the image dimensions (smaller for smaller images). cpi->sf.reduce_first_step_size now applies a further correction from the default. Change-Id: Ia94e08bc24c67b604831f980909af7e982fcd16d
2013-05-22Merge CONFIG_COMP_INTER_JOINT_SEARCH.Paul Wilkins
Merge this experiment so that it is under a speed feature flag not a configuration flag. Change-Id: I536f7f125a4ff5149bb3a64f791e835c324535fd
2013-05-16New inter mode context.Paul Wilkins
This patch creates a new inter mode contest that avoids a dependence on the reconstructed motion vectors from neighboring blocks. This was a change requested by a hardware vendor to improve decode performance. As part of this change I have also made some modifications to stats output code (under a flag) to allow accumulation of inter mode context flags over multiple clips Some further changes will be required to accommodate the deprecation of the split mv mode over the next few days. Performance as stands is around -0.25% on derf and std-hd but up on the YT and YT-HD sets. With further tuning or some adjustment to the context criteria it should be possible to make this change broadly neutral. Change-Id: Ia15cb4470969b9e87332a59c546ae0bd40676f6c
2013-05-10Add joint motion search in comp_inter_inter mode(experiment)Yunqing Wang
In current code, motion vectors got from single prediction mode are used in compound prediction mode directly. These motion vectors may not give accurate prediction since they are searched independently. In this patch, we took Pascal's suggestion, and did joint motion search in compound prediction mode to find better motion vectors in this situation. Test results: Overall PSNR: 0.570%(derf), 0.918%(stdhd); SSIM: 0.572%(derf), 1.009%(stdhd); The encoder is a little slower. This can be improved since some c code is used in motion search. Change-Id: Ib30c9240f6c56c9b070867b4ca89412a76d9f3c6
2013-04-26Remove BLOCKD structureJohn Koleszar
All members can be referenced from their per-plane counterparts, and removes assumptions about 24 blocks per macroblock. Change-Id: I7ff2fa72d22c29163eb558981c8193765a8113d9
2013-04-26Removed bmi from blockdScott LaVarnway
This originally was "Removed update_blockd_bmi()". Now, this patch removed bmi from blockd and uses the bmi found in mode_info_context. Eliminates unnecessary bmi copies between blockd and mode_info_context. Change-Id: I287a4972974bb363f49e528daa9b2a2293f4bc76
2013-04-25Remove BLOCK structureJohn Koleszar
All members can be referenced from their per-plane counterparts, and removes assumptions about 24 blocks per macroblock. Change-Id: I593fb0715e74cd84b48facd1c9b18c3ae1185d4b
2013-03-13Support +/-2048 motion vector codingJingning Han
Enable entropy coding of motion vectors up to +/-2048. Also extend the motion search range accordingly. Change-Id: Iac2bb015e8934521cef83a19edbe967d9f097436
2013-03-08Extend diff MV limit from +/-256 to +/-1024Jingning Han
Increase the motion search range by 4x. Change MV_CLASS tree of the entropy coding to allow two additional mv classes to cover the extended motion vector limit. The codec determines the effective motion search range conditioned on the actual frame dimension. It provides coding gains: stdhd 0.39% yt 0.56% hd 0.47% Major coding performance gains are packed in several sequences with intense motion activities, e.g., ped_1080p gains 7% at high bit-rates, and on average 3%. TODO: Need to further tune the rate control and motion search units. Change-Id: Ib842540a6796fbee5a797809433ef6a477c6d78d
2013-02-28Code cleanup.Dmitry Kovalev
Lower case variable names, converting while loops to for loops. Change-Id: Ic3b973391eef7472a99d18d02fe79cfef5e04e62
2013-02-20Entropy stats output code.Paul Wilkins
Fixes to make Entropy stats code work again Change-Id: I62e380481a4eb4c170076ac6ab36f0c2b203e914
2012-12-18Use standard integer types for pixel values and coefficients.Ronald S. Bultje
For coefficients, use int16_t (instead of short); for pixel values in 16-bit intermediates, use uint16_t (instead of unsigned short); for all others, use uint8_t (instead of unsigned char). Change-Id: I3619cd9abf106c3742eccc2e2f5e89a62774f7da
2012-12-07Introduce vp9_coeff_probs/counts/stats/accum types.Ronald S. Bultje
Use these, instead of the 4/5-dimensional arrays, to hold statistics, counts, accumulations and probabilities for coefficient tokens. This commit also re-allows ENTROPY_STATS to compile. Change-Id: If441ffac936f52a3af91d8f2922ea8a0ceabdaa5
2012-11-30google style guide include guardsJim Bankoski
Change-Id: I2c252f3ddcc99e96c1f5d3dab8bcb25a2a3637ea
2012-11-28fixed includes to be fully specifiedJim Bankoski
Change-Id: Ia1cce221f8511561b9cbd8edb7726fbc286ff243
2012-11-28remove postproc invokesJim Bankoski
and some miscellaneous invoke left overs Change-Id: I63191b1bfd3bea4ce30cceaeb686ec850570fc43
2012-11-27Add vp9_ prefix to all vp9 filesJohn Koleszar
Support for gyp which doesn't support multiple objects in the same static library having the same basename. Change-Id: Ib947eefbaf68f8b177a796d23f875ccdfa6bc9dc