summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encodemb.c
AgeCommit message (Collapse)Author
2015-03-03dc quantizer fix for 32x32 transformsDeb Mukherjee
The rounding factor needs to be scaled down by a factor of 2. Also, the quantized and dequantized coefficients are memset to 0 when dc quantizer is used. Change-Id: Ifa68bab02addbf1b83d249c5b4cbd5cda796b1cf
2015-01-05Fix compiler warnigns for msvc2013Yaowu Xu
Change-Id: I1e32bf8f6872a6fb7e9cabe86483e94805e2f790
2014-12-23WIP: Remove giant value cost tableJim Bankoski
Change-Id: Iabe8a8868a747626c24bb13f1796f4c7827af367
2014-12-22Merge "Revert "Revert "Removal of legacy zbin_extra / zbin_oq_value."""Jim Bankoski
2014-12-22Revert "Revert "Removal of legacy zbin_extra / zbin_oq_value.""Jingning Han
This reverts commit 9946ee23e0a4c158e26a505b162a072f81b8a3be. Fix the ssse3 asm function. Change-Id: I07f77a63aa98087626e45c4e87aa5dcafc0b0b07
2014-12-22Tokenization without huge tables.Jim Bankoski
Change-Id: Iff528c4b7528cc70320343b3a7ce07a92b024dfd
2014-12-19Revert "Removal of legacy zbin_extra / zbin_oq_value."Paul Wilkins
This reverts commit e9b586e21bb899e247346e82bccf5afb42604910. Change-Id: I5b36e6727da6c05278d97e2c37b80c109f79bed4
2014-12-18Removal of legacy zbin_extra / zbin_oq_value.Paul Wilkins
zbin extra / zbin_oq_value was widely passed around, hence removal touches a lot of code. Change-Id: Idc94359735b60c38a160e4385ae09d5ca8b6b8e5
2014-12-04Use the RTC optimizations when in high bitdepth mode.Peter de Rivaz
Change 72193 made the encoder behave differently when configured with and without high bitdepth. This change means the same algorithm is used for both. Change-Id: I707a44a94afca773a9e0c2f7ebeeea83030257c5
2014-11-21Rework forward txfm/quantization skip system in RTC coding modeJingning Han
This commit allows more aggressive decision to skip forward transform and quantization for luma component in RTC coding mode. The chroma components remains going through the normal coding routine, since they are not included in the non-RD mode search process. It reduces the runtime cost by 2% - 10%. In speed -6, vidyo1 1000 kbps 16576 b/f, 40.281 dB, 8402 ms -> 16576 b/f, 40.323 dB, 7764 ms nik720p 1000 kbps 33337 b/f, 38.622 dB, 7473 ms -> 33299 b/f, 38.660 dB, 7314 ms dark720p 1000 kbps 33330 b/f, 39.785 dB, 13505 ms -> 33325 b/f, 39.714 dB, 13105 ms The compression performance of speed -6 is improved by 0.44% in PSNR and 1.31% in SSIM. Change-Id: Iae9e3738de6255babea734e5897f29118bebc6d7
2014-11-18Combine fdct8x8 and quantization processJingning Han
This commit reworks the forward transform and quantization process for 8x8 block coding. It combines the two operations in a single function to save a store/load stage of the original transform coefficients. Overall the speed -6 is slightly faster (around 1% range). The compression performance of speed -6 is improved by 3.4%. Change-Id: Id6628daef123f3e4649248735ec2ad7423629387
2014-10-28Combine vp9_encode_block_intra and encode_block_intraHui Su
Change-Id: I79091fb677b64892ecca2fb466fde14602d8cdfc
2014-10-09Rename highbitdepth functions to use highbd prefixDeb Mukherjee
Uses highbd_ prefix convention consistently. Change-Id: I58f7f799a7ff8e32701bcd71c955bcf1cdd4581e
2014-10-07Take out repeated block width/height lookup functionsJingning Han
The functions b_width_log2 and b_height_log2 only do direct table fetch. This commit unifies such use cases by using the table directly and removes these functions. Change-Id: I3103fc6ba959c1182886a2799d21b8b77c8a7b6b
2014-09-26Fix a bug introduced in a previous patch on highbdDeb Mukherjee
Change-Id: Ice692334f75157446a44a6e81503cada977934f4
2014-09-25Adds various high bit-depth encode functionsDeb Mukherjee
Change-Id: I6f67b171022bbc8199c6d674190b57f6bab1b62f
2014-09-19Remove mi_grid_* structures.hkuang
mi_grid_* are arrays of pointer to pointer. They save the pointers that point to the MIs in cm->mi. But they are unnecessary and complicated. The original goal was to remove MODE_INFO_t copy. But with an extra MODE_INFO_t pointer inside MODE_INFO_t, same goal could be achieved. This commit totally removes the mi_grid_* structures. But there are still many dummy MODE_INFO_t inside cm->mi which are a waste of memory. Next commit will do on-demand MODE_INFO_t allocation in order to save these memories. Change-Id: I3a05cf1610679fed26e0b2eadd315a9ae91afdd6
2014-09-15Merge "Refactor encode_superblock function"Yunqing Wang
2014-09-12Refactor encode_superblock functionYunqing Wang
The code covers both x->skip=0 & x->skip=1 cases. Change-Id: I09745c10e5994dc700ae4c01b4b62979cdaf3306
2014-09-11Adds high bitdepth transform functions and testsDeb Mukherjee
Adds various high bitdepth transform functions and tests. Much of the changes are related to using typedefs tran_low_t and tran_high_t for the final transform cofficients and intermediate stages of the transform computation respectively rather than fixed types int16_t/int. When vp9_highbitdepth configure flag is off, these map tp int16_t/int32_t, but when the flag is on, they map to int32_t/int64_t to make space for needed extra precision. Change-Id: I3c56de79e15b904d6f655b62ffae170729befdd8
2014-08-29Extend block level sse to support multiple txfm blocksJingning Han
This commit extends the sse and forward transform computation flag to support the case 64x64 blocks where there are 4 32x32 2D-DCT blocks. Change-Id: I86a3e805dfaa0f3abd812f590520c71aa0e40473
2014-08-11Merge "Integrate fast txfm and quant path into skip_recode system"Jingning Han
2014-08-11Merge "Extend skip_txfm flag into array to cover YUV planes"Jingning Han
2014-08-06Integrate fast txfm and quant path into skip_recode systemJingning Han
This commit integrates the fast transform and quantization process into skip_recode scheme in the rate-distortion optimization loop. Previously the fast transform and quantization process was only enabled for non-RD coding flow. Change-Id: Ib7db4d39b7033f1495c75897271f769799198ba8
2014-08-05Extend skip_txfm flag into array to cover YUV planesJingning Han
Change-Id: Ieae182d72d625d0d3fd4ed7c7d24cb521a0f21b0
2014-08-04break at the end of clauses with assert(0) to avoid gcc warningJim Bankoski
Change-Id: I1b3c5337f018dde27dc819ab18bd081d169a91e8
2014-08-04uint8_t segment and skip to avoid signed / unsigned warningsJim Bankoski
Change-Id: I2e2765b851fb0a1b15351c2aa0e079197cbee373
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