summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_rdopt.c
AgeCommit message (Collapse)Author
2013-06-27Merge "Auto adapt step size feature."Paul Wilkins
2013-06-27Merge "Start adaptive threshold for each mode at max."Paul Wilkins
2013-06-27Merge "Change meaning of cpi->sf.first_step and rename."Paul Wilkins
2013-06-26Merge "Make intra predictor reference buffer configurable"Jingning Han
2013-06-26Make intra predictor reference buffer configurableJingning Han
This commit enables configurable reference buffer pointer for intra predictor. This allows later removal of spatial dependency between blocks inside a 64x64 superblock in the rate-distortion optimization loop. Change-Id: I02418c2077efe19adc86e046a6b49364a980f5b1
2013-06-26Auto adapt step size feature.Paul Wilkins
Also tweaks to other features and experiments with what is on and off at different speed settings. Change-Id: I3e1d0be0d195216bf17c2ac5df67f34ce0b306b2
2013-06-26Merge "Using get_plane_block_{width, height} instead of custom code."Dmitry Kovalev
2013-06-26Start adaptive threshold for each mode at max.Paul Wilkins
Each frame we reset all adaptive thresholds to MAX rather than base. As modes are picked their thresholds drop down. Change-Id: Ia37f03a73003c2d9bfcda57edea07205e9a0e5e8
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-06-25Refactor intra predictor blockJingning Han
Remove vp9_intra4x4_predict(). Use the common intra prediction function for all block sizes. Change-Id: Ibd19d51dfa3da8bbdfb79ddeb81530b2e2089560
2013-06-25Using get_plane_block_{width, height} instead of custom code.Dmitry Kovalev
Change-Id: I453ed11b965e857a14c18ea5c0f4a0a48e7dc0d9
2013-06-25Removing unused code.Dmitry Kovalev
Removing block index (ib) parameter from get_tx_type_{8x8, 16x16} functions. Change-Id: Ia213335aae7a7cb027f97b9cc9b04519840250f1
2013-06-21Transforming scale_mv_component_q4 into scale_mv_q4 function.Dmitry Kovalev
Using MV instead of int_mv for function arguments. Change-Id: Ic25e13dccbc98fac1fa1b3255127e00cca2a57f6
2013-06-21Implement SSE2 block_error.Ronald S. Bultje
Change vp9_block_error() to return a 64bit error variable, change all callers to expect a 64bit return value (this will prevent overflows, which we basically don't check for at all right now). Remove duplicate block_error() function, which fixed that through truncation. Remove old (incompatible) mmx/sse2 block_error SIMD versions and replace with a new one that returns a 64bit value. Encoding time of first 50 frames of bus @ 1500kbps goes from 3min29 to 3min23, i.e. a 3% overall speedup. Change-Id: Ib71ac5508b5ee8a80f1753cd85d72df1629abe68
2013-06-20rename variables to avoid build error in MSVCYaowu Xu
Change-Id: I7960178c95c54d5c4497e44cfc8c493566294b34
2013-06-20Improving model rd with variance and quant stepDeb Mukherjee
Improves the rd modeling function and implements them using interpolation from a table which is a little faster. Also uses sse as input to the modeling function rather than var - since there is no dc prediction used and as a result the sse works a little better. derfraw300: +0.05% Speedup: ~1% Change-Id: I151353c6451e0e8fe3ae18ab9842f8f67e5151ff
2013-06-20convert all speed things to speed featuresJim Bankoski
Change-Id: Ie24489a4d39f3e53e816eeebf75a1c9c7d94515a
2013-06-18Remove unnecessary copying of probs.Yaowu Xu
Change-Id: Ic924f07c6ab0c929c6cdf11880d3c625806e272c
2013-06-13Some cleanups in rd motion searchDeb Mukherjee
No bitstream or output change - only cosmetics. Change-Id: Ic8c1d7ad010a87dcf27d12a38cd7dd5adba683a7
2013-06-10Adds a zero check in model_rd functionDeb Mukherjee
Avoids divide-by-zero when variance is 0. Change-Id: I3c7f526979046ff7d17714ce960fe81d6e1442a0
2013-06-10Fix use of get_uv_tx_size in loopfilterJohn Koleszar
Change the argument of get_uv_tx_size() to be an MBMI pointer, so that the correct column's MBMI can be passed to the function. Change-Id: Ied6b8ec33b77cdd353119e8fd2d157811815fc98
2013-06-10Rd check on segment level reference mode.Paul Wilkins
Do not allow the rd code to check compound modes if a segment level reference frame is selected. Change-Id: I95f0c57789e0eaceed7caf227e94b4ba3130a06c
2013-06-10Allow non-zeromv if ref_frame=intra with segmentation skip/ref enabled.Ronald S. Bultje
Change-Id: Ib5a95bb6ab643b276df3faa9bf99595e4a69ff18
2013-06-10Fixed point reference picture scalingTero Rintaluoma
Fixed point scaling factors are calculated once for each reference frame by using integer division. Otherwise fixed point scaling routines are used in all scaling calculations. This makes it possible to calculate fixed point scaling factors on device driver software and pass them to hardware and thus avoid division on hardware. TODO: - Missing check for maximum frame dimensions (currently scaling uses 14 bits) - Missing check for maximum scaling ratio (upscaling 16:1, downscaling 2:1) Problems: - Straightforward fixed point implementation can cause error +-1 compared to integer division (i.e. in x_step_q4). Should only be an issue for frames larger than 16k. Change-Id: I3cf4dabd610a4dc18da3bdb31ae244ebaf5d579c
2013-06-07Coding tx-size selection by use of spatial contextDeb Mukherjee
Adds coding of transform size within a frame by use of context of transform sizes selected in left and above blocks. Also incorporates code for generating stats. TODO: generate and incorporate new default stats Change-Id: I6a7af099f6ad61d448521d9a51167aedaf638ed6
2013-06-07Change to segment ref frame feature.Paul Wilkins
Simplify feature to only support a single reference frame instead of a mask. Change-Id: I5dd3a98c7a224aafb35708850ab82e2f220e68fb
2013-06-07Coding updates for tx-size selectionDeb Mukherjee
Changes to the coding of transform sizes, along with forward and backward probability updates. Results: derf300: +0.241% Context based coding of transform sizes will be in a separate patch. Change-Id: I97241d60a926f014fee2de21fa4446ca56495756
2013-06-06Change ref frame coding.Ronald S. Bultje
Code intra/inter, then comp/single, then the ref frame selection. Use contextualization for all steps. Don't code two past frames in comp pred mode. Change-Id: I4639a78cd5cccb283023265dbcc07898c3e7cf95
2013-06-06New intra mode and partitioning probabilities.Ronald S. Bultje
Split partition probabilities between keyframes and non-keyframes, since they are fairly different. Also have per-blocksize interframe y intramode probabilities, since these vary heavily between different blocksizes. Lastly, replace default probabilities for partitioning and intra modes with new ones generated from current codec. Replace counts with actual probabilities also. Change-Id: I77ca996e25e4a28e03bdbc542f27a3e64ca1234f
2013-06-06Bug fix in rd_pick_inter_mode_sb_Jingning Han
Fix the calculation of step size in height. Change-Id: I0e0c0175f141f5a41214ae51cef233d13942d3c5
2013-06-06Merge "Rd thresholds change with block size." into experimentalPaul Wilkins
2013-06-06Merge "Turn off compound inter search refinement for good quality." into ↵Paul Wilkins
experimental
2013-06-06signs revertedJim Bankoski
Change-Id: Ieface458c83eb6e7ee95595d9fc662f372117c9a
2013-06-06Rd thresholds change with block size.Paul Wilkins
Added structures to support independent rd thresholds for different block sizes (and set experimental block size correction factors). Added structure to to allow dynamic adaptation of thresholds per mode and per block size basis depending on how often the mode/block size combination is seen (currently fixed factor). Removed some unused variables. TODO - Adaptation of thresholds based on how often each mode chosen. - The baseline mode values could also be adjusted based on the block size (e.g. for a particular intra mode use a low threshold for 4x4 prediction blocks but a relatively high value for 64x64. Change-Id: Iddee65ff3324ee309815ae7c1c5a8584720e7568
2013-06-06Turn off compound inter search refinement for good quality.Paul Wilkins
Turn this feature off for some modes in "good" quality. Change-Id: I3f262d62cca8f01736b977af1465291e8be29f0a
2013-06-06don't tokenize & encode tokens for blocks in UMVJim Bankoski
This avoids encoding tokens for blocks that are entirely in the UMV border. This changes the bitstream. Change-Id: I32b4df46ac8a990d0c37cee92fd34f8ddd4fb6c9
2013-06-05Merge "Fix UV intra coding rd loop" into experimentalJingning Han
2013-06-05Fix UV intra coding rd loopJingning Han
This commit makes the coding/reconstruction operations of intra coding rate-distortion loop for UV components consistent with those of the encoding process. key frame coding gains: derf: 0.11% stdhd: 0.42% Change-Id: I8d49f83924a320e3689ef2d60096c49d7f0c7a40
2013-06-05Cosmetic renaming VP9_MVREFS to VP9_INTER_MODESDeb Mukherjee
NO bitstream change Change-Id: I79f6146dac5fdd157051b6f8dc611c0b7b5e5f7f
2013-06-04Merge "Make sb intra rd search consistent with encoding" into experimentalJingning Han
2013-06-04Make sb intra rd search consistent with encodingJingning Han
This commit makes operations of the superblock intra coding rate distortion optimization consistent with those used in the encoding process. Given the test prediction mode and transform size, the rd optimizer encodes and reconstructs each transformed block of the superblock consecutively, then computes the total rate-distortion costs accosicated with the current superblock to select the coding decisions. It achieves coding performance gains: derf 0.353% yt 1.111% Change-Id: I0da2eb7a71361dfb8c1384927fc536b0c2790d07
2013-06-03Merge "Replacing memcpy with struct assignment." into experimentalDmitry Kovalev
2013-06-03Put iterative motion search under speed controlJingning Han
Enable iterative motion search for compound inter-inter prediction of block sizes 4x4/4x8/8x4 only when best coding quality is selected. The iterative motion search provides about 0.1% gains for derf and stdhd at this point, at the expense of longer runtime. Change-Id: Idc03e7f827e51f1bb8d269bc3752ee297a6bbfe5
2013-05-31Replacing memcpy with struct assignment.Dmitry Kovalev
Change-Id: Ib557cc6351404b9e178e95a545883eb3666f11f0
2013-05-31Merge "Adding plane_block_width and plane_block_height functions." into ↵Dmitry Kovalev
experimental
2013-05-31Costing fixes related to trellis optimizationDeb Mukherjee
Migrates costing changes/fixes from the rebalance expt to the head without the expt on. Rebased. Change-Id: I51677d62f77ed08aca8d21a4c9a13103eb8de93f Results: derfraw300: +0.126%
2013-05-31Adding plane_block_width and plane_block_height functions.Dmitry Kovalev
Change-Id: I02c17fb733c0f3c22dc3167c3d3182797415f1ae
2013-05-31Merge "Merge all various transform size data trackers into single ↵Ronald S. Bultje
variables." into experimental
2013-05-31Merge "Moved use_prev_in_find_mv_refs check to frame level" into experimentalScott LaVarnway
2013-05-31Merge all various transform size data trackers into single variables.Ronald S. Bultje
Change-Id: I2dfc569106b29fbe4da20585a0e85e5e9ea6a4db