summaryrefslogtreecommitdiff
path: root/vp9/common/vp9_reconintra.c
AgeCommit message (Collapse)Author
2013-09-29fix cpplint issue in reconintraJim Bankoski
Change-Id: I934f9cfb96ce4f5f266b025064237875dcd92b3a
2013-08-27Merge "Renaming D27 to D207."Dmitry Kovalev
2013-08-23cosmetics: strip 'VP9_' from defines in vp9 only codeJames Zern
Change-Id: I481d9bb2fa3ec72b6a83d5f04d545ad8013f295c
2013-08-23Renaming D27 to D207.Dmitry Kovalev
I've already renamed d27_predictor to d207_predictor but forgot about the corresponding constant. Change-Id: Id312aa80fc5b5a1ab8a709a33418a029552a6857
2013-08-15Renaming d27 predictor to d207.Dmitry Kovalev
27 degrees intra predictor is actually 207 degrees, so renaming it. Change-Id: Ife96a910437eb80ccdc0b7a5b7a62c77542ae5be
2013-08-14Adding const to arguments of intra prediction functions.Dmitry Kovalev
Adding const to above and left pointers. Cleanup. Change-Id: I51e195fa2e2923048043fe68b4e38a47ee82cda1
2013-08-08General code cleanup.Dmitry Kovalev
Removing redundant parenthesis and curly braces. Combining declarations with initializations. Adding useful intermediate variables instead of recalculating expressions every time. Change-Id: I00106f404afd60bfc189905b0fded881684f941a
2013-07-10SSE/SSE2 assembly for 4x4/8x8/16x16/32x32 DC intra prediction.Ronald S. Bultje
Change-Id: Ibe1690afc5459f3b3beca401e7734fcd03da6dd0
2013-07-08Make intra prediction pointers RTCD-based.Ronald S. Bultje
This probably has a mildly negative impact on performance, but will (in future commits - or possibly merged with this one) allow SIMD implementations of individual intra prediction functions. We may perhaps want to consider having separate functions per txfm-size also (i.e. 4x4, 8x8, 16x16 and 32x32 intra prediction functions for each intra prediction mode), but I haven't played much with that yet. Change-Id: Ie739985eee0a3fcbb7aed29ee6910fdb653ea269
2013-07-03Inline a few intra predictorsYaowu Xu
Change-Id: Ib41f0643fdcc088500e7420708f4e72f1f64c710
2013-06-26Merge "Make intra predictor reference buffer configurable"Jingning Han
2013-06-26Merge "Change to use LUT for mode-to-txfm conversion"Yaowu Xu
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-26Change to use LUT for mode-to-txfm conversionYaowu Xu
Change-Id: Ieb989830f49e6708ee7728eddebf7a2144c37c6f
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-21Remove unused vp9_build_intra_predictors_sb{y,uv}_sJohn Koleszar
The functions no longer referenced. Change-Id: If2705dfbc607f79ec8ec2242d5e03bec27a35aaf
2013-06-06Removed rectangular intra prediction codeYaowu Xu
As all intra predictions happen on squared transform block now. Change-Id: I7ec91e3f0ad01383a03d2bd3099bbf32e87e3466
2013-05-31Adding plane_block_width and plane_block_height functions.Dmitry Kovalev
Change-Id: I02c17fb733c0f3c22dc3167c3d3182797415f1ae
2013-05-28further clean-ups on intra4x4 codingJingning Han
Removed one 4x4 prediction step that was unnessary in the rd loop. Removed a unused modecosts estimate from encoder side. Change-Id: I65221a52719d6876492996955ef04142d2752d86
2013-05-22changes intra coding to be based on txfm blockYaowu Xu
This commit changed the encoding and decoding of intra blocks to be based on transform block. In each prediction block, the intra coding iterates thorough each transform block based on raster scan order. This commit also fixed a bug in D135 prediction code. TODO next: The RD mode/txfm_size selection should take this into account when computing RD values. Change-Id: I6d1be2faa4c4948a52e830b6a9a84a6b2b6850f6
2013-05-22Generalized intra 4x4 encoding for all sizesYaowu Xu
Change-Id: I1b86744fa247233c8df031b3f4b87b212c8dd094
2013-05-15Fix vp9_build_intra_predictors_sbuv_s for non-4:2:0John Koleszar
Remove an assumption about chroma size, and the number of planes. Change-Id: I286a7fac296ec334c6a8ad847f663f3adbb9f43e
2013-05-07Deprecate comp_interintra_pred experiment.Paul Wilkins
Delete code under the CONFIG_COMP_INTERINTRA_PRED flag. Change-Id: I3d1079cf46305c08f7e11d738596ea112e7b547f
2013-05-07Deprecate the newbintramode experiment.Paul Wilkins
Clean out code relating to newbintramode. Change-Id: Ie91f4f156cdf60ce0da8ca407c1c9cb00c7d0705
2013-05-07Merge SB8X8 into the codebaseJingning Han
Pull sb8x8 out of experimental list. verified via borg run tests. Fixed unit test failures. Change-Id: I12a4bbd17395930580c048ab68becad1ffe46e76
2013-05-04Fix first-pass intra4x4 for sb8x8 experiment.Ronald S. Bultje
Change-Id: I1df17f45721c690d157800daa6a0b377e3d32bc2
2013-05-02Fix right-edge availability for intra prediction in sb8x8.Ronald S. Bultje
Fixes valgrind uninitialized value use warnings. Change-Id: Ie9314d684e2ad194f8aca5bde1729fb9b7c0221d
2013-05-02Fix some more offset errors in sb8x8.Ronald S. Bultje
Change-Id: I83677227f7610fdf2db9f15f87fecd4d8e072427
2013-04-30Removed code no longer being used.Yaowu Xu
Change-Id: Iab9a88f250614a790b6ad96bf3150a74210910df
2013-04-29fixed new intra code for rectanglar blocksYaowu Xu
Also fixed two minor subtle boundary conditions in intra prediction code, and replaced memcpy/memset with vpx_ prefixed version. Change-Id: I9cddff3be831228b628f1f2f065a61feacbcbee6
2013-04-29Enabled i4x4 to use right above pixelsYaowu Xu
Change-Id: I7442b4600b6812bed13e655ccf68f9ea56cc83a2
2013-04-29Use same intra prediction for all block sizeYaowu Xu
The commmit changed to use same intra prediction function for all block sizes. Some details on the changes: 1. All directional modes except DC/TM/V/H now have built-in filtering for all pixels with filter taps either (1, 2, 1)/4 or (1, 1)/2. 2. Above edge get automatic extended to double width (bw*2), which makes a lot of the prediciton mode computation simpler. 3. Same intra prediction function is called with different size for i4x4_pred and all other larger size. Overall, the change helped keyframe only coding for both cif size and std-hd size test sets by .5% consistently on all encodings. For normal coding with single/auto key frame, the change now also is consistently net positive for all encodings. The overall gains is about .15% on std-hd set. Change-Id: I01ceb31fbc73d49776262e6bdc06853b03bbd1d1
2013-04-26Grow MODE_INFO array to use an 8x8 basis.Ronald S. Bultje
Change-Id: I087e08e7909a406b71715b8525c104208daa6889
2013-04-26Remove destination pointers from BLOCKDJohn Koleszar
Access these members from MACROBLOCKD instead. Change-Id: I7907230dd473ff12ebe182b9280d8b7f12a888c4
2013-04-24Move sbsegment out of experimental listJingning Han
Move rectangular superblock coding out of experimental list. Change-Id: I96c37547d122330d666a67b4bf577ae54547857f
2013-04-23Merge "Enable rectangular support for comp inter-intra" into experimentalJingning Han
2013-04-23Enable rectangular support for comp inter-intraJingning Han
This commit enables rectangular block prediction of compound inter-intra mode. It combines the mb/sb32/sb64 prediction functions into a unified version with configurable block width and height. This fixes the enc/dec mismatch of the codebase when comp-interintra-pred is enabled. Change-Id: I1d0db2f1f184007802df04fcd12b9dadb3189ff0
2013-04-23Remove unused corner_predictor and log2_minus_1 functions.Ronald S. Bultje
Change-Id: Ic659544ca12b1bc191b93ddfa378964bd133bfc9
2013-04-22Remove vp9_recon_intra_mbuvJohn Koleszar
Use common vp9_recon_sbuv instead. Change-Id: I146f79adfdfda2b52257a52fa783727f12afa246
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-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-16Slightly hackish workaround to support rectangles in directional intra ↵Ronald S. Bultje
predictors. Change-Id: I8a4da6925f2d58a426c4d122df8b97bb69452e49
2013-04-12Intra code cleanup.Dmitry Kovalev
Removing redundant code. Change-Id: I71bfc40a1fb06d8e3149ed5400aa4dfd87a51aac
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-03-07Consistent usage of ROUND_POWER_OF_TWO macro.Dmitry Kovalev
Change-Id: I44660975e9985310d8c654c158ee7a61291b5a08
2013-02-20Avoid division in intra predictionTero Rintaluoma
- Using multiplication and shifting instead of division in intra prediction. - Maximum absolute difference is 1 for division statements in d45, d27, d63 prediction modes. However, errors can cumulate for large block sizes when using already predicted values. - Maximum number of non-matching result values in loops using division are: 4x4 0/16 8x8 0/64 16x16 10/256 32x32 13/1024 64x64 122/4096 Overall PSNR derf: 0.005 yt: -0.022 std-hd: 0.021 hd: -0.006 Change-Id: I3979a02eb6351636442c1af1e23d6c4e6ec1d01d
2013-02-05[WIP] Add column-based tiling.Ronald S. Bultje
This patch adds column-based tiling. The idea is to make each tile independently decodable (after reading the common frame header) and also independendly encodable (minus within-frame cost adjustments in the RD loop) to speed-up hardware & software en/decoders if they used multi-threading. Column-based tiling has the added advantage (over other tiling methods) that it minimizes realtime use-case latency, since all threads can start encoding data as soon as the first SB-row worth of data is available to the encoder. There is some test code that does random tile ordering in the decoder, to confirm that each tile is indeed independently decodable from other tiles in the same frame. At tile edges, all contexts assume default values (i.e. 0, 0 motion vector, no coefficients, DC intra4x4 mode), and motion vector search and ordering do not cross tiles in the same frame. t log Tile independence is not maintained between frames ATM, i.e. tile 0 of frame 1 is free to use motion vectors that point into any tile of frame 0. We support 1 (i.e. no tiling), 2 or 4 column-tiles. The loopfilter crosses tile boundaries. I discussed this briefly with Aki and he says that's OK. An in-loop loopfilter would need to do some sync between tile threads, but that shouldn't be a big issue. Resuls: with tiling disabled, we go up slightly because of improved edge use in the intra4x4 prediction. With 2 tiles, we lose about ~1% on derf, ~0.35% on HD and ~0.55% on STD/HD. With 4 tiles, we lose another ~1.5% on derf ~0.77% on HD and ~0.85% on STD/HD. Most of this loss is concentrated in the low-bitrate end of clips, and most of it is because of the loss of edges at tile boundaries and the resulting loss of intra predictors. TODO: - more tiles (perhaps allow row-based tiling also, and max. 8 tiles)? - maybe optionally (for EC purposes), motion vectors themselves should not cross tile edges, or we should emulate such borders as if they were off-frame, to limit error propagation to within one tile only. This doesn't have to be the default behaviour but could be an optional bitstream flag. Change-Id: I5951c3a0742a767b20bc9fb5af685d9892c2c96f
2013-01-29Further improvement on compound inter-intra exptDeb Mukherjee
Adds a special combination mode specific to intra prediciton mode D45. Current results with the compound inter/intra experiment: derf: 0.2% yt: 0.55% std-hd: 0.75% hd: 0.74% Change-Id: I8976bdf3b9b0b66ab8c5c628bbc62c14fc72ca86