summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-02-28Compound intra prediction (b_pred/4x4 only, for now),Ronald S. Bultje
Also remove duplicate build_intra_predictors_mby/uv(). Change-Id: I78607e7304952a9b962a5b25af9bb9c48692187b
2012-02-28Correct zbinboost lookup for 8x8 quantizerYaowu Xu
The commit fixed a problem where 8x8 regular quantizer was using the 4x4 zbinboost lookup table that only has 16 entries at each Q. The commit assigned a uniform zbin boost value for all cases that there are more than 16 consective zeros. The change only affects MBs using 8x8 transform. The fix has a slightly positive impact on quality. Test results: http://www.corp.google.com/~yaowu/no_crawl/hd_fixzbinb.html (avg psnr: .26% glb psnr: .21% ssim: .28%) Results on cif size clip are also positive even though gain is smaller http://www.corp.google.com/~yaowu/no_crawl/derf_fixzbinb.html Change-Id: Ibe8f6da181d1fb377fbd0d3b5feb15be0cfa2017
2012-02-28Merge "Merge new loop filter." into experimentalPaul Wilkins
2012-02-28Initial refactoring of high_precision mv code.Deb Mukherjee
This is the first patch for refactoring of the code related to high-precision mv, so that 1/4 and 1/8 pel motion vectors can co-exist in the same bit-stream by use of a frame level flag. The current patch works fine for only use of 1/4th and only use of 1/8th pel mv, but there are some issues with the mode switching in between. Subsequent patches on this change Id will fix the remaining issues. Patch 2: Adds fixes to make sure that multiple mv precisions can co-exist in the bit-stream. Frame level switching has been tested to work correctly. Patch 3: Fixes lines exceeding 80 char Patch 4: http://www.corp.google.com/~debargha/vp8_results/enhinterp.html Results on derf after ssse3 bugfix, compared to everything enabled but the 8-tap, 1/8-subpel and 1/16-subpel uv. Overall the gains are about 3% now. Hopefully there are no more bugs lingering. Apparently the sse3 bug affected the quartel subpel results more than the eighth pel ones (which is understandabale because one bad predictor due to the bug, matters less if there are a lot more subpel options available as in the 1/8 subpel case). The results in the 4th column correspond to the current settings. The first two columns correspond to two settings of adaptive switching of the 1/4 or 1/8 subpel mode based on initial Q estimate. These do not work as good as just using 1/8 all the time yet. Change-Id: I3ef392ad338329f4d68a85257a49f2b14f3af472
2012-02-28Merge "Try to enable 8x8 tranform for smaller resolution" into experimentalYaowu Xu
2012-02-28Merge new loop filter.Paul Wilkins
Merge of the NEWLPF configuration experiment so it is always on. Change-Id: I7054772b6eab28bad1ff807bfa54d98f83de9308
2012-02-28Try to enable 8x8 tranform for smaller resolutionYaowu Xu
The commit overall on derf test is break even to very slightly positive comparing to all 4x4 transform. Change-Id: I2a7c19599aa54c2d3a5b35db0dc891ba8a6a2b26
2012-02-28Experimental branch code clean up.Paul Wilkins
Removal of some further code relating to partitions and error resilience. Spelling correction. Change-Id: I36067aae67a4a23bec359541dda3400b0bbf26d0
2012-02-28Code SimplificationPaul Wilkins
Removal of code relating to token partitioning Change-Id: Iaf3c88d6758639a55bd92c3be5c51e6bed407a3c
2012-02-28fixed a wrong intialization valueYaowu Xu
The "update" variable was used as a flag in coef_prob update dry run that tests if a frame should encodes update at all. The wrong init value forced the update happening always. fixing this has a minor improvement in low bit rate situation when 8x8 transform is allowed. Change-Id: Icb498e8d6a62fd074dcbc2065b797cba9237cb51
2012-02-28Merge "Corrected spelling" into experimentalPaul Wilkins
2012-02-27Corrected spellingPaul Wilkins
Apparently the correct spelling of segement is segment ! Change-Id: I88593ee0523f251b3a96794c6166ef8c7898a029
2012-02-27Merge "Code Cleanup." into experimentalPaul Wilkins
2012-02-27Merge "Removal of temporal re sampling code." into experimentalPaul Wilkins
2012-02-27Merge "Code Simplification." into experimentalPaul Wilkins
2012-02-27Merge "Further code simplification and clean up." into experimentalPaul Wilkins
2012-02-26Merge "Changing default 8-tap filter to Langrangian interpolator." into ↵Deb Mukherjee
experimental
2012-02-26Code Cleanup.Paul Wilkins
Removal of error_resilient_mode features. The interface has been left in place but does nothing. Change-Id: I2407863bd0d3c98407354507423ca48d29f63b17
2012-02-25Removal of temporal re sampling code.Paul Wilkins
For now the interface elements have been left in place to make sure existing parameter files work but parameters relating to drop frame wont do anything. Change-Id: I579ee614726387381c546845dac4bc03c74c6a07
2012-02-24Bug fix in ssse3 variance computation.Deb Mukherjee
Fixes a bug that was introduced in the high precision mv patch. Change-Id: Ieadb433ebe4c3ef3e0e63944dab11528bf8bd73a
2012-02-24Code Simplification.Paul Wilkins
Removal of code relating to spatial re sampling Change-Id: Iff1bc651c62cd528f960c4b27f9673b172e68835
2012-02-24Further code simplification and clean up.Paul Wilkins
Change-Id: Ifdb17b56090a317b2aa82cf125d57934902c5298
2012-02-24Changing default 8-tap filter to Langrangian interpolator.Deb Mukherjee
The Lagrangian interpolation filter is maximally flat in the passband. There is non-trivial improvement with the hd set, while for derf the results are virtually unchanged. See: http://www.corp.google.com/~debargha/vp8_results/enhinterpn.html (derf) http://www.corp.google.com/~debargha/vp8_results/enhinterpn_hd.html (HD) Patch 2: Updated the results for derf in the html above to use the new baseline. There is still about 4% improvement. Will update the hd baseline later (since it takes 9 hours to run on my machine) Patch 3: By mistake the default filter was left at 60 - should be 0 to use the new interpolation filter. Change-Id: If5f64444976562415d68a2aeabb94fdfa0d47890
2012-02-24Deleted code.Paul Wilkins
Removed redundant code for ref frame cost.
2012-02-23Clean ups and minor changes in high precision mv with 8-tap interpolationDeb Mukherjee
* Removes EDGE_PIXEL_FILTER for external sanpshot * changes the default 8-tap filter based on high precision results in http://www.corp.google.com/~debargha/vp8_results/enhinterpn.html * changes the default prob tables for high-precision mv encoding to favor zeros in the last bit (i.e. quarter pel). This is only important for short clips. Change-Id: I02bb0de8679d9eec06cdbcc8160dbf073cd847a4
2012-02-23Supporting high precision 1/8-pel motion vectorsDeb Mukherjee
This is the initial patch for supporting 1/8th pel motion. Currently if we configure with enable-high-precision-mv, all motion vectors would default to 1/8 pel. Encode and decode syncs fine with the current code. In the next phase the code will be refactored so that we can choose the 1/8 pel mode adaptively at a frame/segment/mb level. Derf results: http://www.corp.google.com/~debargha/vp8_results/enhinterp_hpmv.html (about 0.83% better than 8-tap interpoaltion) Patch 3: Rebased. Also adding 1/16th pel interpolation for U and V Patch 4: HD results. http://www.corp.google.com/~debargha/vp8_results/enhinterp_hd_hpmv.html Seems impressive (unless I am doing something wrong). Patch 5: Added mmx/sse for bilateral filtering, as well as enforced use of c-versions of subpel filters with 8-taps and 1/16th pel; Also redesigned the 8-tap filters to reduce the cut-off in order to introduce a denoising effect. There is a new configure option sixteenth-subpel-uv which will use 1/16 th pel interpolation for uv, if the motion vectors have 1/8 pel accuracy. With the fixes the results are promising on the derf set. The enhanced interpolation option with 8-taps alone gives 3% improvement over thei derf set: http://www.corp.google.com/~debargha/vp8_results/enhinterpn.html Results on high precision mv and on the hd set are to follow. Patch 6: Adding a missing condition for CONFIG_SIXTEENTH_SUBPEL_UV in vp8/common/x86/x86_systemdependent.c Patch 7: Cleaning up various debug messages. Patch 8: Merge conflict Change-Id: I5b1d844457aefd7414a9e4e0e06c6ed38fd8cc04
2012-02-22Merge "Fixed skippable evaluation in mode decision" into experimentalYaowu Xu
2012-02-22Merge "Reduced bias in picking loop filter level" into experimentalYaowu Xu
2012-02-22Merge "a bit code clean-up" into experimentalYaowu Xu
2012-02-22Merge "Reworked context conversion between 8x8 and 4x4" into experimentalYaowu Xu
2012-02-22Fixed skippable evaluation in mode decisionYaowu Xu
Yunqing fixed an oddity in UVIntra skippable evaluation for stable branch, which brought up the fact that the evaluation is broken. The issue was that for MBs with 2nd order block, the eob for 1st order blocks is set at 1. The previous evaluation did not take that into account. This commit intend to fix the problem. The commit also absorbed Yunqing's fix for UVIntra skippable evalution. Test on hd showed some good gains in combination with LPF bias fix: http://www.corp.google.com/~yaowu/no_crawl/LPFBias_FixSkip.html (avg psnr: .34%, glb psnr: .32%, ssim: .22%) Change-Id: I36af11c8ef7f643e8ff46da7bf3a167b437039d4
2012-02-17Reduced bias in picking loop filter levelYaowu Xu
The bias in picklpf intended to bias toward less greedy in getting best frame level psnr while maximize overall quality for a clip. This commit reduced the bias for frames using 8x8 transform to achieve better compression overall. The change improve compression by ~.15% consistently on most of the HD clips tested. http://www.corp.google.com/~yaowu/no_crawl/LPFBias_FixSkip.html Change-Id: Ic30932d2b8eaebd52339b0195f569edc48eed7bc
2012-02-17Code base simplification.Paul Wilkins
Removal of most code to do with 1 pass. Removal of cyclic refresh code. Change-Id: I74971082bc19dd76e795d4d2e781a0424cec5c8c
2012-02-17Merge "Code simplification" into experimentalPaul Wilkins
2012-02-16a bit code clean-upYaowu Xu
Removed some transform code that is not in use. Change-Id: I9489af7e23d9d7fe052feb6c8bbafa62ebbda39c
2012-02-16Reworked context conversion between 8x8 and 4x4Yaowu Xu
The commit rationized and simplified the entropy context conversion betwen MB using 8x8 transform and MB using 4x4 transform. The old version had a number of weirdness in how 4x4 transform MB's context is used for 8x8 blocks other than the first 8x8 within a MB. Test showed the change has a gain ~.1% for avg psnr, glb psnr and ssim on the limited HD set. Change-Id: I774536c416baa6845aa741f956d8a69fa40e5d47
2012-02-16Removing a stray CONFIG_DUALPRED, and a INTERP_EXTEND fix.Deb Mukherjee
Change-Id: I7549e424ca6846b07a796f2b9cd4e9d4e550ca9b
2012-02-16Code simplificationPaul Wilkins
Removal of the pickinter.c and .h files and calls to this code. Removal of some code relating to real time and one pass settings though there is more to be done in this regard. However, vp8_set_speed_features() now only supports modes 0 and 1 and speeds up to 3 so rd should always be set. Change-Id: I62c0c1b6154ab499785baef310536080e87bc4d8
2012-02-16Merge "Adjusting 8-tap filter + prelim edge pixel filter code." into ↵Deb Mukherjee
experimental
2012-02-16revised the rate distortion computation for UVYaowu Xu
this commit changed the UV r/d calculation in the mode decision process to properly account for the rate of 8x8 transform coefficients. Change-Id: I485f8f35f2b61db0b6539beb32e83481b1cf083b
2012-02-16Merge "revised the rate distortion computation for UV" into experimentalYaowu Xu
2012-02-16Merge "optmized rounding for transforms" into experimentalYaowu Xu
2012-02-16Merge "re-scaled 2nd order haar transform" into experimentalYaowu Xu
2012-02-16Merge "moved scaling from dequantization to inverse transform for T8x8" into ↵Yaowu Xu
experimental
2012-02-16optmized rounding for transformsYaowu Xu
the changes are still temporary, the final transforms, especially inverse ones should take in account both accuracy, complexity, and sign-bias, which should be decided at a later time. Change-Id: I116b0c70b25f5ee324ae5713d4564f5d0aa27151
2012-02-16re-scaled 2nd order haar transformYaowu Xu
During the work of extend_qrange, we have rolled a factor of 2 from quantization/dequatnization into 2nd order walsh-hadamard transform. This commit does the same for the 2nd order haar transform. so they can share the same quantizaiton process as the 2nd order WHT. Change-Id: I734af4a20ea8149a01b5b1971a065092977dfe33
2012-02-16moved scaling from dequantization to inverse transform for T8x8Yaowu Xu
Previously, the scaling related to extended quantize range happens in dequantization stage, which implies the coefficients form forward transform are in different scale(4x) from dequantization coefficients This worked fine when there was not distortion computation done based on 8x8 transform, but it completely wracked the distortion estimation based on transform coefficients and dequantized transform coefficients introduced in commit f64725a00 for macroblocks using 8x8 transform. This commit fixed the issue by moving the scaling into the stage of inverse 8x8 transform. TODO: Test&Verify the transform/quantization pipeline accuracy. Change-Id: Iff77b36a965c2a6b247e59b9c59df93eba5d60e2
2012-02-15Adjusting 8-tap filter + prelim edge pixel filter code.Deb Mukherjee
Results with the new filter coefficients compared with the previous versions are here: http://www.corp.google.com/~debargha/vp8_results/enhinterp.html (derf) http://www.corp.google.com/~debargha/vp8_results/enhinterp_hd.html (HD) Overall, the derf set improves by 0.94% with 8-tap filters while the HD set improves by 0.58%. Patch 1: resolving merge conflict Change-Id: I09db0abdab7b08bb19f86d911de23d2123309748
2012-02-15Remove dual prediction frame re-encoding loop.Ronald S. Bultje
I'm basically not convinced that the concept works at all, let alone that this is the right place to do it. I think if we want something like this at all, I should integrate it with the main encoding loop and re-encode checks in onyx_if.c, and show that it has a significant benefit (which right now, it doesn't; removing this re-encode check actually increases all metrics by ~0.15%). Change-Id: I1b597385dc17f468384a994484fb24813389411f
2012-02-15Fix overflows in dual prediction mode selection.Ronald S. Bultje
Change-Id: I265ad46e01a307bca21e6223725e4055f5e08648