From: hui su Date: Thu, 30 Jul 2015 18:31:59 +0000 (-0700) Subject: code cleanup in encode_block_intra X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d5eaca7fee6890784830d2468dba3aaf42e695bc;p=libvpx code cleanup in encode_block_intra Change-Id: I376b7e9b243178d79141a96e0aeafcbc15758e97 --- diff --git a/vp9/encoder/vp9_encodemb.c b/vp9/encoder/vp9_encodemb.c index b86a3d466..9416624cb 100644 --- a/vp9/encoder/vp9_encodemb.c +++ b/vp9/encoder/vp9_encodemb.c @@ -2867,7 +2867,7 @@ static void encode_block_intra(int plane, int block, BLOCK_SIZE plane_bsize, tran_low_t *qcoeff = BLOCK_OFFSET(p->qcoeff, block); tran_low_t *dqcoeff = BLOCK_OFFSET(pd->dqcoeff, block); const scan_order *scan_order; - TX_TYPE tx_type; + TX_TYPE tx_type = DCT_DCT; PREDICTION_MODE mode; #if CONFIG_FILTERINTRA int fbit = 0; @@ -3457,19 +3457,29 @@ static void encode_block_intra(int plane, int block, BLOCK_SIZE plane_bsize, } #endif // CONFIG_VP9_HIGHBITDEPTH + mode = plane == 0? + (tx_size == TX_4X4 ? get_y_mode(xd->mi[0].src_mi, block) : mbmi->mode) : + mbmi->uv_mode; + if (tx_size >= TX_32X32) { + scan_order = &vp9_default_scan_orders[tx_size]; + } else { + tx_type = tx_size == TX_4X4 ? get_tx_type_4x4(pd->plane_type, xd, block) : + get_tx_type(pd->plane_type, xd); + scan_order = &vp9_intra_scan_orders[tx_size][tx_type]; + } + + vp9_predict_intra_block(xd, block >> (2 * tx_size), bwl, tx_size, mode, +#if CONFIG_FILTERINTRA + fbit, +#endif + x->skip_encode ? src : dst, + x->skip_encode ? src_stride : dst_stride, + dst, dst_stride, i, j, plane); + switch (tx_size) { #if CONFIG_TX64X64 case TX_64X64: assert(plane == 0); - scan_order = &vp9_default_scan_orders[TX_64X64]; - mode = plane == 0 ? mbmi->mode : mbmi->uv_mode; - vp9_predict_intra_block(xd, block >> 8, bwl, TX_64X64, mode, -#if CONFIG_FILTERINTRA - fbit, -#endif - x->skip_encode ? src : dst, - x->skip_encode ? src_stride : dst_stride, - dst, dst_stride, i, j, plane); if (!x->skip_recode) { vp9_subtract_block(64, 64, src_diff, diff_stride, src, src_stride, dst, dst_stride); @@ -3503,15 +3513,6 @@ static void encode_block_intra(int plane, int block, BLOCK_SIZE plane_bsize, break; #endif // CONFIG_TX64X64 case TX_32X32: - scan_order = &vp9_default_scan_orders[TX_32X32]; - mode = plane == 0 ? mbmi->mode : mbmi->uv_mode; - vp9_predict_intra_block(xd, block >> 6, bwl, TX_32X32, mode, -#if CONFIG_FILTERINTRA - fbit, -#endif - x->skip_encode ? src : dst, - x->skip_encode ? src_stride : dst_stride, - dst, dst_stride, i, j, plane); if (!x->skip_recode) { vp9_subtract_block(32, 32, src_diff, diff_stride, src, src_stride, dst, dst_stride); @@ -3544,16 +3545,6 @@ static void encode_block_intra(int plane, int block, BLOCK_SIZE plane_bsize, vp9_idct32x32_add(dqcoeff, dst, dst_stride, *eob); break; case TX_16X16: - tx_type = get_tx_type(pd->plane_type, xd); - scan_order = &vp9_intra_scan_orders[TX_16X16][tx_type]; - mode = plane == 0 ? mbmi->mode : mbmi->uv_mode; - vp9_predict_intra_block(xd, block >> 4, bwl, TX_16X16, mode, -#if CONFIG_FILTERINTRA - fbit, -#endif - x->skip_encode ? src : dst, - x->skip_encode ? src_stride : dst_stride, - dst, dst_stride, i, j, plane); if (!x->skip_recode) { vp9_subtract_block(16, 16, src_diff, diff_stride, src, src_stride, dst, dst_stride); @@ -3584,16 +3575,6 @@ static void encode_block_intra(int plane, int block, BLOCK_SIZE plane_bsize, vp9_iht16x16_add(tx_type, dqcoeff, dst, dst_stride, *eob); break; case TX_8X8: - tx_type = get_tx_type(pd->plane_type, xd); - scan_order = &vp9_intra_scan_orders[TX_8X8][tx_type]; - mode = plane == 0 ? mbmi->mode : mbmi->uv_mode; - vp9_predict_intra_block(xd, block >> 2, bwl, TX_8X8, mode, -#if CONFIG_FILTERINTRA - fbit, -#endif - x->skip_encode ? src : dst, - x->skip_encode ? src_stride : dst_stride, - dst, dst_stride, i, j, plane); if (!x->skip_recode) { vp9_subtract_block(8, 8, src_diff, diff_stride, src, src_stride, dst, dst_stride); @@ -3624,17 +3605,6 @@ static void encode_block_intra(int plane, int block, BLOCK_SIZE plane_bsize, vp9_iht8x8_add(tx_type, dqcoeff, dst, dst_stride, *eob); break; case TX_4X4: - tx_type = get_tx_type_4x4(pd->plane_type, xd, block); - scan_order = &vp9_intra_scan_orders[TX_4X4][tx_type]; - mode = plane == 0 ? get_y_mode(xd->mi[0].src_mi, block) : mbmi->uv_mode; - vp9_predict_intra_block(xd, block, bwl, TX_4X4, mode, -#if CONFIG_FILTERINTRA - fbit, -#endif - x->skip_encode ? src : dst, - x->skip_encode ? src_stride : dst_stride, - dst, dst_stride, i, j, plane); - if (!x->skip_recode) { vp9_subtract_block(4, 4, src_diff, diff_stride, src, src_stride, dst, dst_stride);