summaryrefslogtreecommitdiff
path: root/vp9/common/vp9_blockd.h
AgeCommit message (Collapse)Author
2013-04-24Extension of segmentation to 8 segments.Paul Wilkins
Also some further simplification following removal of top node code. There is an issue in regards to the shared file vp8cx.h in regard to the roi_map as this interface assumes that there are only 4 segments. I have left the value here as 4 for now meaning that the roi_map interface is broken for VP9. Note that this change would have been easier if I hadn't had to search for hard wire instances of the number 4 and <= 3. Change-Id: Ia8b6deea4be4dbd20deb1656e689dd43a5f190e8
2013-04-24Simplify Segment CodingPaul Wilkins
Remove top node optimization. The improvement this gives is not sufficient to justify the extra complexity. Change-Id: I2bb4a12a50ffd52cacfa4a3e8acbb2e522066905
2013-04-24Simple implicit segmentation experiment.Paul Wilkins
Change-Id: Iaef16122732c2a81e0927f9862b51b68dc788712
2013-04-23Merge "Move src_diff to per-plane MACROBLOCK data" into experimentalJohn Koleszar
2013-04-23Move src_diff to per-plane MACROBLOCK dataJohn Koleszar
First in a series of commits making certain MACROBLOCK members addressable per-plane. This commit also refactors the block subtraction functions vp9_subtract_b, vp9_subtract_sby_c, etc to be loops-over-planes and variable subsampling aware. Change-Id: I371d092b914ae0a495dfd852ea1a3d2467be6ec3
2013-04-22Removing the implicit compound inter experimentDeb Mukherjee
Removing this experiment for now, since it has been broken with the latest code changes. Change-Id: I1be2181b56de490fcb577f5905b5e147a8ed82d8
2013-04-22Move pre, second_pre to per-plane MACROBLOCKD dataJohn Koleszar
Continue moving framebuffers to per-plane data. Change-Id: I237e5a998b364c4ec20316e7249206c0bff8631a
2013-04-22Removes the code_nonzerocount experimentDeb Mukherjee
This patch does not seem to give any benefits. Change-Id: I9d2b4091d6af3dfc0875f24db86c01e2de57f8db
2013-04-22End of orientation zero group experimentDeb Mukherjee
Adds an experiment that codes an end-of-orientation symbol for every eligible zero encountered in scan order. This cleans out various other sub-experiments that were part of the origiinal patch, which will be later included if found useful. Results are slightly positive on all sets (0.1 - 0.2% range). Change-Id: I57765c605fefc7fb9d1b57f1b356843602abefaf
2013-04-19Merge "Move dst to per-plane MACROBLOCKD data" into experimentalJohn Koleszar
2013-04-19Move dst to per-plane MACROBLOCKD dataJohn Koleszar
First in a series of commits moving the framebuffers pointers to per-plane data, so that they can be indexed numerically rather than by name. Change-Id: I6e0d60fd4d51e6375c384eb7321776564df21775
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