summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encodemb.c
AgeCommit message (Collapse)Author
2014-07-08Re-design quantization process for 32x32 transform blockJingning Han
This commit enables a new quantization process for 32x32 2D-DCT transform coefficient blocks. It improves the compression performance of speed 5 by 1.4%. The overall compression gains of speed 5 due to the new quantization scheme is 4.7%. It also includes the SSSE3 implementation of the 32x32 quantization process. Change-Id: I0855b124fd6462418683f783f5bcb44255c9993b
2014-07-02Split vp9_rdopt into vp9_rdopt and vp9_rd.Alex Converse
vp9_rdopt is for making rd optimal mode decisions. vp9_rd is for all other rd related routines. Anything used outside of making an rd optimal decision belongs in rd. Change-Id: I772a3073f7588bdf139f551fb9810b6864d8e64b
2014-07-01Merge "Re-design quantization process"Yaowu Xu
2014-07-01Re-design quantization processJingning Han
This commit re-designs the quantization process for transform coefficient blocks of size 4x4 to 16x16. It improves compression performance for speed 7 by 3.85%. The SSSE3 version for the new quantization process is included. The average runtime of the 8x8 block quantization is reduced from 285 cycles -> 255 cycles, i.e., over 10% faster. Change-Id: I61278aa02efc70599b962d3314671db5b0446a50
2014-06-18BITSTREAM: Handle transform size and motion vectors more logically for non-420.Alex Converse
This breaks the profile 1 bitstream. Don't force non420 uv transform size to 1/4 y size. In the 4:2:0 case the chroma corresponding to a luma block is 1/4 its size. In the 4:4:4 case chroma and luma planes are the same size. Disallowing larger transforms can result in a loss of compression efficiency and is inconsistent. For sub-8x8 blocks only average corresponding motion vectors. 4:2:0 and profile 0 behavior remains unchanged. Change-Id: I560ae07183012c6734dd1860ea54ed6f62f3cae8
2014-06-12Fast computation path for forward transform and quantizationJingning Han
This commit enables a fast path computational flow for forward transformation. It checks the sse and variance of prediction residuals and decides if the quantized coefficients are all zero, dc only, or more. It then selects the corresponding coding path in the forward transformation and quantization stage. It is currently enabled in rtc coding mode. Will do it for rd coding mode next. In speed -6, the runtime for pedestrian_area 1080p at 1000 kbps goes down from 14234 ms to 13704 ms, i.e., about 4% speed-up. Overall coding performance for rtc set is changed by -0.18%. Change-Id: I0452da1786d59bc8bcbe0a35fdae9f623d1d44e1
2014-05-21Moving itxm_add pointer from MACROBLOCKD to MACROBLOCK.Dmitry Kovalev
The final goal is eventually to get rid of both itxm_add and fwd_txm4x4. This patch does it in the decoder. Change-Id: Ibb3db57efbcbb1ac387c6742538a9fcf2c6f24a5
2014-05-12Cleanup unused parametersYaowu Xu
Remove unused function parameters from: vp9_encodemb.c vp9_encodeframe.c Change-Id: I07725e5099cf98486e70c9c70babb0cd785c58a9
2014-04-29Removing unused alt_activity_measure() function.Dmitry Kovalev
Change-Id: I6b520553cb5334b44356dc4651a2dbc1cb93cca5
2014-04-22Renaming MB_PREDICTION_MODE to PREDICTION_MODE.Dmitry Kovalev
Actually, it would be great to have two separate enums INTRA_MODES and INTER_MODES in future. Change-Id: I6c4147cf0002853da9c1e03fe9514eab876f01c8
2014-04-10Cleaning up optimize_b().Dmitry Kovalev
Change-Id: I81eb1e931e00acfcb65f824e394bbe7795d6deaa
2014-04-10Cleaning up optimize_b().Dmitry Kovalev
Change-Id: I5c62fabd380492740c1c2c0d71861e64ee1b05e8
2014-04-01Renaming two members in MACROBLOCKD struct.Dmitry Kovalev
Renames: mi_8x8 -> mi mode_info_stride -> mi_stride Change-Id: I66f3e5fd1e7b7f46f108af5bb711c5fd9493c1be
2014-03-18Fix the use of uninitialized skip flagJingning Han
The use of uninitialized skip flag will trigger inconsistency in coding statistics, when alternate RD and non-RD coding modes are enabled. This commit fixes this issue and removes unnecessary if statements from update_state_rt. Change-Id: I7d549dcb0e3ef48b999e5bbc78174ba84502cfcf
2014-03-06Cleaning up optimize_b() function.Dmitry Kovalev
Change-Id: Id4c5b73ad747a8851969e9daf5bac40b4b9beefc
2014-03-03Adding get_tx_type() instead of get_tx_type_{8x8, 16x16}.Dmitry Kovalev
Change-Id: I4a54b12e5229705222c5a101258b9d1f81e2948d
2014-02-28Merge "Adding get_y_mode() function."Dmitry Kovalev
2014-02-27Adding get_y_mode() function.Dmitry Kovalev
Change-Id: Iaac57b24f79cd205a8c62bc1177412d22f5787a8
2014-02-27Inlining optimize_init_b() function.Dmitry Kovalev
Change-Id: If41459f8ba186bb47d977b76e2f4bab97078462d
2014-02-27Cleaning up vp9_xform_quant() function.Dmitry Kovalev
Change-Id: Id56089107b7458aa59f345edc1b49e62eac41035
2014-02-26Moving common code into vp9_get_entropy_contexts().Dmitry Kovalev
Change-Id: I197670a405f7c2e7796424faa187a61081db8567
2014-02-26Merge "Cleaning up vp9_encodemb.c file."Dmitry Kovalev
2014-02-26Cleaning up vp9_encodemb.c file.Dmitry Kovalev
Usage of encode_b_args is unnecessary because encode_block_pass1() doesn't use them. That's why optimize_init_b() call is also not required. Change-Id: Ib6cfe4916c2ca85749c90bb0adcba6fea592f9ac
2014-02-25Removing vp9_optimize_b() function.Dmitry Kovalev
Change-Id: If859c9d58a8fe3f478d409b9e9ca59bcee8fd35d
2014-02-25Merge "Using vp9_subtract_plane instead of vp9_subtract_{sb, sby, sbuv}."Dmitry Kovalev
2014-02-17Using vp9_subtract_plane instead of vp9_subtract_{sb, sby, sbuv}.Dmitry Kovalev
Change-Id: I67a82a347245076b6c3b0bc41b587f9961a29943
2014-02-17Cleaning up vp9_encodemb.c.Dmitry Kovalev
Change-Id: Ia5b35494e4e18758f9f6c172526db83a87fdaa26
2014-02-13Cleanup: removing "ptr" suffix from var names.Dmitry Kovalev
Change-Id: If8e340dd6823323025a12f851e78fffdbcaaf6f8
2014-02-12Renaming skip_coeff to skip for consistency.Dmitry Kovalev
Change-Id: I036e815ca63d00cba71202ae09ba0f6ef745dcb8
2014-02-11Removing vp9_foreach_transformed_block_uv() function.Dmitry Kovalev
Change-Id: I35ec77b71e6fd686865cead9281e4dd9e9bc9e86
2014-02-08Hiding encode_b_args struct inside vp9_encodemb.c.Dmitry Kovalev
Change-Id: I5bcd32874f8a8a693e3eb68ef6728dfbf5475bda
2014-02-06Finally removing "short" from transform names.Dmitry Kovalev
Change-Id: I5259b68dc1bcceb153e3ffe638a79a59a3019e9d
2014-01-31static function convert to inline or global vp9_blockd.hJim Bankoski
Change-Id: Ifdd951f24932839f06d1c700371662511dde6ebe
2014-01-29Merge "create super fast rtc mode"Yaowu Xu
2014-01-29Finally removing vp9_setup_interp_filters() function.Dmitry Kovalev
Change-Id: If446225afbb49f6033c2a4516a37c377de6f70f7
2014-01-29create super fast rtc modeJim Bankoski
This patch only works if the video is a width and height that are both a multiple of 32.. It sets every partition to 16x16, and does INTRADC only on the first frame and ZEROMV on every other frame. It always does does the largest possible transform, and loop filter level is set to 4. Was ~20% faster than speed -5 of vp8 Now 20% slower but adds motion search ( every block ), nearest, near and zeromv The SVC test was changed because - while this realtime mode produces bad quality albeit quickly, it isn't obeying all the rules it should about which frames are available. Change-Id: I235c0b22573957986d41497dfb84568ec1dec8c7
2014-01-27Decoupling set_ref_ptrs() and vp9_setup_interp_filters().Dmitry Kovalev
Change-Id: I8d17867a4772554cbba2bd113cc5b4c99d50146d
2014-01-24Removing subpix_fn_table struct.Dmitry Kovalev
We don't use different filter kernels for x and y, it is always one kernel for both directions. Change-Id: Iefcbb02ec74bf46ea20d9dca672a3efd5d631517
2014-01-24Renaming INTERPOLATION_TYPE to INTERP_FILTER.Dmitry Kovalev
Corresponding renames: subpel_kernel => interp_kernel vp9_get_filter_kernel() => vp9_get_interp_kernel() pred_filter_type => pred_interp_filter adaptive_pred_filter_type => adaptive_pred_interp_filter mcomp_filter_type => interp_filter read_interp_filter_type() => read_interp_filter() write_interp_filter_type() => write_interp_filter() fix_mcomp_filter_type() => fix_interp_filter() Change-Id: I1fa61fa1dc81ebbf043457c3ee2d8d4515bee6d3
2014-01-22Rename set_scale_factors as set_ref_ptrsAdrian Grange
New name better describes what the function does. Change-Id: I33be1366a81f058a9854b804bcde211061187dc7
2014-01-14As you go mbmi->skip_coeffJim Bankoski
Calculate the skip_coeff as part of the encode process, rather than checking the eobs after the fact with another pass. Change-Id: Ib41b139e96a97dee30e4b993b4cc53d86337128d
2013-12-19Using single struct to represent scale factors.Dmitry Kovalev
Moving back to scale_factors struct. We don't need anymore x_offset_q4 and y_offset_q4 because both values are calculated locally inside vp9_scale_mv function. Change-Id: I78a2122ba253c428a14558bda0e78ece738d2b5b
2013-12-16Merge "Remove border extension in intra frame prediction."hkuang
2013-12-16Remove border extension in intra frame prediction.hkuang
Change-Id: Id677df4d3dbbed6fdf7319ca6464f19cf32c8176
2013-12-13Merge "vp9 asserts: fix compile warning"James Zern
2013-12-13Rename so -> scan_order in vp9_encodemb.cJingning Han
Change-Id: I7ff2899ea18a55b37f5c581431ef59806f01e009
2013-12-12vp9 asserts: fix compile warningJames Zern
string literal to int within an assert Change-Id: I0c889256b67a078e6e2a79577f0b7ae084243258
2013-12-11Little cleanup in vp9_encode_block_intra().Dmitry Kovalev
Change-Id: Ibfe04b920648e15bf7116f4fdc98960572a7007e
2013-12-04Merge "Cleaning up vp9_entropy.h file."Dmitry Kovalev
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