From: Dmitry Kovalev Date: Fri, 16 Aug 2013 19:46:45 +0000 (-0700) Subject: Merge "Moving from ss_txfrm_size to tx_size." X-Git-Tag: v1.3.0~587 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=367cb10fcfa02e8e58dda29e320870c86513e239;p=libvpx Merge "Moving from ss_txfrm_size to tx_size." --- 367cb10fcfa02e8e58dda29e320870c86513e239 diff --cc vp9/encoder/vp9_rdopt.c index 85b67cc4a,90daaf387..eb1b9a018 --- a/vp9/encoder/vp9_rdopt.c +++ b/vp9/encoder/vp9_rdopt.c @@@ -610,8 -611,90 +611,8 @@@ static void rate_block(int plane, int b args->scan, args->nb); } -// FIXME(jingning): need to make the rd test of chroma components consistent -// with that of luma component. this function should be deprecated afterwards. -static int rdcost_plane(VP9_COMMON * const cm, MACROBLOCK *x, int plane, - BLOCK_SIZE_TYPE bsize, TX_SIZE tx_size) { - MACROBLOCKD *const xd = &x->e_mbd; - struct macroblockd_plane *pd = &xd->plane[plane]; - const BLOCK_SIZE_TYPE bs = get_plane_block_size(bsize, pd); - const int num_4x4_blocks_wide = num_4x4_blocks_wide_lookup[bs]; - const int num_4x4_blocks_high = num_4x4_blocks_high_lookup[bs]; - int i; - struct rdcost_block_args args = { cm, x, { 0 }, { 0 }, tx_size, - num_4x4_blocks_wide, num_4x4_blocks_high, - 0, 0, 0, INT64_MAX, 0 }; - - switch (tx_size) { - case TX_4X4: - vpx_memcpy(&args.t_above, pd->above_context, - sizeof(ENTROPY_CONTEXT) * num_4x4_blocks_wide); - vpx_memcpy(&args.t_left, pd->left_context, - sizeof(ENTROPY_CONTEXT) * num_4x4_blocks_high); - args.scan = vp9_default_scan_4x4; - args.nb = vp9_default_scan_4x4_neighbors; - break; - case TX_8X8: - for (i = 0; i < num_4x4_blocks_wide; i += 2) - args.t_above[i] = !!*(uint16_t *)&pd->above_context[i]; - for (i = 0; i < num_4x4_blocks_high; i += 2) - args.t_left[i] = !!*(uint16_t *)&pd->left_context[i]; - args.scan = vp9_default_scan_8x8; - args.nb = vp9_default_scan_8x8_neighbors; - break; - case TX_16X16: - for (i = 0; i < num_4x4_blocks_wide; i += 4) - args.t_above[i] = !!*(uint32_t *)&pd->above_context[i]; - for (i = 0; i < num_4x4_blocks_high; i += 4) - args.t_left[i] = !!*(uint32_t *)&pd->left_context[i]; - args.scan = vp9_default_scan_16x16; - args.nb = vp9_default_scan_16x16_neighbors; - break; - case TX_32X32: - for (i = 0; i < num_4x4_blocks_wide; i += 8) - args.t_above[i] = !!*(uint64_t *)&pd->above_context[i]; - for (i = 0; i < num_4x4_blocks_high; i += 8) - args.t_left[i] = !!*(uint64_t *)&pd->left_context[i]; - args.scan = vp9_default_scan_32x32; - args.nb = vp9_default_scan_32x32_neighbors; - break; - default: - assert(0); - } - - foreach_transformed_block_in_plane(xd, bsize, plane, rate_block, &args); - return args.rate; -} - -static int rdcost_uv(VP9_COMMON *const cm, MACROBLOCK *x, - BLOCK_SIZE_TYPE bsize, TX_SIZE tx_size) { - int cost = 0, plane; - - for (plane = 1; plane < MAX_MB_PLANE; plane++) { - cost += rdcost_plane(cm, x, plane, bsize, tx_size); - } - return cost; -} - -static int64_t block_error_sbuv(MACROBLOCK *x, BLOCK_SIZE_TYPE bsize, - int shift, int64_t *sse) { - int64_t sum = 0, this_sse; - int plane; - - *sse = 0; - for (plane = 1; plane < MAX_MB_PLANE; plane++) { - struct macroblockd_plane *pd = &x->e_mbd.plane[plane]; - const BLOCK_SIZE_TYPE bs = get_plane_block_size(bsize, pd); - sum += vp9_block_error(x->plane[plane].coeff, pd->dqcoeff, - 1 << num_pels_log2_lookup[bs], &this_sse); - *sse += this_sse; - } - *sse >>= shift; - return sum >> shift; -} - static void block_yrd_txfm(int plane, int block, BLOCK_SIZE_TYPE bsize, - int ss_txfrm_size, void *arg) { + TX_SIZE tx_size, void *arg) { struct rdcost_block_args *args = arg; MACROBLOCK *const x = args->x; MACROBLOCKD *const xd = &x->e_mbd;