summaryrefslogtreecommitdiff
path: root/vp8
AgeCommit message (Collapse)Author
2012-05-08a number of fixes to entropy stats collectionYaowu Xu
1. block types There are only three types of blocks for 8x8 transformed MBs, i.e. Y block with DC does not exist for 8x8 transformed MBs as all MB using 8x8 transform have 2nd order haar transform. This commit introduced a new macro BLOCK_TYPES_8X8 to reflect such fact. 2. context counters This commit also fixed the mixed of context_counters between 4x4 and 8x8 transformed MBs. The mixed use of the counters leads me to think the existing the context probabilities were not properly generated from 8x8 transformed MBs. 3. redundant collecting in recoding The commit also corrected the code that accumulates entropy stats by making sure stats only collected for final packing, not during the recode loop Change-Id: I029f09f8f60bd0c3240cc392ff5c6d05435e322c
2012-05-04Expanding the coefficient encoding contextsDeb Mukherjee
This patch expands the set of prev contexts used for video coding from 3 to 4. There is a small improvement of the order of 0.08% for derf and 0.15% on the HD set. The tests were rerun after the various merges last week. There are two columns in each test - the first are the results with the mbskip change, and the second with expanded contexts added on top of that. Derf: http://www.corp.google.com/~debargha/vp8_results/explibvpx_newentropy_expcontext.html HD: http://www.corp.google.com/~debargha/vp8_results/explibvpx_hd_newentropy_expcontext.html Rebased. Broke up 80 char lines. Change-Id: I82d2e72d054e530cbf5ce9aa0e6d85c582965675
2012-05-02chagned the decoder band to match the encoderYaowu Xu
missed the decoder side in last commit Change-Id: Ie97f35189e93f78783e3d8072a36eea768beed27
2012-05-01slight adjustment to coef band definitionYaowu Xu
This commit adjusted slightly the 4x4 coefficents band definition to better classify coefficients with similar distributions and usages. It helps derf set about .1%, it is alos slightly positive for std-hd set, where 4x4 blocks are used less frequently. The commit also removed a const array not in use. Change-Id: I78d16905d4036641ec905b0c32c190c1def5b249
2012-04-30Fix inversion of probability and value in calls to vp8_cost_bit().Ronald S. Bultje
Change-Id: I9f1686249ac812f7b9b872eabe3970d1dfb25e56
2012-04-30Turning off filter search for now to improve encode speed.Deb Mukherjee
Change-Id: I87291fb40c745f34c36b067f47abdf69774a812f
2012-04-30Minor cleanup in tokenize.hDeb Mukherjee
Removes a set of spurious declarations that were inadvertently checked in. Change-Id: I2f80b6b66d2ec9ea667c810eaf1a6e7d52478c67
2012-04-27Merge "Removed MV costing from ARNR filtering" into experimentalAdrian Grange
2012-04-27Removed MV costing from ARNR filteringAdrian Grange
The ARNR filter uses a motion compensated temporal filter, but the motion estimation implementation accounts for the cost of the mv in its decision making process. The ARNR filter uses a dummy cost table initialized to 0 as a way to ignore the mv costs (which are irrelevant to the filter). This CL modifies the ARNR filter implementation to so that the mv costing is ignored without the requirement for dummy tables. Change-Id: I0dd9620c3b70682f938b2a70912c11d4d7c9284c
2012-04-25Adds search option for best interpolation filter.Deb Mukherjee
Adds a speed feature to conduct a brute force search among a set of available interpolation filters for the best one in an RD sense. There is a gain of 0.4% on derf, 1.0% on Std-HD. Patch 2: A macro added to determine if the encoder state is reset for each new filter tried. Patch 3: rebase, also fixes a bug (decodframe.c) introduced by a couple of missing function pointer assignements. Patch 4: rebase. Change-Id: Ic9ccca9d8c35c6af557449ae867391a2f996cc29
2012-04-25Merge QIMODE experimentYaowu Xu
This commit merge the QI mode experiment. As the experiment affects the encoding of intra coding modes on key frame only, the overall effect of the experiment on encoding tests is insignificant. Change-Id: I9e4e3933adface88867ad429cee3986e529c511d
2012-04-25Merge UVINTRA experimentYaowu Xu
The commit merges the UVINTRA experiment and removed the related macros. The overall effect of the experiment is a small gain (.1% on derf) Change-Id: Ia34b3312fb9b5b34c9ba111bf0fa78c6f78ac80b
2012-04-24Merge "Differential encoding of probability updates" into experimentalDeb Mukherjee
2012-04-24Remove unused header files.Ronald S. Bultje
Change-Id: I8708358bb37edabcbe5dfc755ed18791d9e143c4
2012-04-23Differential encoding of probability updatesDeb Mukherjee
Adds differential encoding of prob updates using a subexponential code centered around the previous probability value. Also searches for the most cost-effective update, and breaks up the coefficient updates into smaller groups. Small gain on Derf: 0.2% Change-Id: Ie0071e3dc113e3d0d7ab95b6442bb07a89970030
2012-04-20Hide some code behind CONFIG_COMP_INTRA_PRED.Ronald S. Bultje
Change-Id: I7c0597dede20cc71145c053f76bd99aaf759d144
2012-04-20change to allow 8x8 transform alwaysYaowu Xu
This commit changed to enable the usage 8x8 transform for all frame type, all resolution and all quantizer range. This has an overall benefit .2% to .3% in term of compression, but more importantly, the difficult clips benefits much more, up to 2% to 3% on clips like football, harbour and so on. We observed some weird humps on very high end on a couple of youtube clips, but have determined the underly cause was the aggressive zbin having an effect of lowering rate with lower quality, which have an impact on slide show clips around 60DB. The commit does not change the association between prediction mode and transform size. Change-Id: I33043bdce6207528ae00b4a4b26d8ff63cfea1f4
2012-04-20added reset of rate estimates for each modeYaowu Xu
This is to prevent the evaluation of a mode from using values left over from a mode evaluated prior in the loop. Change-Id: Ife2c6ceb76d2f7365fd262515d3ae48229033c2d
2012-04-19Fix splitmv/compound prediction when eightpel is enabled.Ronald S. Bultje
Change-Id: I9d6083d54e3d478ec20dc6dc48d3f45eb5c7e16b
2012-04-18Compound prediction for splitmv macroblocks.Ronald S. Bultje
Change-Id: I0af3395500b1cb0ed629249eb6636a0c9322cb18
2012-04-18Added update of mode context pointers in decoderAdrian Grange
With the NEWENTROPY experiment enabled encoding certain clips produced invlid bitstreams, or files that had a high degree of artefacts. This was the results of pointers in MACROBLOCKD not being setup correctly (mode_info_context and prev_mode_info_context). Change-Id: Ice13e1efa8bd122997d2f8f3f1e761c6c16e0403
2012-04-18Merge "Added save coding context & modified MV bounds" into experimentalAdrian Grange
2012-04-17Merge "Added intra mode probabilites into coding_context" into experimentalYaowu Xu
2012-04-17Added intra mode probabilites into coding_contextYaowu Xu
These contexts need to be saved and restored for recode, otherwise encoder/decoder mismatch happens for some clips (eg._mobcal 720p) Change-Id: Ic65cfa0bf56ed0472ecab962ce31394d59d344bf
2012-04-16Bug fix introduced from a recent refactoring of skip coding.Deb Mukherjee
Change-Id: Iccd0f09a4db02a2bad644deb3c76189c5f5612a3
2012-04-13Added save coding context & modified MV boundsAdrian Grange
Added code to save the coding context in vp8_rd_pick_inter_mode when the coding mode is forced to ARF(0,0). Also, modified the MV bounds computation to comply with the change in MV border from 32 to 64 pixels. Change-Id: I96963a6f5f4d04ce84c807ae11e0635177c3ad6c
2012-04-12Turning off interpolation filter selectionDeb Mukherjee
Turning off the interpolation filter selection based on edge proportion. This heuristics has not been working as well as expected and I have started a more rigorous investigation into this. We can turn this off for now since it is unnecessarily slowing things down. Rebase. Change-Id: Ic5958b2b3a35ec2d8eb73b6d81617ca8fbe07e74
2012-04-12a set of minor fixesYaowu Xu
This commit tries to address an issue related to the oddity shown on HD _mobcal clip, where some rather ugly blocks shown in the second frame at low-mid bit rates if the third frame is not made a key frame by he encoder. The fixes include: 1) made calls to sad_16x16 to be consistent with function prototype. 2) remove the error bias to intra and golden in mbgraph search. 3) changed the error accumulation on inter_segment encoding to avoid potential out-of-range. 1) has no effect on encoding results. Encoding test show that the overall effect of the commit helps about .2%(HD) to .3%(cif) Change-Id: I930975a2d0c06252f01c39e0a02351529774e30b
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-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-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-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