summaryrefslogtreecommitdiff
path: root/vp8/encoder
AgeCommit message (Collapse)Author
2012-03-14fixed a bug of context overwritten by key frame recodingYaowu Xu
The recoding loop save and restore frame coding context for recodes. However in recoding of key frames, some of the coding context saved was stale from last encoded inter frame. The save/restore sometimes overwrites the re-inintialized coding context with saved context from last frame, resulting in encoder/decoder mismatch Change-Id: I354ae2f71074d142602d51d06544c05a2462caaf
2012-03-07removed duplicate a head fileYaowu Xu
Removed the copy in encoder and changed to use the one in common Change-Id: Ief0985a50ffd6053a269638fd4816b055ca273ec
2012-03-07Snapshot candidatePaul Wilkins
Pulled out super block code for the snapshot as this is not quite ready and will need an extensive re-merge. Change-Id: I436369b511257447a7b0ea064016cb63f5011849
2012-03-06Imported a change from stable branchJim Bankoski
https://gerrit.chromium.org/gerrit/#change,17319 fixes cost estimating to take skip_eob into account. No quality difference seen on derf set tests, but about .4% gain on STD_HD set. Change-Id: Ic5fe6d35ee021e664a6fcd28037b8432a0e470ca
2012-03-06fix a compiling error when CONFIG_COMP_INTRA_PRED not definedYaowu Xu
Change-Id: I4159ff365953598d9c9bc3ecacfb5c5f4a315b45
2012-03-05Use per-MB compound intra prediction.Ronald S. Bultje
This gives a modest gain on derf overall, although at low bitrates the cost is still too high, so this can be improved further. Patch 2. Re-base and fix 80 column issues Change-Id: Ida2f9fa3fe75370669f6a27b37108dc602231c63
2012-03-05Changed how UV r/d estimates are done for Intra ModesYaowu Xu
The commit changed to compute UV intra RD estimates for 4x4 and 8x8 separately to be used in mode decision for MB modes associated with the appropriate transform size respectively. Now finally after many other changes related 8x8 quantizer zbin boost and zbin_mode_boost, this change overall helps the HD(with 8x8) by around ~.13%. (avg .13% glb .13% ssim .17%) The commit also has a few changes for eliminating compiler warnings. Change-Id: Ibab35dad44820c87e6b44799c66f8d519cc37344
2012-03-05Fixed zbin_mode_boost initializationYaowu Xu
The commit added the correct Zbin_mode_boost initialization based on Intra Mode before using rate distortion to pick UV intra mode. Change-Id: I8e57878ff356a06672f6fa2431be860bf9b9a5c7
2012-03-05refactored code that checks if a macroblock is skippableYaowu Xu
Change-Id: I4ea6d819bbbde312792c4f813ab63ea50cf0cd1d
2012-03-05Allow for frame overheads in min frame bandwidth.Paul Wilkins
Change-Id: I6ade229ff400fe492709010ac5bada37f8afa73e
2012-03-01Merge t8x8 experimentsYaowu Xu
Change-Id: I8e9b6b154e1a0d0cb42d596366380d69c00ac15f
2012-03-01disable usage of 8x8 for resolution below 360pYaowu Xu
need further investigation on some odd behavior on one youtube clip Change-Id: Iec477986a86b54ef26df2ef69d2f9484e2d1a043
2012-03-01Various bug fixes related to high precision mvDeb Mukherjee
Change-Id: Ie5a7c87d71bd4a541463b68704620d89cec142cf
2012-03-01Bug fix in vp8_estimate_entropy_savings()Paul Wilkins
Incorrect scaling of savings for t8x8. Change-Id: If01e08f8c73faa73afc3c70e501e6acc54d7e26f
2012-02-28Fix compiling issue when CONFIG_HIGH_PRECISION_MV is definedYaowu Xu
Change-Id: I3b8a230d5b119910e6a6767331a4d97768089355
2012-02-28Rename "dual" prediction to "compound" prediction.Ronald S. Bultje
Change-Id: Ibcd2b9b247ff9f83331dac47f91ec285e8955ff1
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-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-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-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-24Deleted code.Paul Wilkins
Removed redundant code for ref frame cost.
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-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-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-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