- 07 Aug, 2013 1 commit
-
-
Deb Mukherjee authored
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
-
- 06 Aug, 2013 1 commit
-
-
Deb Mukherjee authored
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
-
- 05 Aug, 2013 2 commits
-
-
Deb Mukherjee authored
Adds a speed feature to skip all intra modes other than DC_PRED if the source variance is small. This feature is made part of speed 1 and up. Results on derf300: psnr -0.07%, speedup about 1-2% Also uses the source variance to fine-tune the early termination criteria when FLAG_EARLY_TERMINATE is on. This feature is made part of speed 2 and up. Results on derf300: psnr -0.52%, speedup about 5-7% Change-Id: I59e38aa836557cfa5405ae706fc64815cbfe4232
-
Dmitry Kovalev authored
Change-Id: I428c4d42212b757112e3acfe5b81314cfbb5fd6b
-
- 01 Aug, 2013 2 commits
-
-
Dmitry Kovalev authored
Change-Id: I73b59d7699a8e7e7acd3bf8041cb6c98ce9ba4bf
-
Yunqing Wang authored
use_min_partition_size and use_max_partition_size are not used currently, and could be added back if needed later. Change-Id: Ib22a9c06b064567a7c1d6d5445567ed77e0d3acc
-
- 30 Jul, 2013 2 commits
-
-
Adrian Grange authored
Removed unnecessary code lines, replaced switch with an if, fixed spelling errors and formatting. Change-Id: Ie48aa4604aa0ed48362ca359d792fb21b2ec1dc6
-
Yaowu Xu authored
Change-Id: Ica23b66f6664e5a5b168499584f0afffbc54794f
-
- 26 Jul, 2013 1 commit
-
-
Paul Wilkins authored
Speed feature experiment to set an upper and lower partition size limit based on what has been seen in spatial neighbors. This seems to gives quite reasonable speed gains in local (10-15%) and when used with speed 0 the losses are small (0.25% derf, 0.35% stdhd). However, for now I am only enabling it on speed 1 as there may be clashes with the existing temporal partition selection in speed 2. Using a tighter min / max around the range derived from the neighbors increases speed further but at the cost of a bigger quality loss. However, I think this spatial method could be combined with data from either the last frame or a variance method (or both) to refine the range of minimum and maximum partition size. I.e. consider the min and max from spatial and temporal neighbors and the variance recommendation. Change-Id: I1b96bf8b84368d6aad0c7aa600fe141b4f07435f
-
- 25 Jul, 2013 2 commits
-
-
Dmitry Kovalev authored
Removing unused constants, macros, and function declarations. Using ROUND_POWER_OF_TWO macro, vp9_zero, vp9_copy where possible. Moving #include from *.h to *.c. Merging for loops for motion vectors. Change-Id: Ic3bf841764a2bb177128bb3a6d7aa8f68229cd13
-
Dmitry Kovalev authored
Moving code from vp9_adapt_mode_context to vp9_adapt_mode_probs. Change-Id: I60829c30b28968cd813551ef3a206dfb98d323c9
-
- 24 Jul, 2013 2 commits
-
-
Adrian Grange authored
Change-Id: Id4138293efeac4503b2e01ce7a6c150a5abeef77
-
Dmitry Kovalev authored
Counts are separate from frame context. We have several frame contexts but need only one copy of all counts. Change-Id: I5279b0321cb450bbea7049adaa9275306a7cef7d
-
- 23 Jul, 2013 1 commit
-
-
Paul Wilkins authored
Renamed: MAX_MB_SEGMENTS to MAX_SEGMENTS MB_SEG_TREE_PROBS to SEG_TREE_PROBS The minimum unit for segmentation in the segment map is now 8x8 so it is misleading to use MB_ as macro-block traditionally refers to a 16x16 region. Change-Id: I0b55a6f0426bb46dd13435fcfa5bae0a30a7fa22
-
- 22 Jul, 2013 2 commits
-
-
Paul Wilkins authored
Mode search order in rd loop changed to better reflect observed hit counts. Also some adjustment of the baseline mode rd thresholds to reflect the order change and observed frequencies. Change-Id: I47a131cc83e11551df8add6d6d8d413d78d3a63c
-
Paul Wilkins authored
When CONFIG_POSTPROC is set there was a now invalid reference to cm->filter_level. Changed to cpi->mb.e_mbd.lf.filter_level in line with change Iaf5fb71c33719cdfa1b991f671caf071be9ea035 Change-Id: If746e60044903f7ba8d0d346225b3d015226c7d0
-
- 19 Jul, 2013 2 commits
-
-
Dmitry Kovalev authored
Adding loopfilter struct with fields from MACROBLOCKD and VP9Common. Eventually it will be moved to vp9_loopfilter.h for better code structure. Change-Id: Iaf5fb71c33719cdfa1b991f671caf071be9ea035
-
Deb Mukherjee authored
This patch modifies the auto_mv_step_size speed feature to use a combination of the maximum magnitude mv from the last inter frame, and the maximum magnitude mv for the two reference mvs with the same reference. For arf frames, the max mav step for the resolution is used. The bounds therefore are slightly tighter. The feature is made a speed 1 feature. Rebased. Results (when this feature is turned on over speed 0): derfraw300: -0.046% psnr, about 5+% speedup (tested on football: goes from 4m30.760s to 4m17.410s). Change-Id: If492797a61b0b4b3e58c0b8f86afb880165fc9f6
-
- 18 Jul, 2013 2 commits
-
-
James Zern authored
these are only used in the encoder. frames_since_golden / frames_till_alt_ref_frame -> VP[89]_COMP Change-Id: Ie14a6f46987bced685ddb449b85dc261caba6dfe
-
Dmitry Kovalev authored
Change-Id: Idfe2a850f72b38f519aea1aac1266d8c3aa813ee
-
- 17 Jul, 2013 4 commits
-
-
Yunqing Wang authored
vp9_init_quantizer() is called in vp9_create_compressor(), and should not be called in vp9_set_speed_features(). Change-Id: Ic2f1f4b0531b9d46bb841d7e1d8da9812207dad6
-
Yunqing Wang authored
Added disable_splitmv feature at other speed levels. For speed 3 or above, always turn it on. Change-Id: Ibb36f0a7ef12a34b4f8d0f9cb6193eab43b34360
-
Yunqing Wang authored
Current partition checking starts from small sizes, and then goes up to large sizes. This experiment uses the small partitions' motion estimation result, which is already available, to speed up the large partition's motion estimation. We can decide to skip some patition checkings if they are unlikely choices. We could use the motion vector(MV) result as current partition's prediction MV, limit the search range and reference frame. Current result at speed 1: psnr loss: 1.19% for stdhd, 0.287% for derf. speed gain: 14% for sunflower(hd), 11% for akiyo. Further improvement will be done later. Change-Id: I5abfd070e9cace2e91e2a0247d1325df313887ab
-
Paul Wilkins authored
Use an estimate based on DC_PRED for intra uv cost within the rd loop then only do a full uv mode analysis if an intra mode is chosen. Significant speed gains in some cases. Currently only enabled for speed 2 pending speed/quality tests. Change-Id: Ie851a12400d5483bce47ec0e3ccb8516041e91c0
-
- 16 Jul, 2013 3 commits
-
-
Dmitry Kovalev authored
Removing tile_rows and tile_columns from VP9Common, removing redundant constants MIN_TILE_WIDTH and MAX_TILE_WIDTH, changing signature of vp9_get_tile_n_bits. Change-Id: I8ff3104a38179b2c6900df965c144c1d6f602267
-
James Zern authored
s/frame_rate/framerate/g Change-Id: I6fc3e088e419c5f46e3a9390dd8a2cad2677a2fc
-
Yaowu Xu authored
This is a short term optimization till we work out a decoder implementation requiring no frame border extension. Change-Id: I02d15bfde4d926b50a4e58b393d8c4062d1be70f
-
- 15 Jul, 2013 1 commit
-
-
Jingning Han authored
This speed feature allows the encoder to largely remove the spatial dependency between blocks inside a 64x64 superblock, thereby removing the need to repeatedly encode superblocks per partition type in the rate-distortion optimization loop. A major challenge lies in the intra modes tested in the rate-distortion optimization loop. The subsequent blocks do not have access to the reconstructed boundary pixels without the intermediate coding steps. This was resolved by using the original pixels for intra prediction in the rd loop, followed by an appropriately designed distortion modeling on the quantization parameters. Experiments also suggested that the performance impact is more discernible at lower bit-rate/psnr settings. Hence a quantizer dependent threshold is applied to deactivate skip of block coding. For bus_cif at 2000 kbps, speed 0: runtime 269854ms -> 237774ms (12% speed-up) at 0.05dB performance loss. speed 1: runtime 65312ms -> 61536ms, (7% speed-up) at 0.04dB performance loss. This operation is currently turned on in settings of speed 1. Change-Id: Ib689741dfff8dd38365d8c1b92860a3e176f56ec
-
- 12 Jul, 2013 1 commit
-
-
James Zern authored
this was never fleshed out in the context of VP8, for which it was added. for VP9 it has no meaning. Change-Id: Iba2ecc026d9e947067b96690245d337e51e26eff
-
- 11 Jul, 2013 3 commits
-
-
Dmitry Kovalev authored
Adding segmentation struct to vp9_seg_common.h. Struct members are from macroblockd and VP9Common structs. Moving segmentation related constants and enums to vp9_seg_common.h. Change-Id: I23fabc33f11a359249f5f80d161daf569d02ec03
-
Scott LaVarnway authored
This patch is in experimental but was not merged into master. This patch swaps ptrs instead of copying and uses the last show_frame flag instead of setting the entire buffer to zero. Change-Id: Ia0950466c8ba301a2a5bf917ff3d07bc1a2c2311
-
Paul Wilkins authored
With sf->auto_mv_step_size on it is questionable whether sf->reduce_first_step_size is worthwhile. At speed 2 it was not having a big impact. Even at speed 2 sf->optimize_coefficients = 0 is not having a big speed imapct so for now I have moved it down into a higher speed setting. Change-Id: I8a54de76d486ad37aabce76474889da2768b14c1
-
- 10 Jul, 2013 2 commits
-
-
Deb Mukherjee authored
Adds a speed feature to eliminate full-rd computation if the modeled rd or rd based on a different parameter in the same mode is already a lot larger than the best rd yet. Specifically, only search the sharp and smooth filters if the modeled rd cost based on the regular filter is within a certain factor of the best rd cost so far. Also, skip full-rd computation of non splitmv inter modes if the modeled rd cost based on pred error is within the same factor of the best rd cost so far. Also adds some enhancements in the rd search for splitmv mode to speed things up by early breakouts. Negligible impact on performance. Resuts on derfraw300: psnr: -0.013% with the splitmv enhancements, -0.24% with the rd breakout feature on. speedup: 6% with splitmv enhancements, 20% with also residual breakout (tested on football sequence at 600 Kbps) Change-Id: I37abc308ea9f110c1679ce649b6a7e73ab1ad5fc
-
Yaowu Xu authored
Change-Id: I721ebdeef2b53ce3e5c3eba3f7462ae2103c95a8
-
- 08 Jul, 2013 2 commits
-
-
Ronald S. Bultje authored
Overall, on all test sets, this gains about +0.2% on all metrics. City is a clip where this really hurts (-1.0% on all metrics), I'm not quite sure why yet. Maybe interesting to look into in the future. Change-Id: I6f0eecb20e72f0194633270d30bf00d76d9eae78
-
Deb Mukherjee authored
Skips mode searches for intra and compound inter modes depending on the best mode so far and the reference frames. The various heuristics to be used are selected by bits from a flag. The previous direction based intra mode search pruning is also absorbed in this framework. Specifically the flags and their impact are: 1) FLAG_SKIP_INTRA_BESTINTER (skip intra mode search for oblique directional modes and TM_PRED if the best so far is an inter mode) derfraw300: -0.15%, 10% speedup 2) FLAG_SKIP_INTRA_DIRMISMATCH (skip D27, D63, D117 and D153 mode search if the best so far is not one of the closest hor/vert/diagonal directions. derfraw300: -0.05%, about 9% speedup 3) FLAG_SKIP_COMP_BESTINTRA (skip compound prediction mode search if the best so far is an intra mode) derfraw300: -0.06%, about 7-8% speedup 4) FLAG_SKIP_COMP_REFMISMATCH (skip compound prediction search if the best single ref inter mode does not have the same ref as one of the two references being tested in the compound mode) derfraw300: -0.56%, about 10% speedup Change-Id: I1a736cd29b36325489e7af9f32698d6394b2c495
-
- 03 Jul, 2013 3 commits
-
-
Dmitry Kovalev authored
Change-Id: I32276552b3ea6dc1dce8e298be114cfe1019b31c
-
Paul Wilkins authored
When this is 0 (BLOCK_SIZE_AB4X4) we want to do the inter joint search for all sizes. Change-Id: Id40cd6fe7790e7e1165352b9cef5e12fa8c0bc88
-
Paul Wilkins authored
sf->unused_mode_skip_lvl. Tests modes as normal for all sizes at or below the given level. At larger sizes it skips all modes that were not chosen at any smaller size. Hence setting BLOCK_SIZE_SB64X64 is in effect off. Setting BLOCK_SIZE_AB4X4 will only consider modes that were chosen for one or more 4x4 blocks at larger sizes. sf->reference_masking. Do a test encode of the NONE partition at one size and create a reference frame mask based on the best rd choice. In the full search only allow this reference frame. Currently it is testing 64x64 and repeats this in the full search. This does not work well with Jim's Partition code just now and is disabled by default. Change-Id: I8f8c52d2ef4a0c08100150b0ea4155d1aaab93dd
-
- 02 Jul, 2013 1 commit
-
-
Yaowu Xu authored
This commit adds a speed feature where only squared partition are evaluated in partition picking. Enable this feature in cpu-used 2 reduces encoding time by ~30%. loss of compression: -0.9% on cif set -1.23% on stdhd Change-Id: Ia6fad11210f0b78365abb889f9245604513be5b9
-