summaryrefslogtreecommitdiff
path: root/vp8
AgeCommit message (Collapse)Author
2012-08-02Make RDCOST() results 64-bit.Ronald S. Bultje
This prevents various integer overflows that several of us have been seeing in the past few days. Change-Id: If0020613a608e13d311b7838796c7ad53cb97255
2012-08-02Use 8x8 DCT transform for I8X8 prediction modeJingning Han
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
2012-07-31Removed macros for merged experimentsAdrian Grange
Removed two macros corresponding to experiments that were merged into the main code. Change-Id: I894e8b509a2bb88557f9aba6f226ed7807745065
2012-07-30Adds support for switchable interpolation filters.Deb Mukherjee
Allows for swtiching/setting interpolation filters at the MB level. A frame level flag indicates whether to use a specifc filter for the entire frame or to signal the interpolation filter for each MB. When switchable filters are used, the encoder chooses between 8-tap and 8-tap sharp filters. The code currently has options to explore other variations as well, which will be cleaned up subsequently. One issue with the framework is that encoding is slow. I tried to do some tricks to speed things up but it is still slow. Decoding speed should not be affected since the number of filter taps remain unchanged. With the current version, we are up 0.5% on derf on average but some videos city/mobile improve by close to 4 and 2% respectively. If we did a full-search by turning the SEARCH_BEST_FILTER flag on, the results are somewhat better. The framework can be combined with filtered prediction, and I seek feedback regarding that. Rebased. Change-Id: I8f632cb2c111e76284140a2bd480945d6d42b77a
2012-07-27Merges several experimentsDeb Mukherjee
The following five experiments are merged: newentropy newupdate adaptive_entropy (also includes a couple of parameter changes that improves results a little in common/entropymode.c and encoder/modecosts.c that were not merged from the internal branch) newintramodes expanded_coef_context Change-Id: I8a142a831786ee9dc936f22be1d42a8bced7d270
2012-07-25Merge "Use macro for filter extension length" into experimentalAdrian Grange
2012-07-24Use macro for filter extension lengthAdrian Grange
Replaced local definitions of the extension required by the filters with the globally defined value. Change-Id: If9e590a1f2e5b0bdc2d3e3c3f04aacbd3b09bfee
2012-07-24Merge "Update 8x8 tokenizer to not encode an EOB if seg_eob is active." into ↵Daniel Kang
experimental
2012-07-24remove extra end of lineJim Bankoski
This commit fixes up shared lib builds on linux. Change-Id: Ib109dc5a226dc5d7874d2e5b333466cbfd4f4661
2012-07-23Update 8x8 tokenizer to not encode an EOB if seg_eob is active.Daniel Kang
Change-Id: Id2bac0597b6dd1ce41bd78cbd9e9d876b71cd8a2
2012-07-23Dll build of libvpxJim Bankoski
Change-Id: I74e50b4dfbe73eb98e1dce1695a9973f637220c0
2012-07-19fixed a compiling issueYaowu Xu
Change-Id: I9ccbea76eaeb81ce7b833dd92216734725796e84
2012-07-19Adds hybrid transformJingning Han
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
2012-07-18Merge "removed floating point version 8x8 fdct" into experimentalYaowu Xu
2012-07-18Merge "cleanup experiments in configure" into experimentalYaowu Xu
2012-07-18Don't auto-default to comp-pred unless content is static.Ronald S. Bultje
Although it can be useful, in some cases it causes artifacts in motion- based content. Change-Id: I27bb80901020c40636e2018a8217759175a23f5b
2012-07-17removed floating point version 8x8 fdctYaowu Xu
the integer version has very good precision, the float version is no longer useful. this commit also removes the experiment option from configure script. Change-Id: Ibb92e63c9f5083357cdf89c559d584a7deb3353f
2012-07-17cleanup experiments in configureYaowu Xu
this commit removes a number of experiment options from configure script. the associated experiments are already fully merged, the options in configure script have no effect at all. Change-Id: I8054ccaee0a04610162ed76ac9e59c4538217113
2012-07-17Restyle codeJohn Koleszar
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
2012-07-17Merge "Fix bug in reference frame counting." into experimentalRonald S. Bultje
2012-07-16Merge "Add missing mv_{col,row}_{min,max}_sb variables to MACROBLOCK ↵Tim Terriberry
struct." into experimental
2012-07-16Fix bug in reference frame counting.Ronald S. Bultje
vp8_encode_inter_macroblock() is called in both pick_mb_modes() as well as encode_sb(), thus the number of macroblocks in the counter were twice as big as actual numbers. This doesn't affect output. Change-Id: I6de8a996ee44d2f7f2080d8d2177dd7bc6207c93
2012-07-16Simplify vp8_decode_mb_tokens_8x8.Daniel Kang
Change-Id: Icac5b18e5c832681cea866679796a1dd4278cfb8
2012-07-16Simplify vp8_decode_mb_tokens.Daniel Kang
Change-Id: Ib6866e491994f6c7eeb6c2e5ecd1ff54cc187610
2012-07-16Add missing mv_{col,row}_{min,max}_sb variables to MACROBLOCK struct.Ronald S. Bultje
This allows CONFIG_SUPERBLOCKS experiment to almost compile succesfully, except for the missing pick_sb_modes() function. Change-Id: Ib2322f2aacdc371e8066f2eb4a8d761c40490b4d
2012-07-16Use 8x8 transform for all 16x16 intra prediction modes in keyframes.Ronald S. Bultje
Also use the 8x8 transform in the RD loop. Change-Id: If1a25aa15d3f64e05c9a31875e309d8cd5bc812d
2012-07-16Keep statistics for chosen intra modes in keyframes also.Ronald S. Bultje
Change-Id: Ibfecf1fb0fcf51fb349746fec015b1a3e44a4530
2012-07-09change to enable encoder to clamp UV motion vectorYaowu Xu
This is to avoid a rare encoder/decoder mismatch for MB using SPLITMV mode. In decoder, the UV mv can be determined to need clamp, but the flag is never set in encoder motion vector selection process, and the clamp is not done in encoding in encoder. Change-Id: I60520d3f790354c7855dadf03f0978ea9b77e2c0
2012-06-29Get rid of some cast.Christian Duvivier
Change-Id: Iff5ccf2400bcb7b78c7b70f289ea65c982efddd5
2012-06-29Fix warnings.Christian Duvivier
Change-Id: I6dd27a0ea661e6f10a55d7841021b66ae4fc72ae
2012-06-28Add lossless compression mode.Hui Su
This commit adds lossless compression capability to the experimental branch. The lossless experiment can be enabled using --enable-lossless in configure. When the experiment is enabled, the encoder will use lossless compression mode by command line option --lossless, and the decoder automatically recognizes a losslessly encoded clip and decodes accordingly. To achieve the lossless coding, this commit has changed the following: 1. To encode at lossless mode, encoder forces the use of unit quantizer, i.e, Q 0, where effective quantization is 1. Encoder also disables the usage of 8x8 transform and allows only 4x4 transform; 2. At Q 0, the first order 4x4 DCT/IDCT have been switched over to a pair of forward and inverse Walsh-Hadamard Transform (http://goo.gl/EIsfy), with proper scaling applied to match the range of the original 4x4 DCT/IDCT pair; 3. At Q 0, the second order remains to use the previous walsh-hadamard transform pair. However, to maintain the reversibility in second order transform at Q 0, scaling down is applied to first order DC coefficients prior to forward transform, and scaling up is applied to the second order output prior to quantization. Symmetric upscaling and downscaling are added around inverse second order transform; 4. At lossless mode, encoder also disables a number of minor features to ensure no loss is introduced, these features includes: a. Trellis quantization optimization b. Loop filtering c. Aggressive zero-binning, rounding and zero-bin boosting d. Mode based zero-bin boosting Lossless coding test was performed on all clips within the derf set, to verify that the commit has achieved lossless compression for all clips. The average compression ratio is around 2.57 to 1. (http://goo.gl/dEShs) Change-Id: Ia3aba7dd09df40dd590f93b9aba134defbc64e34
2012-06-27Added Prediction Filter to Mode SelectionAdrian Grange
Added the ability to optionally filter the prediction data when inter modes are selected (excludes SPLITMV, for now). The mode selection loop considers both the filtered and non-filtered prediction data when choosing mode. The filter can be turned on/off at the frame-level, or signaled for each MB. Change-Id: I1b783c71d95a361ab36c761b07e8a6b06bc36822
2012-06-25Continued adaptive entropy codingDeb Mukherjee
Incorporates mv_ref, mbsplit and second_mv into the adaptive entropy framework. The mv_ref framework has been modified from before. Adds some clean-ups and fixes. Results with the adaptive entropy experiment are currently up by +1.93% on derf; +2.33% std-hd and +1.87% yt-hd. Fixed a nasty intermittent bug. Change-Id: I4b1ac9f9483b48432597595195bfec05f31d1e39
2012-06-25Sign-extend input argument so it can be used in pointer arithmetic.Ronald S. Bultje
Change-Id: I6cbd4de96f9dcc783cef170bfd7652f6cbee36a2
2012-06-19Merge "Add comments to intra prediction probability tables." into experimentalRonald S. Bultje
2012-06-18Fix a bunch of warnings.Christian Duvivier
Change-Id: I883b4f63559c1cf66a25016e946b1b1ae98a20da
2012-06-18x86inc: Move x86inc to the correct location.Daniel Kang
Change-Id: I6802731a4d15feef5ce62993dc505ded55c40f7e
2012-06-18Add comments to intra prediction probability tables.Ronald S. Bultje
Change-Id: Iec81423e8e6c50acd9e10f69bc99ad0e9058517d
2012-06-15Adaptive entropy coding of coefficients, modes, mv.Deb Mukherjee
This patch incorporates adaptive entropy coding of coefficient tokens, and mode/mv information based on distributions encountered in a frame. Specifically, there is an initial forward update to the probabilities in the bitstream as before for coding the symbols in the frame, however at the end of decoding each frame, the forward update to the probabilities is reverted and instead the probabilities are updated towards the actual distributions encountered within the frame. The amount of update is weighted by the number of hits within each context. Results on derf/hd/std-hd are all up by 1.6%. On derf, the most of the gains come from coefficients, however for the hd and std-hd sets, the most of the gains come from the mode/mv information updates. Change-Id: I708c0e11fdacafee04940fe7ae159ba6844005fd
2012-06-15Merge "Adds x86inc.asm and update idct/dequant mmx" into experimentalDaniel Kang
2012-06-12Adds x86inc.asm and update idct/dequant mmxDaniel Kang
Updates idct/dequant mmx assembly to work with vpnext instead of vp8. Also adds x86inc.asm Change-Id: I6e147d5e89177ae449271e97e50d082eb11b078e
2012-06-12changed to use a fixed number for update probabityYaowu Xu
This commit is to remove two arrays, which contain the probabilities of how likely each probability in coef_probs table is updated. The commit changed to use a fixed number "252". Surprisedly, the overall impact on quality is close to zero, which basically says the two big static arrays are not helpful at all. derf: -0.016%, -0.020% std-hd: 0.000%, -0.013% yt: -0.022%, +0.007% yt-hd: -0.038%, +0.034% Change-Id: Ifee94d28a37dcab4f1d2b994bd5b07575be42b72
2012-06-12Added the ability to accumulate coef stats across encodingsYaowu Xu
This commit added the ability to accumulate the coef stats across different encodings using an intermediate binary stats files. The accumulation happens only the binary stats file exists in current directory. The encoder needs to be built with "ENTROPY_STATS" to allow the output. The commit also fixed a few formating issues in output stats file. Change-Id: Ib1a41180aa554845cf51e4421a230b128a3a82b4
2012-06-12Merge "Merge of further two pass rc clean up and adjustments." into experimentalPaul Wilkins
2012-06-12Merge "Key frame and GF sizing changes." into experimentalPaul Wilkins
2012-06-12Merge of further two pass rc clean up and adjustments.Paul Wilkins
Changes to calculation of sr_coded_error to include 0,0 case. Experimental use of sr_coded_error in calculating correction factor for estimating the allowable Q range. Reinstated some code needed for calculating section_intra_rating. Add flash detection in calculation of KF boost Increased tolerance in testing candidate key frames (needed with longer motion search as this tends to slightly increase inter %. Zbin changes for 8x8. Other minor adjustments, refactoring and bug fixes. Reinstated some motion break out clauses in boost loop as their removal hurt a few 50fps clips badly in the std set. It may be possible to remove them again later if a better way can be found of preventing overly long gf intervals. Change-Id: Iee686d0c31072828bb1ccd2bc63f5f1c7c548ea2
2012-06-08Key frame and GF sizing changes.Paul Wilkins
Changes to the equations for kf and gf minQ and to the boost calculations for kg and gf Change-Id: I312031c910e6a575334f49075c32f49a8dfff239
2012-05-31Fixed bug where invalid pointer is dereferencedAdrian Grange
Variables m & mi were being dereferenced when they might hold invalid values. The fix is simply to move these dereferences to after the point at which mb_row and mb_col are tested for validity. Change-Id: Ib16561efa9792dc469759936189ea379d374ad20
2012-05-30Rate control fix.Paul Wilkins
This fix addresses some problems with very complex clips like handling of flashes on clips like crew (which was made worse by an earlier patch (derf and std-hd)). Most clips a small effect but some between 1 & 2% Derf +0.039, +0.211% YT +0.042, +0.083% Change-Id: I65fc7c13afc31482040068544dd65b8808f5cb4a
2012-05-29Merge "fixed one more compiling issue with VC" into experimentalPaul Wilkins