summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_rdopt.c
AgeCommit message (Collapse)Author
2013-05-23Fix a bug in intra4x4 level rd loopJingning Han
This commit fixed a uninitialized value use in the intra 4x4/8x4/4x8 rate-distortion loop. Change-Id: I5c25b3536b59e4f5fbb23cf85baf93b2ccec7d72
2013-05-23Make comp_inter_inter support 4x4 partition codingJingning Han
This commit refactors the iterative motion search for compound inter-inter mode, to make it support all partition types including 4x4/4x8/8x4 block sizes. Change-Id: I5f1212b0f307377291763e45c6bdc9693b5f04c8
2013-05-23Merge Scatter Scan experiment.Paul Wilkins
Removal from under configure flag. A bit renaming Change-Id: I2213229dfe852001dfec16b149f47c52ce88f3aa
2013-05-23Merge 4x4 block level partition into codebaseJingning Han
Move 4x4/4x8/8x4 partition coding out of experimental list. This commit fixed the unit test failure issues. It also resolved the merge conflicts between 4x4 block level partition and iterative motion search for comp_inter_inter. Change-Id: I898671f0631f5ddc4f5cc68d4c62ead7de9c5a58
2013-05-22Merge "Using 128 entry look up table for coef models" into experimentalDeb Mukherjee
2013-05-22Merge "Make the intra rd search support 8x4/4x8" into experimentalJingning Han
2013-05-22Using 128 entry look up table for coef modelsDeb Mukherjee
Reverts to using 128 bit LUT for the coef models rather than 48 to ease hardware implementation. Also incorporates some cleanups including removing various hooks to support different lookup tables based on block_type and ref_type. Change-Id: I54100c120cca07a2ebd3a7776bc4630fa6a153f6
2013-05-22Merge CONFIG_COMP_INTER_JOINT_SEARCH.Paul Wilkins
Merge this experiment so that it is under a speed feature flag not a configuration flag. Change-Id: I536f7f125a4ff5149bb3a64f791e835c324535fd
2013-05-21Make the intra rd search support 8x4/4x8Jingning Han
This commit allows the rate-distortion optimization of intra coding capable of supporting 8x4 and 4x8 partition settings. It enables the entropy coding of intra modes in key frame using a unified contextual probability model conditioned on its above/left prediction modes. Coding performance: derf 0.464% Change-Id: Ieed055084e11fcb64d5d5faeb0e706d30268ba18
2013-05-21Merge "Initial version of alpha channel support" into experimentalJohn Koleszar
2013-05-21Merging the model coef prob experimentDeb Mukherjee
Merges the experiment. Change-Id: I4eb19af6de6df6aa3a96a2e82f231d47ed9b3ae9
2013-05-21Merge "WIP: 4x4 idct/recon merge" into experimentalScott LaVarnway
2013-05-20Adding get_ref_frame_idx function.Dmitry Kovalev
Change-Id: I4f1a4eca6794cda78d00512196caacd5567e2dcc
2013-05-20Updating the model coef experimentDeb Mukherjee
Cleans up the experiment. Actually uses reduced counts for backward updates, and reduced number of probabilities in the context. No change in bitstream when the experiment is on. Between expt on and off: derfraw300 is down only -0.062% (which is better than when expts were run previously). Change-Id: I55285a049a0c22810bdb42914212ab5a4f8521b5
2013-05-20WIP: 4x4 idct/recon mergeScott LaVarnway
This patch eliminates the intermediate diff buffer usage by combining the short idct and the add residual into one function. The encoder can use the same code as well. Change-Id: I296604bf73579c45105de0dd1adbcc91bcc53c22
2013-05-19Enable bit-stream support to 8x4 and 4x8 partitionJingning Han
The recursive partition type search is enabled down to 4x4, 4x8 and 8x4, followed by the corresponding rate-distortion optimization for the per-partition encoding mode decisions. The bit-stream writing/reading synchronized in supporting the rectangular partition of 8x8 block. This provides above 1% coding performance gains on derf. To do next: 1. re-design the rate-distortion loop for inter prediction below 8x8. 2. re-design the rate-distortion loop for intra prediction below 4x4. 3. make the loop-filter aware of rectangular partition of 8x8 block. 4. clean the unused probability models. 5. update default probability values. Change-Id: Idd41a315b16879db08f045a322241f46f1d53f20
2013-05-16Initial version of alpha channel supportJohn Koleszar
This is a mostly-working implementation of an extra channel in the bitstream. Configure with --enable-alpha to test. Notable TODOs: - Add extra channel to all mismatch tests, PSNR, SSIM, etc - Configurable subsampling - Variable number of planes (currently always uses all 4) - Loop filtering - Per-plane lossless quantizer - ARNR support This implementation just uses the same contents as the Y channel for the A channel, due to lack of content and general pain in playing back 4 channel content. A later patch will use the actual alpha channel passed in from outside the codec. Change-Id: Ibf81f023b1c570bd84b3064e9b4b8ae52e087592
2013-05-16Add building blocks for 4x8/8x4 rd searchJingning Han
These building blocks enable rate-distortion optimization search over block sizes of 8x4 and 4x8. Need to convert them into mmx/sse forms. Change-Id: I570ea2d22d14ceec3fe3575128d7dfa172a577de
2013-05-15Fix the transform type selection in 4x4 partitionJingning Han
This commit allows proper transform type (DCT/ADST) selection in the settings of partition 4x4 level. Change-Id: Iec6f922a46480d777e7ca9142a99e8c131f0077b
2013-05-14Enable recursive partition down to 4x4Jingning Han
This commit allows the rate-distortion optimization recursion at encoder to go down to 4x4 block size. It deprecates the use of I4X4_PRED and SPLITMV syntax elements from bit-stream writing/reading. Will remove the unused probability models in the next patch. The partition type search and bit-stream are now capable of supporting the rectangular partition of 8x8 block, i.e., 8x4 and 4x8. Need to revise the rate-distortion parts to get these two partition tested in the rd loop. Change-Id: I0dfe3b90a1507ad6138db10cc58e6e237a06a9d6
2013-05-14Merge "Do joint motion search iteratively" into experimentalYunqing Wang
2013-05-13Do joint motion search iterativelyYunqing Wang
Allow motion search multiple times iteratively, and break out the loop if this search couldn't find better motion vectors. Limit the maximum number of search to 2. Tests results: 1. stdhd set: 0.311%(overall psnr); 0.346%(ssim). positive gain on 10 out of 16 clips(best: 2.746% on sunflower; worst: -0.434% on old_town_cross). 2. derf set: 0.016%(overall psnr); 0.062%(ssim). positive gain on half of the clips(best: 0.499% on bowing; worst: -0.387 on city). Change-Id: Ibf0a51776d4caf7707be0586346db08128117559
2013-05-13Merge "Force bsize for UV in I4X4 and SPLITMV" into experimentalJingning Han
2013-05-13Change to band calculation.Paul Wilkins
Change band calculation back to simpler model based on the order in which coefficients are coded in scan order not the absolute coefficient positions. With the scatter scan experiment enabled the results were appear broadly neutral on derf (-0.028) but up a little on std-hd +0.134). Without the scatterscan experiment on the results were up derf as well. Change-Id: Ie9ef03ce42a6b24b849a4bebe950d4a5dffa6791
2013-05-11Force bsize for UV in I4X4 and SPLITMVJingning Han
Use 4x4 block coding for UV components arbitrarily in I4X4_PRED and SPLITMV coding modes. This is a temporary solution to enable bit-stream support for recursive partition down to 4x4 block size. Will separate the functionalities of 4x4 block coding rate-distortion out from those of superblocks. Change-Id: I03dc15d5897014f175f3f2c91e9b266091d56797
2013-05-10Remove unused mdcountsYunqing Wang
mdcounts seems no longer used. Change-Id: Idd8162e8acfa3f5be7a18767156cc79ccbc2bdee
2013-05-10Add joint motion search in comp_inter_inter mode(experiment)Yunqing Wang
In current code, motion vectors got from single prediction mode are used in compound prediction mode directly. These motion vectors may not give accurate prediction since they are searched independently. In this patch, we took Pascal's suggestion, and did joint motion search in compound prediction mode to find better motion vectors in this situation. Test results: Overall PSNR: 0.570%(derf), 0.918%(stdhd); SSIM: 0.572%(derf), 1.009%(stdhd); The encoder is a little slower. This can be improved since some c code is used in motion search. Change-Id: Ib30c9240f6c56c9b070867b4ca89412a76d9f3c6
2013-05-08Merge "Renaming 'Speed' to 'speed' inside VP9_COMP struct." into experimentalDmitry Kovalev
2013-05-08Removing y_to_uv_block_size and y_bsizet_to_block_size functions.Dmitry Kovalev
Change-Id: I49527ff8dd8bef1074c18a964fed2a575f0b118a
2013-05-08Renaming 'Speed' to 'speed' inside VP9_COMP struct.Dmitry Kovalev
Change-Id: I4374b5af40ee9082ddf7956a9756a15ad9ad5436
2013-05-07Make switchable filter search subsampling-awareJohn Koleszar
Makes the temporary storage of the filtered data agnostic to the number of planes and how they're subsampled. Change-Id: I12f352cd69a47ebe1ac622af30db29b49becb7f4
2013-05-07Merge "Make setup_pred_block subsampling-aware." into experimentalJohn Koleszar
2013-05-07Merge "Adding get_switchable_rate function." into experimentalDmitry Kovalev
2013-05-07Deprecate code_zerogroup experiment.Paul Wilkins
Delete code under the CONFIG_CODE_ZEROGROUP flag. Change-Id: I5fe6c7b42a5da9b73118e33594301da4129f320a
2013-05-07Adding get_switchable_rate function.Dmitry Kovalev
Change-Id: I71311a14f8d7f48508b250f25d1d0914c6a1ac72
2013-05-07Deprecate comp_interintra_pred experiment.Paul Wilkins
Delete code under the CONFIG_COMP_INTERINTRA_PRED flag. Change-Id: I3d1079cf46305c08f7e11d738596ea112e7b547f
2013-05-07Deprecate the newbintramode experiment.Paul Wilkins
Clean out code relating to newbintramode. Change-Id: Ie91f4f156cdf60ce0da8ca407c1c9cb00c7d0705
2013-05-07Add building blocks for partition down to 4x4Jingning Han
Macro ab4x4 contains experiments for recursive partition down to 4x4 block size. Change-Id: Ic727842fa98a4df9fd51e0025a545dc76a5c76c1
2013-05-07Make setup_pred_block subsampling-aware.John Koleszar
Code previously set up the pointers by scaling by MI_UV_SIZE, which is 4:2:0 only. Change-Id: Ic13a92895cff018ec1345736746ed84cb31e6e31
2013-05-07Merge SB8X8 into the codebaseJingning Han
Pull sb8x8 out of experimental list. verified via borg run tests. Fixed unit test failures. Change-Id: I12a4bbd17395930580c048ab68becad1ffe46e76
2013-05-06Adding model_rd_for_sb function.Dmitry Kovalev
Iterating over all planes in the loop instead of custom y,uv code inside handle_inter_mode function. Change-Id: I301f9276d6d544c2fd7203d84f1318ac80ea625d
2013-05-06Fix a unit test failure of sb8x8 on scaling refJingning Han
Disable the use of scaled reference frame for motion search in SPLITMV mode. This fixes the unit test failure issue triggered when merging sb8x8 from experimental list. Change-Id: I02ac25fd8db8d5762f8fee29513b947189875fa0
2013-05-04Fix first-pass intra4x4 for sb8x8 experiment.Ronald S. Bultje
Change-Id: I1df17f45721c690d157800daa6a0b377e3d32bc2
2013-05-03Merge "Fix overflow in RD error calculation code." into experimentalRonald S. Bultje
2013-05-03Merge "Separate transform and quant from vp9_encode_sb" into experimentalJohn Koleszar
2013-05-03Separate transform and quant from vp9_encode_sbJohn Koleszar
This allows removing a large number of transform size specific functions, as well as supporting 444/alpha by routing all code through the subsampling-aware path. Change-Id: Ieb085cebe9f37f24fc24de179898b22abfda08a4
2013-05-03Fix overflow in RD error calculation code.Ronald S. Bultje
Change-Id: I61ef1f198c876f9f79787ea7d7385a862cfbae19
2013-05-02Removing MAXF macro and using MAX instead.Dmitry Kovalev
Change-Id: I51c53692b1150005645bf362c5e5a8275178a8fd
2013-05-01Store splitmv modes in context after 8x8 rd loop.Ronald S. Bultje
Change-Id: I07aa89a67e0ac5f99ef0c448553dbc46b0ed27f2
2013-05-01Fix some crashes in sb8x8 experiment.Ronald S. Bultje
Change-Id: I390bb1cedc835f439fd5dd6cda6572b29cbb139c