summaryrefslogtreecommitdiff
path: root/vp9
AgeCommit message (Collapse)Author
2013-01-14Remove compound intra-intra experiment.Ronald S. Bultje
This experiment gives little gains and adds relatively much code complexity (and it hinders other experiments), so let's get rid of it. Change-Id: Id25e79a137a1b8a01138aa27a1fa0ba4a2df274a
2013-01-14Merge experiment "subpelrefmv"Yaowu Xu
Change-Id: Iac7f3d108863552b850c92c727e00c95571c9e96
2013-01-14Merge experiment "widerlpf"Yaowu Xu
Change-Id: I0c94475075e66e13cfe4c20fab7db6474441ae86
2013-01-14Merge "changed UV plane loop filtering for TX_8X8" into experimentalYaowu Xu
2013-01-14Merge "change to evaluate reference mvs using above only" into experimentalYaowu Xu
2013-01-14changed UV plane loop filtering for TX_8X8Yaowu Xu
In commit 9a1d73d, loop filtering was added for UV 4x4 boundaries when TX_8X8 is used by a MB. This commit further refined the decision to be based on the actual transform used for the UV planes. When UV planes use 4x4 transform, i.e. when prediction mode used is either I8X8_PRED or SPLITMV, UV planes are filtered on 4x4 boundaries, and no filtering is applied on 4x4 block boundaries when UV planes use 8X8 transform. Change-Id: Ibb404face0a1d129b4b4abaf67c55d82e8df8bec
2013-01-14Merge "Fix compiler warnings" into experimentalPaul Wilkins
2013-01-14Merge "Merge prediction filter" into experimentalAdrian Grange
2013-01-14change to evaluate reference mvs using above onlyYaowu Xu
Change-Id: Ibcc342efac0a9be7a21d9b2c09984d9e16bbb225
2013-01-14Fix compiler warningsYaowu Xu
The warnings caused verify failure with gerrit for several commits Change-Id: I030df8638bd69b8783a3ac58e720ff9f0bfd546c
2013-01-14Merge prediction filterAdrian Grange
Removed the experimental flag from around the prediction filter. Change-Id: Ic1dd2db8fe8ac17ed5129f83094d4c5cdd5527d2
2013-01-14Reset x->skip for each iteration in the RD loop.Ronald S. Bultje
This prevents ill-defined behaviour, such as setting x->skip for a mode that is excluded because of frame-level flags (e.g. filter selection, compound prediction selection), then not breaking out of the RD loop because the mode is not allowed, but keeping the flag on. Whatever mode is iterated through next in the RD loop will then carry this flag, and all sort of bad stuff happens, such as x->skip being set on intra pred modes. Change-Id: I5bec46b36e38292174acb1c564b3caf00a9b4b9a
2013-01-14Fix unused variable warningsJohn Koleszar
Previous commit does not build cleanly on Jenkins with the DWT/DCT hybrid experiment enabled (--enable-dwtdcthybrid). Change-Id: Ia67e8f59d17ef2d5200ec6b90dfe6711ed6835a5
2013-01-12Further enhancements/fixes on dct/dwt hybrid txfmDeb Mukherjee
Fixes some scaling issues. Adds an option to only compute the dct on the low-low subband for 32x32 and 64x64 blocks using only a single 16x16 dct after 1 and 2 wavelet decomposition levels respectively. Also adds an option to use a 8x8 dct as building block. Currenlty with the 2/6 filter and with a single 16x16 dct on the low low band, the reuslts compared to full 32x32 dct is as follows: derf: -0.15% yt: -0.29% std-hd: -0.18% hd: -0.6% These are my current recommended settings, since the 2/6 filter is very simple. Results with 8x8 dct are about 0.3% worse. Change-Id: I00100cdc96e32deced591985785ef0d06f325e44
2013-01-11Merge "WIP: Added sse2 version of vp9_mb_lpf_horizontal_edge_w" into ↵Jim Bankoski
experimental
2013-01-11WIP: Added sse2 version of vp9_mb_lpf_horizontal_edge_wScott LaVarnway
and vp9_mb_lpf_vertical_edge_w_sse2. This was quickly done so we can run some tests over the weekend. Future commits will optimize/refactor these functions further. The decoder performance improved by ~17% for the clip used. Change-Id: I612687cd5a7670ee840a0cbc3c68dc2b84d4af76
2013-01-11Merge "Upstream changes from Chromium Android Clang build." into experimentalJim Bankoski
2013-01-11Merge "Add loop filtering for UV plane" into experimentalYaowu Xu
2013-01-11Add loop filtering for UV planeYaowu Xu
On block boundary within a MB when 8x8 block boundary only is filtered for Y. Change-Id: Ie1c804c877d199e78e2fecd8c2d3f1e114ce9ec1
2013-01-11Upstream changes from Chromium Android Clang build.Frank Galligan
See https://codereview.chromium.org/11875006/ Change-Id: Ied2a17df2b3222635f84aef120eaa9feb53750d2
2013-01-11Merge "Initial sse2 version of the wide loopfilters" into experimentalScott LaVarnway
2013-01-11Initial sse2 version of the wide loopfiltersScott LaVarnway
Updated the rtcd_defs and used the sse2 uv version of the loopfilter. The performance improved by ~8% for the test clip used. Change-Id: I5a0bca3b6674198d40ca4a77b8cc722ddde79c36
2013-01-11Remove INT64_MAX references.Paul Wilkins
Replace INT64_MAX references with LLONG_MAX for windows build. Change-Id: Ib8b45c1e9c15c043b2f54c27ed83b8682b2be34f
2013-01-11Merge "Reduce the usage of widerlpf" into experimentalYaowu Xu
2013-01-11rtcd for new wider loop filtersJim Bankoski
Change-Id: I8826bcdcf72ba6d86bde31cd13902a710399805c
2013-01-10Reduce the usage of widerlpfYaowu Xu
The commit changed to not to use wider lpf within a superblock when 32x32 transform is used for the block. The commit also changed to use the shorter version of loop filtering: for UV planes. Change-Id: I344c1fb9a3be9d1200782a788bcb0b001fedcff8
2013-01-10Merge tx32x32 experiment.Ronald S. Bultje
Change-Id: I615651e4c7b09e576a341ad425cf80c393637833
2013-01-10Merge "Merge superblocks64 experiment." into experimentalRonald S. Bultje
2013-01-09Merge superblocks64 experiment.Ronald S. Bultje
Change-Id: If6c88752dffdb566f8d4322f135145270716fb8e
2013-01-09experiment a wider loop filter for MB borderYaowu Xu
when larger transforms are used Change-Id: I25251442b44bf251df4c25a1c1fcf71fb2ad913b
2013-01-09New prediction filterAdrian Grange
This patch removes the old pred-filter experiment and replaces it with one that is implemented using the switchable filter framework. If the pred-filter experiment is enabled, three interopolation filters are tested during mode selection; the standard 8-tap interpolation filter, a sharp 8-tap filter and a (new) 8-tap smoothing filter. The 6-tap filter code has been preserved for now and if the enable-6tap experiment is enabled (in addition to the pred-filter experiment) the original 6-tap filter replaces the new 8-tap smooth filter in the switchable mode. The new experiment applies the prediction filter in cases of a fractional-pel motion vector. Future patches will apply the filter where the mv is pel-aligned and also to intra predicted blocks. Change-Id: I08e8cba978f2bbf3019f8413f376b8e2cd85eba4
2013-01-08Adds 64x64 hybrid dct/dwt transformDeb Mukherjee
This is to add to the 64x64 transform experiment as an alternative to a 64x64 DCT. Two levels of wavelet decomposition is used on a 64x64 block, followed by 16x16 DCT on the four lowest subbands. The highest three subbands are left untransformed after the first level DWT. Change-Id: I3d48d5800468d655191933894df6b46e15adca56
2013-01-08Merge "Merge superblocks (32x32) experiment." into experimentalRonald S. Bultje
2013-01-08Merge "vp9_sub_pixel_variance16x2 SSE2 optimization" into experimentalYunqing Wang
2013-01-08Merge superblocks (32x32) experiment.Ronald S. Bultje
Change-Id: I0df99742029834a85c4933652b0587cf5b6b2587
2013-01-08vp9_sub_pixel_variance16x2 SSE2 optimizationYunqing Wang
About 5% decoder speedup. Change-Id: Ib6687d337af758a536a0e7e289f400990f1f9794
2013-01-08Merge vp9-preview changes into experimental branchJohn Koleszar
Incorportate vp9-preview changes by merging master branch into experimental. Conflicts: test/test.mk vp9/common/vp9_filter.c vp9/common/vp9_idctllm.c vp9/common/vp9_invtrans.h vp9/common/vp9_mbpitch.c vp9/common/vp9_rtcd_defs.sh vp9/common/vp9_systemdependent.h vp9/common/vp9_type_aliases.h vp9/common/x86/vp9_asm_stubs.c vp9/common/x86/vp9_subpixel_mmx.asm vp9/decoder/vp9_decodframe.c vp9/decoder/vp9_dequantize.c vp9/decoder/vp9_dequantize.h vp9/decoder/vp9_onyxd_int.h vp9/encoder/vp9_bitstream.c vp9/encoder/vp9_encodeframe.c vp9/encoder/vp9_rdopt.c Change-Id: I17f51c3666d1b59cf1a699f87607cbc5d30a87c5
2013-01-08reset segement map on key frameYaowu Xu
This is to fix a decoder crash when decoder skips a number of frame to continue decoding from a later key frame. Change-Id: I3ba116eba6c3440e0528a21f53745f694302e4ad
2013-01-08Merge "minor loop filter refactoring and cleanup" into experimentalYaowu Xu
2013-01-07minor loop filter refactoring and cleanupYaowu Xu
This commit did a couple of minor cleanup/refactoring to prepare for futher loop filter experiments. It merged y_only version of loop filter function into the regular one, which makes sure that same logic is used for functions for picking level and for actual loop filtering. Change-Id: Id10c94dccd45f58e5310bacfdf6ee63cbb60b86f
2013-01-07Remove a few redundant function arguments in encodeframe.c.Ronald S. Bultje
Also reindent a block of code that was misindented after addition of the tx32x32 experiment. Change-Id: Ic3e4aae3effd8a40136da68c9f382af03632ba08
2013-01-07Re-enable support for static_threshold (encode_breakout).Ronald S. Bultje
Change-Id: Ibd7380f478d3127f9db91d0a4fd2fd0dfde961ab
2013-01-07Don't use tx32x32 for macroblocks.Ronald S. Bultje
Change-Id: Ib674e0153ca360867ab7a20ba291ac9171a01250
2013-01-0564x64 blocksize support.Ronald S. Bultje
3.2% gains on std/hd, 1.0% gains on hd. Change-Id: I481d5df23d8a4fc650a5bcba956554490b2bd200
2013-01-04Fix mode selection infinite loop bugAdrian Grange
Mode selection for SBs could enter an infinite loop because the interpolation filter mode index was not being reset correctly. Change-Id: I4bbe726f29ef5b6836e94884067c46084713cc11
2013-01-04Further change to mv reference search.Paul Wilkins
This experimental change reorders the search so that all possible references that match the target reference frame are tested first and these in order of distance from the current block. These will usually be the highest scoring candidates. If we do not find enough good candidates this way we try non matching cases. These will usually be lower scoring candidates. The change in order together with breakouts when we have found enough candidates should reduce the computational cost and especially reduce the number of sort operations. Quality Results: Std Hd +0.228%, Hd +0.074%, YT +0.046%, derf +0.137% This effect is probably due to the fact that more distant weak candidates are now less likely to get "promoted" over near candidates even if they are repeated. Change-Id: Iec37e77d88a48ad0ee1f315b14327a95d63f81f6
2013-01-03Merge "make cost_coeffs() and tokenize_b() consistent" into experimentalYaowu Xu
2013-01-03Merge "Merge cost_coeffs_2x2() into cost_coeffs()" into experimentalYaowu Xu
2013-01-03make cost_coeffs() and tokenize_b() consistentYaowu Xu
Change-Id: I7cdb5c32a1400f88ec36d08ea982e38b77731602
2013-01-03New interpolation filter selection algorithmAdrian Grange
Old Scheme: When SWITCHABLE filter selection is enabled the encoder evaluates the use of each interpolation filter type and selects the best one to use at the MB level. A frame- level flag can be set to force the use of a particular filter type for all MBs in a frame if it is more efficient to encode that way. The logic here involved a Q dependent threshold that assumed that the second 8-tap filter was a high-pass filter. However, this requires a trip around the recode loop. If the frame-level flag indicates use of a particular filter, the other filters are not evaluated in the pick_mode loop. New Scheme: Each filter type is evaluated at the MB level and a record of the best filter is kept, irrespective of what filter is signaled at the frame-level. Once all MBs have been encoded, a decision is made as to what frame-level mode to set for the *next* frame. If one filter is used by 80% or more of the MBs, then this filter is forced since it is assumed that this will be more efficient if the next frame has similar characteristics. i.e. there is a one-frame lag between measuring the filter selection and setting the frame-level mode to use. Change-Id: I6a7e7ced8f27e120fafb99db2dc9c6293f8d20f7