summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-05-15Merge "Firstpass.c refactoring" into experimentalPaul Wilkins
2012-05-15Merge "Two pass refactoring continued." into experimentalPaul Wilkins
2012-05-15Merge "Two pass rc refactoring." into experimentalPaul Wilkins
2012-05-15Changed to use integer 8x8 dctYaowu Xu
The commit added an integer version of 8x8 forward DCT, based on the orginal forward DCT from VP6. The constants, roundings, and shifts were adjusted to improve the accuracy. The latest patch has a very similar accuracy in term of round trip error against the floating point version. It should be noted here that the purpose of the patch is to help encoding speed and facilitate all other experiments. There will be futher review in combination with inverse DCT before finalization. configure with "--enable--int_8x8fdct" to use the integer version Change-Id: I5a4f80507429f0e07cf02a13768ec81cbfddc5bc
2012-05-15Firstpass.c refactoringPaul Wilkins
Removed unused function. Added tentative code to take error score of an older frame into account when calculating Q range. However, for now it is disabled pending merging other changes and testing. Change-Id: Ie89955e70319dac31b79e3b833e3352712a061ec
2012-05-15Merge "First pass overhaul preparatory change." into experimentalPaul Wilkins
2012-05-14Merge "Reversible WHT pair" into experimentalYaowu Xu
2012-05-14Merge "Don't use compound prediction for golden frames based on alt-ref ↵Ronald S. Bultje
frames." into experimental
2012-05-14Two pass refactoring continued.Paul Wilkins
Remove testing of whether we estimate that it will be possible to code an arf at a lower Q than the ambient Q. This adds quite a bit of extra code and complexity for marginal gain. Factored out some code relating to ARNR selection to a separate function as this is likely to be changed / simplified soon. Change-Id: Ia1cf060405637ef5bbf7018355437be21d12375f
2012-05-14Two pass rc refactoring.Paul Wilkins
Removed odd *100 >> 4 factor from boost calculations. Not all the calculations exactly match what was there before so there may be some minor impact on results. Some other minor tidying up in regard to coding conventions. The specific values of factors and thresholds will likely change as part of subsequent patches. Change-Id: Id976321484ac02ba50294cf54fafbc17dda85686
2012-05-11Don't use compound prediction for golden frames based on alt-ref frames.Ronald S. Bultje
These frames can force reference frame (arf), mode (zeromv) and skip, which means that if we use compound prediction (i.e. arf+last), we might use a blend of a perfect (arf) and an imperfect (last) predictor, leading to semi-garbage display and thus a huge drop in SSIM/PSNR (up to 10dB for some frames I analyzed). Gives a +0.2% gain on YT. Change-Id: If1f2b7899ad165684af3808fd379295e82558cbb
2012-05-11Merge "Improved index remapping for prob updates." into experimentalDeb Mukherjee
2012-05-11First pass overhaul preparatory change.Paul Wilkins
This is the first patch in a series of changes to the first pass code. (Broken down for ease of testing/merging/review). This patch introduces a new stats element "sr_coded_error". This is the coded error recorded vs the second reference frame (which is updated such that it lags by at least one frame). No use is made of the new structure in this change so this patch should have no material effect. Removed some ifdefs and deprecated code (#if NEW_BOOST). Removed twopass.gf_decay_rate (not used any more) Change-Id: I1be672a73017f7c13fd50fb4f99236aa2ed30916
2012-05-11Fix configure issue with unit test add. Jim Bankoski
Change-Id: I960c6eb81f8d76c958e8af989700447f581a8812
2012-05-11add unit test support via google testJames Berry
adds unit testing via google test Change-Id: I144b50a976d79251fc5135186a4e0a5051ed0e8c
2012-05-10Reversible WHT pairYaowu Xu
This commit changed the forward and the inverse 4x4 Walsh Hadamard transform to a new pair, where the inverse transform can pefectly reconstuct the input to forward transform. It also does so without changing the input and output value range. Even more, it does not change the complexity of the transforms. While it was not expected to improve the results of our current test, it does improve std-hd set by 0.2% on all metrics. No change on derf. Change-Id: Ie4f23ddd3a0f3c5fbe97fb58399f860031f99337
2012-05-09Improved index remapping for prob updates.Deb Mukherjee
Also includes some clean ups and refactoring. Rebased. Change-Id: I268c97fe325b4881103fe19f41ae818569e7ccf7
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-05-01Added usage info on command line optionsYaowu Xu
This commit added usage information that was missed in usage output. Change-Id: If1a85bcc20131314f5d047c6db4e76a40d945e66
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