summaryrefslogtreecommitdiff
path: root/vp9/common/vp9_blockd.h
AgeCommit message (Collapse)Author
2013-04-19Merge "Mv ref candidates cut to 2." into experimentalPaul Wilkins
2013-04-19Move diff to MACROBLOCKD per-plane data.John Koleszar
Change-Id: Ic27af09e38af8317ac4743241883d577a44f1490
2013-04-19make build_inter_predictors block size agnostic (split)John Koleszar
All build_inter_predictors can now be serviced by the same inner function. Change-Id: I40b08bee8f047286db4b1aad9dcae37b879c3f2a
2013-04-19Merge "make buid_inter_predictors block size agnostic (chroma)" into ↵John Koleszar
experimental
2013-04-19Mv ref candidates cut to 2.Paul Wilkins
Further simplification of mvref search to return only the top two candidates. Distance weights removed as the test order reflects distance anyway. Change-Id: I0518cab7280258fec2058670add4f853fab7b855
2013-04-19Removal of CONFIG_NEW_MVREF experiment.Paul Wilkins
This experiment has failed to give much benefit but does add complexity so deprecated. Change-Id: Ic7b929ba706390b9907ef0b4f965bd401ca799a4
2013-04-18make buid_inter_predictors block size agnostic (chroma)John Koleszar
Updates to make non-SPLITMV inter predictors work for all plane types. Change-Id: I25dbef40b7ffcac30254b43eed1e22fc732378ae
2013-04-18make buid_inter_predictors block size agnostic (luma)John Koleszar
This commit converts the luma versions of vp9_build_inter_predictors_sb to use a common function. Update the convolution functions to support block sizes larger than 16x16, and add a foreach_predicted_block walker. Next step will be to calculate the UV motion vector and implement SBUV, then fold in vp9_build_inter16x16_predictors_mb and SPLITMV. At the 16x16, 32x32, and 64x64 levels implemented in this commit, each plane is predicted with only a single call to vp9_build_inter_predictor. This is not yet called for SPLITMV. If the notion of SPLITMV/I8X8/I4X4 goes away, then the prediction block walker can go away, since we'll always predict the whole bsize in a single step. Implemented using a block walker at this stage for SPLITMV, as a 4x4 "prediction block size" within the BLOCK_SIZE_MB16X16 macroblock. It would also support other rectangular sizes too, if the blocks smaller than 16x16 remain implemented as a SPLITMV-like thing. Just using 4x4 for now. There's also a potential to combine with the foreach_transformed_block walker if the logic for calculating the size of the subsampled transform is made more straightforward, perhaps as a consequence of supporing smaller macroblocks than 16x16. Will watch what happens there. Change-Id: Iddd9973398542216601b630c628b9b7fdee33fe2
2013-04-18Merge "Make the use of pred buffers consistent in MB/SB" into experimentalJingning Han
2013-04-18Make the use of pred buffers consistent in MB/SBJingning Han
Use in-place buffers (dst of MACROBLOCKD) for macroblock prediction. This makes the macroblock buffer handling consistent with those of superblock. Remove predictor buffer MACROBLOCKD. Change-Id: Id1bcd898961097b1e6230c10f0130753a59fc6df
2013-04-18Merge "Adding DEFAULT_PRED_PROB_{0, 1, 2} constants." into experimentalDmitry Kovalev
2013-04-18Merge "Replacing VP9_COMBINEENTROPYCONTEXTS macro with function." into ↵Dmitry Kovalev
experimental
2013-04-17Use BLOCK_SIZE_TYPE in foreach_ walkerJohn Koleszar
Change-Id: I655305c9e22bdd9abc893d3c40d4bc6616aa1d35
2013-04-17Adding DEFAULT_PRED_PROB_{0, 1, 2} constants.Dmitry Kovalev
Also using ALLOWED_REFS_PER_FRAME instead of 3. Change-Id: I810dd8521d8138edb9dbd78edede49b62f706554
2013-04-17Remove BLOCK_SIZE_LG2.Ronald S. Bultje
It is unused. Change-Id: Ied3269ffacf9b6303bc9d85f996384c3575ef812
2013-04-17Fairly basic integration of rectangular blocks in encoding RD loop.Ronald S. Bultje
Adds RD integration for 32x16, 16x32, 64x32 and 32x64 rectangular blocks. Derf almost +0.6%, HD a little over +1.0%, STDHD +1.3%. Change-Id: Id651fdb6a655fdbb5c47009757e63317acfb88a5
2013-04-16Recursive partition syntax codingJingning Han
Enable recursive partition information coding from SB64X64 down to MB16X16. The bit-stream syntax is now supporting rectangular block sizes. It starts from SB64X64 and recursively describes the partition type of the current block. If the partition type is PARTITION_NONE, the block is coded as a single unit; if it is PARTITION_HORZ or PARTITION_VERT, the block is segmented into two independently coded rectangular units, with no further partition needed; otherwise, the block is segmented into 4 square blocks. i.e., PARTITION_SPLIT case, each can be potentially further partitioned. Forward adaptive probability modeling is used for the partition information coding, conditioned on the current block size. Change-Id: I499365fb547839d555498e3bcc0387d8a3587d87
2013-04-16Replacing VP9_COMBINEENTROPYCONTEXTS macro with function.Dmitry Kovalev
Change-Id: I3bbc31840af69481e1d9bb4427c9ee25abf82946
2013-04-16Merge "Optimize the scaling calculation" into experimentalYunqing Wang
2013-04-16Optimize the scaling calculationYunqing Wang
In decoder, the scaling calculation, such as (mv * x_num / x_den), is fairly time-consuming. In this patch, we check if the scaling happens or not at frame level, and then decide which function to call to skip scaling calculation when no scaling is needed. Tests showed a 3% decoder performance gain. Change-Id: I270901dd0331048e50368cfd51ce273dd82b8733
2013-04-16Merge "Removing TRUE and FALSE macro definitions." into experimentalJohn Koleszar
2013-04-16Merge "Removing extra params in dequant functions" into experimentalScott LaVarnway
2013-04-15Removing TRUE and FALSE macro definitions.Dmitry Kovalev
Using regular 0 and 1 constants now. Change-Id: Ie763503cbb727847cc8f1d6506cd6f2ee607f056
2013-04-15Removing extra params in dequant functionsScott LaVarnway
Now that the predictor is the dest, we do not need the extra parameters. Change-Id: I78db73d39b5aff62f15303f3d51ad2797eae74b6
2013-04-12Reorder enum i4X4 predcition modesYaowu Xu
To match the order of directional intra prediction modes for larger blocks, also renamed the i4x4 prediction modes to mirror the larger variants. Change-Id: I77cea4d0add6c7758460bf9c7a2fe59aca601f0b
2013-04-12Rename B_PRED to I4X4_PREDYaowu Xu
So it is consistent with I8x8_PRED. Change-Id: Iefa65124b2419690d83e526c611129c0ede29d11
2013-04-11Make intra predictor support rectangular blocksJingning Han
The intra predictor supports configurable block sizes. It can handle intra prediction down to 4x4 sizes, when enabled in BLOCK_SIZE_TYPE. Change-Id: I7399ec2512393aa98aadda9813ca0c83e19af854
2013-04-11WIP: removing predictor buffer usage from decoderScott LaVarnway
This patch will use the dest buffer instead of the predictor buffer. This will allow us in future commits to remove the extra mem copy that occurs in the dequant functions when eob == 0. We should also be able to remove extra params that are passed into the dequant functions. Change-Id: I7241bc1ab797a430418b1f3a95b5476db7455f6a
2013-04-11tokenize: convert skippable functionsJohn Koleszar
Use the common block walker to calculate skippability. Change-Id: I6721e42f065df237426c91c1d871ec226ba7cdcb
2013-04-11Add foreach_transformed_blockJohn Koleszar
Adds a framework for doing arbitrary functions on each transform- sized block in the mb/sb. Change-Id: Iaffb1ae8db5ff2abfa8720c608c78376b42f2096
2013-04-10Merge "Make SB coding size-independent." into experimentalRonald S. Bultje
2013-04-09Make SB coding size-independent.Ronald S. Bultje
Merge sb32x32 and sb64x64 functions; allow for rectangular sizes. Code gives identical encoder results before and after. There are a few macros for rectangular block sizes under the sbsegment experiment; this experiment is not yet functional and should not yet be used. Change-Id: I71f93b5d2a1596e99a6f01f29c3f0a456694d728
2013-04-09Merge "detokenize: use consistent structure for all block sizes" into ↵John Koleszar
experimental
2013-04-08detokenize: use consistent structure for all block sizesJohn Koleszar
Restructure the code to avoid the majority of per-block-size switches, code duplication, etc. All block types (mb/sb32/sb64) can be handled by the same code. Change-Id: I4022718d66e31a15a7074e43f3b98cd0a5124ea7
2013-04-05Merge changes Ibbfa68d6,Idb76a0e2 into experimentalJohn Koleszar
* changes: Move EOB to per-plane data Move qcoeff, dqcoeff from BLOCKD to per-plane data
2013-04-05Remove full-pixel-related code.Ronald S. Bultje
This is a VP8-only feature (part of profile 3) that is unsupported in VP9. Change-Id: I78016eede8d9c834d44d4c517f3e8b8fc2a378b1
2013-04-05Remove some unused macros.Ronald S. Bultje
Change-Id: Ic219e7878428128e4bb1b3995e8151f92b6bd9c3
2013-04-05Remove struct POS.Ronald S. Bultje
It is never used. Change-Id: If7462357c0498ed05af2645f0c272124381d3aab
2013-04-05Remove unused vpx_log() function prototype.Ronald S. Bultje
Change-Id: Icd6b4322841fefcc86f06645e6aaf1ea42fdfabd
2013-04-05Remove "tx_type" member from union b_mode_info.Ronald S. Bultje
It is never used. Change-Id: Ibae898c52c766aabf65868611060f9c38fb85b35
2013-04-04Move EOB to per-plane dataJohn Koleszar
Continue migrating data from BLOCKD/MACROBLOCKD to the per-plane structures. Change-Id: Ibbfa68d6da438d32dcbe8df68245ee28b0a2fa2c
2013-04-04Move qcoeff, dqcoeff from BLOCKD to per-plane dataJohn Koleszar
Start grouping data per-plane, as part of refactoring to support additional planes, and chroma planes with other-than 4:2:0 subsampling. Change-Id: Idb76a0e23ab239180c818025bae1f36f1608bb23
2013-04-01Code cleanup.Dmitry Kovalev
Adding multiple16 function, removing redundant code, better formatting. Change-Id: I50195b78ac8ab803e3d05c8fb05a7ca134fab386
2013-03-28Framework changes in nzc to allow more flexibilityDeb Mukherjee
The patch adds the flexibility to use standard EOB based coding on smaller block sizes and nzc based coding on larger blocksizes. The tx-sizes that use nzc based coding and those that use EOB based coding are controlled by a function get_nzc_used(). By default, this function uses nzc based coding for 16x16 and 32x32 transform blocks, which seem to bridge the performance gap substantially. All sets are now lower by 0.5% to 0.7%, as opposed to ~1.8% before. Change-Id: I06abed3df57b52d241ea1f51b0d571c71e38fd0b
2013-03-26Implicit weighted prediction experimentDeb Mukherjee
Adds an experiment to use a weighted prediction of two INTER predictors, where the weight is one of (1/4, 3/4), (3/8, 5/8), (1/2, 1/2), (5/8, 3/8) or (3/4, 1/4), and is chosen implicitly based on consistency of the predictors to the already reconstructed pixels to the top and left of the current macroblock or superblock. Currently the weighting is not applied to SPLITMV modes, which default to the usual (1/2, 1/2) weighting. However the code is in place controlled by a macro. The same weighting is used for Y and UV components, where the weight is derived from analyzing the Y component only. Results (over compound inter-intra experiment) derf: +0.18% yt: +0.34% hd: +0.49% stdhd: +0.23% The experiment suggests bigger benefit for explicitly signaled weights. Change-Id: I5438539ff4485c5752874cd1eb078ff14bf5235a
2013-03-19Remove TX size segment featurePaul Wilkins
Change-Id: I0d226e4cb240caced37230f46905bf69b46e0cce
2013-03-07Update ADST selection if tx_size < block_size.Ronald S. Bultje
Change-Id: Ic9b336486774c95ffbb92adcb110cc0fc2a83cc5
2013-03-07Re-add support for ADST in superblocks.Ronald S. Bultje
This also changes the RD search to take account of the correct block index when searching (this is required for ADST positioning to work correctly in combination with tx_select). Change-Id: Ie50d05b3a024a64ecd0b376887aa38ac5f7b6af6
2013-03-07Coding con-zero count rather than EOB for coeffsDeb Mukherjee
This patch revamps the entropy coding of coefficients to code first a non-zero count per coded block and correspondingly remove the EOB token from the token set. STATUS: Main encode/decode code achieving encode/decode sync - done. Forward and backward probability updates to the nzcs - done. Rd costing updates for nzcs - done. Note: The dynamic progrmaming apporach used in trellis quantization is not exactly compatible with nzcs. A suboptimal approach has been used instead where branch costs are updated to account for changes in the nzcs. TODO: Training the default probs/counts for nzcs Change-Id: I951bc1e22f47885077a7453a09b0493daa77883d
2013-03-04Make superblocks independent of macroblock code and data.Ronald S. Bultje
Split macroblock and superblock tokenization and detokenization functions and coefficient-related data structs so that the bitstream layout and related code of superblock coefficients looks less like it's a hack to fit macroblocks in superblocks. In addition, unify chroma transform size selection from luma transform size (i.e. always use the same size, as long as it fits the predictor); in practice, this means 32x32 and 64x64 superblocks using the 16x16 luma transform will now use the 16x16 (instead of the 8x8) chroma transform, and 64x64 superblocks using the 32x32 luma transform will now use the 32x32 (instead of the 16x16) chroma transform. Lastly, add a trellis optimize function for 32x32 transform blocks. HD gains about 0.3%, STDHD about 0.15% and derf about 0.1%. There's a few negative points here and there that I might want to analyze a little closer. Change-Id: Ibad7c3ddfe1acfc52771dfc27c03e9783e054430