summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encodeframe.c
AgeCommit message (Collapse)Author
2013-12-16Merge "Cleaning up encode_sb() and encode_b() functions."Dmitry Kovalev
2013-12-12Enable adaptive pred filter type for sub8x8Jingning Han
This commit enables an adaptive prediction filter type selection for sub8x8 block sizes. In speed 1, it re-uses the filter type of collocated 8x8 block if it is tested in the rate-distortion optimization loop, for the sub8x8 blocks. Otherwise, it runs the normal test over all the three filter types. In speed 2, it re-uses the 8x8 block's prediction filter type, if available. Otherwise, force it to be EIGHTTAP. Compression and speed performance wise: speed 1 derf -0.266% yt -0.138% bus at 2000 kbps: 33766ms -> 30451ms (10% speed-up) football at 600 kbps: 48173ms -> 43786ms (9% speed-up) speed 2 derf -0.026% yt +0.134% bus at 2000 kbps: 18973ms -> 17698ms (6% speed-up) football at 600 kbps: 26748ms -> 25096ms (6% speed-up) Change-Id: I77e097533b969fd3472147225fa79fc98095d342
2013-12-11Cleaning up encode_sb() and encode_b() functions.Dmitry Kovalev
Trying to make encode_sb() more similar to write_modes_sb() and decode_mode_sb() because essentially all branching logic should be the same. Change-Id: Ib7dec7b48fce29418142abad4d1dcfdb1c770735
2013-12-10Merge "Fix a bug"Yaowu Xu
2013-12-10Fix a bugYaowu Xu
In evaluating partition split case, Wrong partition size is used in calling partition_plane_context(). This commit change to use the correct sub partition size. The incorrect partition size used were causing an ASAN error in unit test. Change-Id: Iab695b764bc51cc61580075f2ae4001421132362
2013-12-10Merge "Renaming comp_pred_mode to reference_mode."Dmitry Kovalev
2013-12-09Renaming comp_pred_mode to reference_mode.Dmitry Kovalev
Change-Id: I83ffed2b1878a35ac35f07f9ee74309adc9c7b11
2013-12-06Renaming vp9_get_pred_context_tx_size() function.Dmitry Kovalev
Change-Id: Ia6d6f4dfb1fd1ec0f8ba53796b59a802e9d7881d
2013-12-06Merge "Disable early exit based on distortion in lossless"Jim Bankoski
2013-12-06Disable early exit based on distortion in losslessYaowu Xu
In lossless coding, distortion is always 0. Early exit based on this metric was incorrect. This CL also changed to use best_rd instead of distortion as the metric for easly exit as requested by Jim. Change-Id: I8ef3e407ac03b4abc3283b273f936a68fad5c2ab
2013-12-06Renaming reference mode context calculation function.Dmitry Kovalev
Renames: vp9_get_pred_context_comp_inter_inter => vp9_get_reference_mode_context vp9_get_pred_prob_comp_inter_inter => vp9_get_reference_mode_prob Change-Id: I3bbb69481e6b0c848028667c9269f567f293d3bd
2013-12-05vp9_get_pred_context_intra_inter() clean up.Dmitry Kovalev
Renaming: vp9_get_pred_context_intra_inter => vp9_get_intra_inter_context vp9_get_pred_prob_intra_inter => vp9_get_intra_inter_prob Change-Id: I2c1affea2e84f4e616137c6df82adb11c7845781
2013-12-05Using lookup to determine tx_size in encode_superblock().Dmitry Kovalev
Change-Id: I68d6217db6f67da15380cd59ec5eda0c44da7d34
2013-12-03Moving eob array to the encoder.Dmitry Kovalev
In the decoder we don't need to save eobs, we can pass eob as an argument. That's why removing eob arrays from VP9Decompressor and TileWorkerData, and moving eob pointer from macroblockd_plane to macroblock_plane. Change-Id: I8eb919acc837acfb3abdd8319af63d1bbca8217a
2013-12-02Disable partitioning in the dominant subsampling direction.Alex Converse
E.g. disable vertical partioning for 4:2:2. Until we come up with something better to do with the chroma block size, this prevents an assert error. Change-Id: I9394fb3f14ec1343abc3ad4769de208e6278f285
2013-11-26Removing qcoeff buffers from the decoder.Dmitry Kovalev
We only need qcoeff buffers in the encoder. Reducing TileWorkerData struct and VP9Decompressor struct sizes by 24K. Change-Id: Id148868461f7ffa3d3dd634b371503ae9c57e207
2013-11-25Merge "Removing redundant call of vp9_init_mbmode_probs()."Dmitry Kovalev
2013-11-25Merge "Renaming COMPPREDMODE_TYPE enum and its members."Dmitry Kovalev
2013-11-25In frame Q adjustment experiment.Paul Wilkins
The idea here is to allow "in frame" adjustment of the final Q value used to encode each SB64, using segmentation. There is also adjustment of the rd mult in regions of overspend. Activated using aq_mode=2 Change-Id: I2f140cd898c9f877c32cd6d2e667f5e11ada4b1c
2013-11-22Renaming COMPPREDMODE_TYPE enum and its members.Dmitry Kovalev
List of renames: COMPPREDMODE_TYPE => REFERENCE_MODE SINGLE_PREDICTION_ONLY => SINGLE_REFERENCE COMP_PREDICTION_ONLY => COMPOUND_REFERENCE HYBRID_PREDICTION => REFERENCE_MODE_SELECT (like TX_MODE_SELECT) NB_PREDICTION_TYPES => REFERENCE_MODES Change-Id: If723dabe9435325d0165dcd028142a2c78b417b4
2013-11-22Using partition counts from FRAME_COUNTS struct in the encoder.Dmitry Kovalev
Change-Id: I6c3d47b00acabe7ffba22ffc73741173aa9a0bff
2013-11-20Removing redundant call of vp9_init_mbmode_probs().Dmitry Kovalev
This function is called from vp9_setup_past_independence() which is called before the modified piece of code. Moving reset of inter_mode_probs into vp9_init_mbmode_probs() for consistency. Change-Id: Ib188e8798e1fbe15407fd501406761b746fdda95
2013-11-20Merge "vpxenc: add --aq-mode flag to control adaptive quantization"Guillaume Martres
2013-11-18Move vp9_extend.{h,c} from common to encoderYaowu Xu
Since they used in encoder only. This commit also re-order includes for the files that include vp9_extend.h Change-Id: I929fc113f2135d3198cd1fc6a17434e5a2f8a459
2013-11-15Removing vp9_encodeintra.{h, c} files.Dmitry Kovalev
There was only one function in *.c file, so moving it to vp9_encodemb.c. Change-Id: I728859d08b3d6c05c33c1c5b21f0ea1d0e0f83af
2013-11-15vpxenc: add --aq-mode flag to control adaptive quantizationGuillaume Martres
Change-Id: I57e1ad4bed3487df12893ced77c49093f8755706
2013-11-13Dual buffer encoding for intra modesJingning Han
Overall change (using dual buffer scheme for superblocks of both inter and intra modes) reduces speed 2 runtime: bluesky_1080p at 6000kbps: 263553ms -> 257441ms riverbed_1080p at 8000kbps: 233230ms -> 225308ms. Change-Id: Idf8d70f768a4b0d97b2a8506372c57b7b4022119
2013-11-12Moving q_index from MACROBLOCKD to MACROBLOCK.Dmitry Kovalev
Moving because q_index is used only by encoder. Change-Id: I0b96175614ed4fd3d76ee56a0ba36258e1e896f6
2013-11-12Merge "Enable dual buffer rd search and encoding scheme"Jingning Han
2013-11-12Merge "Using max_tx_size instead of bsize when possible."Dmitry Kovalev
2013-11-12Merge "Moving {sb, mb, b, ab}_index from MACROBLOCKD to MACROBLOCK."Dmitry Kovalev
2013-11-11Enable dual buffer rd search and encoding schemeJingning Han
This commit enables the dual buffer rate-distortion optimization and encoding scheme. It stacks the original transform coefficients, quantized levels, and reconstructed coefficients, in the rate- distortion optimization search process, hence eliminates the need to re-run residual generation, forward transform, and quantization in the encoding stage. Change-Id: I011bfad3a59a380a869ee552e91dae0394ec492e
2013-11-11Allocate dual buffer sets for encodingJingning Han
Allocate memory space of dual buffer sets that store the coeff, qcoeff, dqcoeff, and eobs. Connect the pointers of macroblock_plane and macroblockd_plane to the actual buffer in use accordingly. Change-Id: I2f0b5f482ca879fae39095013eaf8901db20a5a4
2013-11-11Moving {sb, mb, b, ab}_index from MACROBLOCKD to MACROBLOCK.Dmitry Kovalev
We use {sb, mb, b, ab}_index only inside encoder, so moving them into appropriate data structure. Change-Id: Ib5c1036716354d9d321e11a60c1634c1cb8f9716
2013-11-07Removed unused rate parameter.Paul Wilkins
Change-Id: I6e4a266fdbad1d222eb45d45b67bbb82d091821a
2013-11-06Replacing mi_{width,height}_log2 with num_8x8_blocks_{wide,high}_lookup.Dmitry Kovalev
Change-Id: I04c55daef89bca2b85cb7db0850f9b052abc5a7c
2013-11-05Using max_tx_size instead of bsize when possible.Dmitry Kovalev
Change-Id: I246364bc4270ca13aefb4bc3445bcf102b3170dc
2013-11-04Remove unused member variables from VP9_COMPAdrian Grange
Removed three members from the VP9_COMP data structure: inter_zz_count, gf_bad_count, gf_update_recommended. These were part of the VP8 real-time mode implementation that was removed from the initial VP9 codecbase. Change-Id: I866b083b88ef02c74837277d50ce532ca88492f3
2013-10-30Replacing (SWITCHABLE_FILTERS + 1) with SWITCHABLE_FILTER_CONTEXTS.Dmitry Kovalev
Change-Id: I9781a62bc1a4cd9176554d1271d87dbcafda9cb0
2013-10-28Making get_tx_counts() similar to get_tx_probs().Dmitry Kovalev
Change-Id: I5b17f40e515c4bcf9ebef5380270a214af4e0115
2013-10-28vp9: add TileInfoJames Zern
replaces use of cur_tile_mi_(row|col)_(start|end) by VP9_COMMON, making it less stateful and more reusable for parallel tile decoding Change-Id: I1df09382b4567a0e5f4434825d47c79afe2399be
2013-10-28Merge changes ↵James Zern
If9b16f7d,I75aab21c,I9cbb768c,If5cea3d3,I96940657,I025595d8,Ie0bc3935,I3ebb172d * changes: vp9: remove partition+entropy contexts from common vp9: add above/left_context to MACROBLOCKD vp9: add above/left_seg_context to MACROBLOCKD vp9: add above/left_context to encoder vp9: add above/left_seg_context to encoder vp9: pass entropy context directly to set_skip_context vp9: pass context directly to partition functions vp9/decode: add alloc_tile_storage()
2013-10-25vp9: add above/left_context to encoderJames Zern
Change-Id: If5cea3d389bb1135ee490d273e57cc2c43325d01
2013-10-25vp9: add above/left_seg_context to encoderJames Zern
Change-Id: I969406574c6658936e9f6db5752f1b295025aab5
2013-10-25vp9: pass entropy context directly to set_skip_contextJames Zern
this will allow for separate storage to be used in tile decoding Change-Id: I025595d83118bdc82a545dae69bc6602e8d2a6e3
2013-10-25vp9: pass context directly to partition functionsJames Zern
update_partition_context / partition_plane_context: this will allow for separate storage to be used in tile decoding Change-Id: Ie0bc393531ab7e9d2ce35c95111849b294aad4ed
2013-10-24Adding get_frame_new_buffer() function to replace duplicated code.Dmitry Kovalev
Change-Id: I6e0e19231a48364c1de7dfab730b121ab227f111
2013-10-24Merge "Renaming vp9_short_fdct4x4 and vp9_short_walsh4x4."Dmitry Kovalev
2013-10-23Renaming INTERPOLATIONFILTERTYPE to INTERPOLATION_TYPE.Dmitry Kovalev
Change-Id: I1868fb75ed88bfa65c1c2ca24677d65f2894d713
2013-10-23Renaming vp9_short_fdct4x4 and vp9_short_walsh4x4.Dmitry Kovalev
For consistency with idct function names. Renames: vp9_short_fdct4x4 -> vp9_fdct4x4 vp9_short_walsh4x4 -> vp9_fwht4x4 Change-Id: Id15497cc1270acca626447d846f0ce9199770f58