- 31 Oct, 2012 - 2 commits
-
-
Ronald S. Bultje authored
Most of these were picked up in the previous commit (prefix change from vp8_ to vp9_), but I'm pushing this separately so that it's easier to review. Change-Id: I91e959895778b8632d7d33375523df8a7568a490
-
Ronald S. Bultje authored
Change-Id: Ie2e3652591b010ded10c216501ce24fd95d0aec5
-
- 30 Oct, 2012 - 1 commit
-
-
Yunqing Wang authored
Converted the forward and inverse transforms to integer forms. Modify #define TEST_INT 1/0 in the code to call integer/float version of transforms. The tests showed that average OVERALL PSNR loss was less than 0.1%. Change-Id: I1dfa4eeab6412597e3b970ce299cf0e116a917e6
-
- 29 Oct, 2012 - 2 commits
-
-
Jim Bankoski authored
Remove the fdct invoke macro calls Change-Id: Ica2431c655819fa012133ee7abc75a16761e5fd6
-
Jim Bankoski authored
Change-Id: I321280abcf48f3dc16e194d29bde2bd3baec6006
-
- 22 Oct, 2012 - 2 commits
-
-
Deb Mukherjee authored
Change-Id: I99f1982b30a630a9a070a8326d83b34a33cba14c
-
Jim Bankoski authored
Change-Id: Idd2722a538423b451e1e3495f89a7141480493d6
-
- 21 Oct, 2012 - 1 commit
-
-
Deb Mukherjee authored
Allows B_VL_PRED & B_LD_PRED modes to be used for all blocks within a MB in B_PRED mode. These modes were temporarily disabled with super-block coding. Change-Id: I973b9bdb82c3da5f12d7cc963162a28805f25303
-
- 19 Oct, 2012 - 1 commit
-
-
Deb Mukherjee authored
Separates the logic on transform type selection previously spread out over a number of files into a separate function. Currently the tx_type field in b_mode_info is not used, but still left in there to eventually use for signaling the transform type in the bitstream. Also, now for tx_type = DCT_DCT, the regular integer DCT is used, as opposed to the floating point DCT used in conjuction with hybrid transform. Results change somewhat due to the transform change, but are within reasonable limits. The hd/std-hd sets are slightly up, while derf/yt are slightly down. Change-Id: I5776840c2239ca2da31ca6cfd7fd1148dc5f9e0f
-
- 16 Oct, 2012 - 1 commit
-
-
Jim Bankoski authored
This reinstates reverted commit 2113a831 Change-Id: I9a9af13497d1e58d4f467e3e083fddf06b1b786c
-
- 15 Oct, 2012 - 3 commits
-
-
Ronald S. Bultje authored
It is essentially a duplicate of mode for RD-only purposes. Removing it saves us 4 bytes per B_MODE_INFO, or ~0.5MB for a 1080p video encode. Change-Id: I0a54db5f51658b3946d7efb1ca6e8cfbda0cdf88
-
Ronald S. Bultje authored
Merge code blocks for different transform sizes; use MACROBLOCKD as a temp variable where that leads to smaller overall source code; remove duplicate code under #if CONFIG_HYBRIDTRANSFORM/#else blocks. Some style changes to make it follow the style guide a little better. Change-Id: I1870a06dae298243db46e14c6729c96c66196525
-
Ronald S. Bultje authored
Also make some minor stylistic changes to bring the code closer to the style guide. Remove distinction between inter and intra transform functions, since both do exactly the same thing except for the check against SPLITMV for the second-order transform. Remove some commented out debug code. Remove 8x8/16x16 transform code in encode_inter16x16y(), since the first-pass only uses 4x4 anyway. Change-Id: Ife54816ff759825b9141f95dc2ba43c253c14dba
-
- 14 Oct, 2012 - 4 commits
-
-
Ronald S. Bultje authored
This includes trellis optimization, forward/inverse transform, quantization, tokenization and stuffing functions. Change-Id: Ibd34132e1bf0cd667671a57b3f25b3d361b9bf8a
-
Ronald S. Bultje authored
Change-Id: I55ee7566341b04d7e7340fdab95189f82231a792
-
Jim Bankoski authored
This reverts commit 2113a831
-
Jim Bankoski authored
Code clean up - removed rtcd Change-Id: Id963ecf53c370b1d99484ef18d6befeed7e0c748
-
- 11 Oct, 2012 - 2 commits
-
-
Ronald S. Bultje authored
Change-Id: Iecb282fc89f9b5145ef31c5eda294ad42bc32a5d
-
Deb Mukherjee authored
Change-Id: I22aa803ffff330622cdb77277e7b196a9766f882
-
- 27 Sep, 2012 - 1 commit
-
-
Deb Mukherjee authored
Separates the entropy coding context models for 4x4, 8x8 and 16x16 ADST variants. There is a small improvement for HD (hd/std-hd) by about 0.1-0.2%. Results on derf/yt are about the same, probably because there is not enough statistics. Results may improve somewhat once the initial probability tables are updated for the hybrid transforms which is coming soon. Change-Id: Ic7c0c62dacc68ef551054fdb575be8b8507d32a8
-
- 21 Sep, 2012 - 1 commit
-
-
Deb Mukherjee authored
With this change, even if hybridtransform8x8 experiment is off, 8x8 dct is used for the I8x8 mode. However note that the gains observed with the hybridtransform8x8 experiment will now be less, since part of the gain is now merged in. Change-Id: I9afb3880906fd0a1368a374041fc08efcf060c54
-
- 30 Aug, 2012 - 1 commit
-
-
Jingning Han authored
Enable ADST/DCT of dimension 16x16 for I16X16 modes. This change provides benefits mostly for hd sequences. Set up the framework for selectable transform dimension. Also allowing quantization parameter threshold to control the use of hybrid transform (This is currently disabled by setting threshold always above the quantization parameter. Adaptive thresholding can be built upon this, which will further improve the coding performance.) The coding performance gains (with respect to the codec that has all other configuration settings turned on) are derf: 0.013 yt: 0.086 hd: 0.198 std-hd: 0.501 Change-Id: Ibb4263a61fc74e0b3c345f54d73e8c73552bf926
-
- 15 Aug, 2012 - 1 commit
-
-
Paul Wilkins authored
Further cases of inconsistent naming convention. Change-Id: Id3411ecec6f01a4c889268a00f0c9fd5a92ea143
-
- 10 Aug, 2012 - 1 commit
-
-
Paul Wilkins authored
Add local variable in several places to reference the MB mode info structure. Currently this is usually accessed in the code as x->e_mbd.mode_info_context->mbmi.* or in some places xd->mode_info_context->mbmi.* Resolved some uses of x-> for the MACROBLOCKD structure. Rebased without dependency on motion reference experiment. Change-Id: If6718276ee4f2ef131825d1524dfdb02a3793aed
-
- 07 Aug, 2012 - 1 commit
-
-
Jingning Han authored
The forward and inverse hybrid transforms are now performed using single function modules, where the dimension is sent as argument. Added an inline function clip8b to clip the reconstruction pixels into range of 0-255. Change-Id: Id7d870b3e1aefc092721c80c0af6f641eb5f3747
-
- 03 Aug, 2012 - 2 commits
-
-
Jingning Han authored
Fixed the code review comments. Under the htrans8x8 experiment the 8X8 DCT in the I8X8 mode is replaced with a combination of 8X8 ADST and DCT. Overall coding gains with the htrans8x8 experiment are: derf: 0.486 std-hd: 1.040 hd: 1.063 yt: 0.506 Note that part of the gain comes from bigger transforms (8x8 instead of 4x4) and part comes from replacing the DCT wth the ADST. Change-Id: I92ca6bbfce11b4165d612b81d9adfad4d010c775
-
Daniel Kang authored
Set on all 16x16 intra/inter modes Features: - Butterfly fDCT/iDCT - Loop filter does not filter internal edges with 16x16 - Optimize coefficient function - Update coefficient probability function - RD - Entropy stats - 16x16 is a config option Have not tested with experiments. hd: 2.60% std-hd: 2.43% yt: 1.32% derf: 0.60% Change-Id: I96fb090517c30c5da84bad4fae602c3ec0c58b1c
-
- 02 Aug, 2012 - 1 commit
-
-
Jingning Han authored
Apply 2D-DCT transform of dimension 8x8 to encode prediction residuals of I8X8 mode. Brought back block type 3 probability context model for 8x8 tokens, which is used for the coefficients of Y blocks in I8x8 modes. The coefficient costs estimate of I8X8 mode in rate-distortion is also changed appropriately. Performance results: derf: 0.246 yt: 0.114 std-hd: 0.730 hd: 0.670 Change-Id: If1d970eeb4e1827c9f0d2c5b27d33089b347ea27
-
- 19 Jul, 2012 - 1 commit
-
-
Jingning Han authored
Adds ADST/DCT hybrid transform coding for Intra4x4 mode. The ADST is applied to directions in which the boundary pixels are used for prediction, while DCT applied to directions without corresponding boundary prediction. Adds enum TX_TYPE in b_mode_infor to indicate the transform type used. Make coding style consistent with google style. Fixed the commented issues. Experimental results in terms of bit-rate reduction: derf: 0.731% yt: 0.982% std-hd: 0.459% hd: 0.725% Will be looking at 8x8 transforms next. Change-Id: I46dbd7b80dbb3e8856e9c34fbc58cb3764a12fcf
-
- 17 Jul, 2012 - 1 commit
-
-
John Koleszar authored
Approximate the Google style guide[1] so that that there's a written document to follow and tools to check compliance[2]. [1]: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml [2]: http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py Change-Id: Idf40e3d8dddcc72150f6af127b13e5dab838685f
-
- 19 Jun, 2012 - 1 commit
-
-
Christian Duvivier authored
Change-Id: I883b4f63559c1cf66a25016e946b1b1ae98a20da
-
- 11 Apr, 2012 - 1 commit
-
-
Adrian Grange authored
This is the first patch to add superblock (32x32) coding order capabilities. It does not yet do any mode selection at the SB level, that will follow in a further patch. This patch encodes rows of SBs rather than MBs, each SB contains 2x2 MBs. Two intra prediction modes have been disabled since they require reconstructed data for the above-right MB which may not have been encoded yet (e.g. for the bottom right MB in each SB). Results on the one test clip I have tried (720p GIPS clip) suggest that it is somewhere around 0.2dB worse than the baseline version, so there may be bugs. It has been tested with no experiments enabled and with the following 3 experiments enabled: --enable-enhanced_interp --enable-high_precision_mv --enable-sixteenth_subpel_uv in each case the decode buffer matches the recon buffer (using "cmp" to compare the dumped/decoded frames). Note: Testing these experiments individually created errors. Some problems were found with other experiments but it is unclear what state these experiments are in: --enable-comp_intra_pred --enable-newentropy --enable-uvintra This code has not been extensively tested yet, so there is every likelihood that further bugs remain. I also intend to do some code cleanup & refactoring in tandem with the next patch that adds the 32x32 modes. Change-Id: I1eba7f740a70b3510df58db53464535ef881b4d9
-
- 21 Mar, 2012 - 1 commit
-
-
Deb Mukherjee authored
Using contextual coding of the mkb_skip_coeff flag using the values of this flag from the left and above. There is a small improvement of about 0.15% on Derf: http://www.corp.google.com/~debargha/vp8_results/mbskipcontext.html Refactored to use pred_common.c by adding a new context type. Results on HD set (about 0.66% improvement): http://www.corp.google.com/~debargha/vp8_results/mbskipcontext_hd.html Incliding missing refactoring to use the pred_common utilities. Change-Id: I95373382d429b5a59610d77f69a0fea2be628278
-
- 15 Mar, 2012 - 1 commit
-
-
Yaowu Xu authored
This is a code snapshot of experimental work currently ongoing for a next-generation codec. The codebase has been cut down considerably from the libvpx baseline. For example, we are currently only supporting VBR 2-pass rate control and have removed most of the code relating to coding speed, threading, error resilience, partitions and various other features. This is in part to make the codebase easier to work on and experiment with, but also because we want to have an open discussion about how the bitstream will be structured and partitioned and not have that conversation constrained by past work. Our basic working pattern has been to initially encapsulate experiments using configure options linked to #IF CONFIG_XXX statements in the code. Once experiments have matured and we are reasonably happy that they give benefit and can be merged without breaking other experiments, we remove the conditional compile statements and merge them in. Current changes include: * Temporal coding experiment for segments (though still only 4 max, it will likely be increased). * Segment feature experiment - to allow various bits of information to be coded at the segment level. Features tested so far include mode and reference frame information, limiting end of block offset and transform size, alongside Q and loop filter parameters, but this set is very fluid. * Support for 8x8 transform - 8x8 dct with 2nd order 2x2 haar is used in MBs using 16x16 prediction modes within inter frames. * Compound prediction (combination of signals from existing predictors to create a new predictor). * 8 tap interpolation filters and 1/8th pel motion vectors. * Loop filter modifications. * Various entropy modifications and changes to how entropy contexts and updates are handled. * Extended quantizer range matched to transform precision improvements. There are also ongoing further experiments that we hope to merge in the near future: For example, coding of motion and other aspects of the prediction signal to better support larger image formats, use of larger block sizes (e.g. 32x32 and up) and lossless non-transform based coding options (especially for key frames). It is our hope that we will be able to make regular updates and we will warmly welcome community contributions. Please be warned that, at this stage, the codebase is currently slower than VP8 stable branch as most new code has not been optimized, and even the 'C' has been deliberately written to be simple and obvious, not fast. The following graphs have the initial test results, numbers in the tables measure the compression improvement in terms of percentage. The build has the following optional experiments configured: --enable-experimental --enable-enhanced_interp --enable-uvintra --enable-high_precision_mv --enable-sixteenth_subpel_uv CIF Size clips: http://getwebm.org/tmp/cif/ HD size clips: http://getwebm.org/tmp/hd/ (stable_20120309 represents encoding results of WebM master branch build as of commit#7a159071) They were encoded using the following encode parameters: --good --cpu-used=0 -t 0 --lag-in-frames=25 --min-q=0 --max-q=63 --end-usage=0 --auto-alt-ref=1 -p 2 --pass=2 --kf-max-dist=9999 --kf-min-dist=0 --drop-frame=0 --static-thresh=0 --bias-pct=50 --minsection-pct=0 --maxsection-pct=800 --sharpness=0 --arnr-maxframes=7 --arnr-strength=3(for HD,6 for CIF) --arnr-type=3 Change-Id: I5c62ed09cfff5815a2bb34e7820d6a810c23183c
-
- 07 Mar, 2012 - 1 commit
-
-
Paul Wilkins authored
Pulled out super block code for the snapshot as this is not quite ready and will need an extensive re-merge. Change-Id: I436369b511257447a7b0ea064016cb63f5011849
-
- 01 Mar, 2012 - 1 commit
-
-
Yaowu Xu authored
Change-Id: I8e9b6b154e1a0d0cb42d596366380d69c00ac15f
-
- 29 Feb, 2012 - 1 commit
-
-
Ronald S. Bultje authored
Also remove duplicate build_intra_predictors_mby/uv(). Change-Id: I78607e7304952a9b962a5b25af9bb9c48692187b
-
- 10 Feb, 2012 - 1 commit
-
-
Ronald S. Bultje authored
In summary, this commit encompasses a series of changes in attempt to improve the 8x8 transform based coding to help overall compression quality, please refer to the detailed commit history below for what are the rationale underly the series of changes: a. A frame level flag to indicate if 8x8 transform is used at all. b. 8x8 transform is not used for key frames and small image size. c. On inter coded frame, macroblocks using modes B_PRED, SPLIT_MV and I8X8_PRED are forced to using 4x4 transform based coding, the rest uses 8x8 transform based coding. d. Encoder and decoder has the same assumption on the relationship between prediction modes and transform size, therefore no signaling is encoded in bitstream. e. Mode decision process now calculate the rate and distortion scores using their respective transforms. Overall test results: 1. HD set http://www.corp.google.com/~yaowu/no_crawl/t8x8/HD_t8x8_20120206.html (avg psnr: 3.09% glb psnr: 3.22%, ssim: 3.90%) 2. Cif set: http://www.corp.google.com/~yaowu/no_crawl/t8x8/cif_t8x8_20120206.html (avg psnr: -0.03%, glb psnr: -0.02%, ssim: -0.04%) It should be noted here, as 8x8 transform coding itself is disabled for cif size clips, the 0.03% loss is purely from the 1 bit/frame flag overhead on if 8x8 transform is used or not for the frame. ---patch history for future reference--- Patch 1: this commit tries to select transform size based on macroblock prediction mode. If the size of a prediction mode is 16x16, then the macroblock is forced to use 8x8 transform. If the prediction mode is B_PRED, SPLITMV or I8X8_PRED, then the macroblock is forced to use 4x4 transform. Tests on the following HD clips showed mixed results: (all hd clips only used first 100 frames in the test) http://www.corp.google.com/~yaowu/no_crawl/t8x8/hdmodebased8x8.html http://www.corp.google.com/~yaowu/no_crawl/t8x8/hdmodebased8x8_log.html while the results are mixed and overall negative, it is interesting to see 8x8 helped a few of the clips. Patch 2: this patch tries to hard-wire selection of transform size based on prediction modes without using segmentation to signal the transform size. encoder and decoder both takes the same assumption that all macroblocks use 8x8 transform except when prediciton mode is B_PRED, I8X8_PRED or SPLITMV. Test results are as follows: http://www.corp.google.com/~yaowu/no_crawl/t8x8/cifmodebase8x8_0125.html http://www.corp.google.com/~yaowu/no_crawl/t8x8/hdmodebased8x8_0125log.html Interestingly, by removing the overhead or coding the segmentation, the results on this limited HD set have turn positive on average. Patch 3: this patch disabled the usage of 8x8 transform on key frames, and kept the logic from patch 2 for inter frames only. test results on HD set turned decidedly positive with 8x8 transform enabled on inter frame with 16x16 prediction modes: (avg psnr: .81% glb psnr: .82 ssim: .55%) http://www.corp.google.com/~yaowu/no_crawl/t8x8/hdintermode8x8_0125.html results on cif set still negative overall Patch 4: continued from last patch, but now in mode decision process, the rate and distortion estimates are computed based on 8x8 transform results for MBs with modes associated with 8x8 transform. This patch also fixed a problem related to segment based eob coding when 8x8 transform is used. The patch significantly improved the results on HD clips: http://www.corp.google.com/~yaowu/no_crawl/t8x8/hd8x8RDintermode.html (avg psnr: 2.70% glb psnr: 2.76% ssim: 3.34%) results on cif also improved, though they are still negative compared to baseline that uses 4x4 transform only: http://www.corp.google.com/~yaowu/no_crawl/t8x8/cif8x8RDintermode.html (avg psnr: -.78% glb psnr: -.86% ssim: -.19%) Patch 5: This patch does 3 things: a. a bunch of decoder bug fixes, encodings and decodings were verified to have matched recon buffer on a number of encodes on cif size mobile and hd version of _pedestrian. b. the patch further improved the rate distortion calculation of MBS that use 8x8 transform. This provided some further gain on compression. c. the patch also got the experimental work SEG_LVL_EOB to work with 8x8 transformed macroblock, test results indicates it improves the cif set but hurt the HD set slightly. Tests results on HD clips: http://www.corp.google.com/~yaowu/no_crawl/t8x8/HD_t8x8_20120201.html (avg psnr: 3.19% glb psnr: 3.30% ssim: 3.93%) Test results on cif clips: http://www.corp.google.com/~yaowu/no_crawl/t8x8/cif_t8x8_20120201.html (avg psnr: -.47% glb psnr: -.51% ssim: +.28%) Patch 6: Added a frame level flag to indicate if 8x8 transform is allowed at all. temporarily the decision is based on frame size, can be optimized later one. This get the cif results to basically unchanged, with one bit per frame overhead on both cif and hd clips. Patch 8: Rebase and Merge to head by PGW. Fixed some suspect 4s that look like hey should be 64s in regard to segmented EOB. Perhaps #defines would be bette. Bulit and tested without T8x8 enabled and produces unchanged output. Patch 9: Corrected misalligned code/decode of "txfm_mode" bit. Limited testing for correct encode and decode with T8x8 configured on derf clips. Change-Id: I156e1405d25f81579d579dff8ab9af53944ec49c
-
- 02 Feb, 2012 - 1 commit
-
-
Adrian Grange authored
As a precursor to encoding 32x32 blocks this cl adds the ability to encode the frame superblock (=32x32 block) at a time. Within a SB the 4 indiviual MBs are encoded in raster-order (NW,NE,SW,SE). This functionality is added as an experiment which can be enabled by ispecifying --enable-superblocks in the command line specified to configure (CONFIG_SUPERBLOCKS macro in the code). To make this work I had to disable the two intra prediction modes that use data from the top-right of the MB. On the tests that I have run the results produce almost exactly the same PSNRs & SSIMs with a very slightly higher average data rate (and slightly higher data rate than just disabling the two intra modes in the original code). NOTE: This will also break the multi-threaded code. This replaces the abandoned change: Iebebe0d1a50ce8c15c79862c537b765a2f67e162 Change-Id: I1bc1a00f236abc1a373c7210d756e25f970fcad8
-
- 07 Dec, 2011 - 1 commit
-
-
Yaowu Xu authored
This commit removed the macro CONFIG_I8X8, which was used to indicate the 8x8 intra prediction experiment, made the change fully merged in. Change-Id: Iafa4443781ce6e83f5591c12ba615a0e92ce0ea0
-