summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-04-12Adjust the key frame placement conditionYaowu Xu
The commit removed a limit on key frame detection, which caused a big drop in all metric measurements for standard HD clip such as _mobcal. This single change helps two standard HD clips by a huge amount, which help the overall std-hd set by 2.4% (glb psnr), 0.9% (avg_psnr), 2.1% (vpxssim). In the result page: http://pafr9.prod.google.com:26163/?/cns/rc-d/home/on2-prod/sunkaras/borg-test/yaowu 2012_04_02_1649_yaowu_bugfix_std-hd 2012_04_03_1452_yaowu_hump_std-hd represent the encoding test results and std-hd set prior and after this commit respectively. Change-Id: Ie4313e317c737ea0e699c3a7919c1376744baa1a
2012-04-12changed function prototype for macro_block_yrdYaowu Xu
This commit has made macro_block_yrd_8x8 and macro_block_yrd_8x8 to take same parameters. It also removed a few unnecessary shifts that has the potential to create out-of-range distortion values. Change-Id: I4ec5afb307c3685c2a67a07c2850f0927d214455
2012-04-11Delete unused function.Paul Wilkins
Deleted check_gf_quality(). Change-Id: If75fbd84accb1f6471ad6ea6ff2b65ae99976f5d
2012-04-11Refactoring of encode loop and bitstream packingPaul Wilkins
Some code re-factored / moved to allow the main pack operation inside the recode loop so that the size estimate is accurate. Deletion of some redundant code relating to one pass. Aproximate improvement over March 27 code base: Derf 0.0%, YT 0.5%, YThd 0.3% Std_hd 0.25% Change-Id: Id2d071794ab44f0b52935f6fcdb5733d09a6bb86
2012-04-11Changes to costing of skip.Paul Wilkins
Update the costing of skip in the recode loop and rd code. Change-Id: I2e5ebbd7ddf201212b32441321e12626cd0423e9
2012-04-11T8x8 zbin and rate control changes.Paul Wilkins
Some adjustments to zbin for t8x8. Changes to rules for sizing forced key frames. Some extra stats output in tmp.stt. Approximate gain on YT-hd set 0.5% There are still issues in sizing key frames and gf/arf frames when the image is largely static. These in part relate to problems with cost estimates in the recode loop. Change-Id: I6f0159dc8a8faeab4115a19c668d442491619a68
2012-04-11Superblock encoding orderAdrian Grange
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
2012-03-29Bug fix in probability update savings computationDeb Mukherjee
Found this bug while tracking down some anomalies in my experiments. Since vp8_cost_one and vp8_cost_zero return unsigned int, the bit shift by 8 will be incorrect if the value is negative. I am cautiously optimistic that this fix will make the prob updates more correct and somewhat improve results across the board. But the update probabilities will need to be retuned I think. Patch 2: Adding more of the same fixes using a macro. Change-Id: I1a168f040e74e8c67e7225103b1c2af9a611da49
2012-03-22Only enable compound prediction if multiple reference frames are present.Ronald S. Bultje
Change-Id: Ia52ac825400eb83ff663e3a05a3fe0b3526bac9a
2012-03-21enable 8x8 transform for MBs in intra framesYaowu Xu
When ac_yquant>171, a key frame is enabled to use 8x8 transform. In such case, MBs with DC_PRED or TM_PRED are selected to use T8x8. This change helped the full STD-HD set by ~.1% or so, which is reasonable considering how often key frame occurs in these encodings. Change-Id: Id17009ef6327252177b19e6bf0d6628827febaf1
2012-03-21Only support improved quantPaul Wilkins
Deprecate fast quant and strict_quant code. Small effect on quality as fast was used in first pass but the effect is basically neutral across the derf set. The rationale here is to reduce the number of code paths for now to make experimentation easier. Optimized and fast code options can be re-introduced later along with other encode speed options. Change-Id: Ia30c5daf3dbc52e72c83b277a1d281e3c934cdad
2012-03-21Merge Exact QuantPaul Wilkins
Change-Id: Id2412a7f24a7c1016ec9fc3b9b0fbd16871f374a
2012-03-21Making subpel filters switchable at frame levelDeb Mukherjee
Various refactoring to make the subpel motion compensation filters switchable by a frame level field. Two types of 8-tap filters are supported in addition to the existing bilinar and sixtap filters. One is the default 8-tap and the other has a sharper cut-off for use with frames with substantial edge content. Patch 2: Added a preliminary strategy for filter selection based on edginess detecton. Also includes some filter changes. Change-Id: I866085bda5ae143cfdf2ec88157feaabdf7bd63a
2012-03-21Adding contextual coding of mb_skip_coeff flag.Deb Mukherjee
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
2012-03-14added clamp for 2nd motion vectorYaowu Xu
The commit added a clamp to the 2nd motion vector used in compound prediction to insure mv within UMV borders. The clamp is similar to that of the first motion vector except that No SPLITMV is ever used for the 2nd motion vector. Change-Id: I26dd63c304bd66b2e03a083749cc98c641667116
2012-03-14Added encode/decode recon buffer match test to vpxencYaowu Xu
The commit added a new command line option --test-decode to vpxenc. The option enables encoder to decode compressed frames and test recon buffers from the decode against those from encode for mismatch. There are a few limitations on this option currently, one of them being the match test is not done on a number of lagged frames at the end of an encoding. Change-Id: I80c29b46dcdcea9f48107a506b235743068862fe
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-14Added option to skip first n frame to vpxencYaowu Xu
this commit added a command line option to skip first n frames from input file to facilitate debugging and testing. Change-Id: I4ffc5f85fa7e193ea4bdee08cb236717de8beef1
2012-03-12fixed .mk files to reflect add/remove of a header fileYaowu Xu
In a previous commit, the duplicate of headerfile defaultcoefcounts.h was identified. This commit updates the .mk file to ensure configure and make works properly for all platforms. Change-Id: I31a39c809a734ba438ee53db700f252e9a03eddd
2012-03-07Changed MAX_PSNR to be consistent with internal statsYaowu Xu
The maximum psnr has a marginal impact on the overall output in high quality encodings, the change will make sure the psnr output to be consistent with encoder internal stats. Change-Id: I35cf2f85008ec127a7d91c9eb69fa7811798ae32
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-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