Commit cb3072ca authored by Angie Chiang's avatar Angie Chiang

Refactor: call inv_txfm_add

Change-Id: I52c209a5db1b4a6525c04b70291a08ab5a68c6fe
parent 6b55b8dc
......@@ -224,49 +224,19 @@ static void inverse_transform_block(MACROBLOCKD* xd, int plane,
const int seg_id = xd->mi[0]->mbmi.segment_id;
if (eob > 0) {
tran_low_t *const dqcoeff = pd->dqcoeff;
INV_TXFM_PARAM inv_txfm_param;
inv_txfm_param.tx_type = tx_type;
inv_txfm_param.tx_size = tx_size;
inv_txfm_param.eob = eob;
inv_txfm_param.lossless = xd->lossless[seg_id];
#if CONFIG_VP9_HIGHBITDEPTH
if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) {
switch (tx_size) {
case TX_4X4:
vp10_highbd_inv_txfm_add_4x4(dqcoeff, dst, stride, eob, xd->bd,
tx_type, xd->lossless[seg_id]);
break;
case TX_8X8:
vp10_highbd_inv_txfm_add_8x8(dqcoeff, dst, stride, eob, xd->bd,
tx_type);
break;
case TX_16X16:
vp10_highbd_inv_txfm_add_16x16(dqcoeff, dst, stride, eob, xd->bd,
tx_type);
break;
case TX_32X32:
vp10_highbd_inv_txfm_add_32x32(dqcoeff, dst, stride, eob, xd->bd,
tx_type);
break;
default:
assert(0 && "Invalid transform size");
return;
}
inv_txfm_param.bd = xd->bd;
highbd_inv_txfm_add(dqcoeff, dst, stride, &inv_txfm_param);
} else {
#endif // CONFIG_VP9_HIGHBITDEPTH
switch (tx_size) {
case TX_4X4:
vp10_inv_txfm_add_4x4(dqcoeff, dst, stride, eob, tx_type,
xd->lossless[seg_id]);
break;
case TX_8X8:
vp10_inv_txfm_add_8x8(dqcoeff, dst, stride, eob, tx_type);
break;
case TX_16X16:
vp10_inv_txfm_add_16x16(dqcoeff, dst, stride, eob, tx_type);
break;
case TX_32X32:
vp10_inv_txfm_add_32x32(dqcoeff, dst, stride, eob, tx_type);
break;
default:
assert(0 && "Invalid transform size");
return;
}
inv_txfm_add(dqcoeff, dst, stride, &inv_txfm_param);
#if CONFIG_VP9_HIGHBITDEPTH
}
#endif // CONFIG_VP9_HIGHBITDEPTH
......
......@@ -2846,57 +2846,21 @@ void vp10_tx_block_rd_b(const VP10_COMP *cpi, MACROBLOCK *x, TX_SIZE tx_size,
*bsse += tmp * 16;
if (p->eobs[block] > 0) {
const int lossless = xd->lossless[xd->mi[0]->mbmi.segment_id];
INV_TXFM_PARAM inv_txfm_param;
inv_txfm_param.tx_type = tx_type;
inv_txfm_param.tx_size = tx_size;
inv_txfm_param.eob = p->eobs[block];
inv_txfm_param.lossless = xd->lossless[xd->mi[0]->mbmi.segment_id];
#if CONFIG_VP9_HIGHBITDEPTH
if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) {
const int bd = xd->bd;
switch (tx_size) {
case TX_32X32:
vp10_highbd_inv_txfm_add_32x32(dqcoeff, rec_buffer, 32,
p->eobs[block], bd, tx_type);
break;
case TX_16X16:
vp10_highbd_inv_txfm_add_16x16(dqcoeff, rec_buffer, 32,
p->eobs[block], bd, tx_type);
break;
case TX_8X8:
vp10_highbd_inv_txfm_add_8x8(dqcoeff, rec_buffer, 32,
p->eobs[block], bd, tx_type);
break;
case TX_4X4:
vp10_highbd_inv_txfm_add_4x4(dqcoeff, rec_buffer, 32,
p->eobs[block], bd, tx_type, lossless);
break;
default:
assert(0 && "Invalid transform size");
break;
}
inv_txfm_param.bd = xd->bd;
highbd_inv_txfm_add(dqcoeff, rec_buffer, 32, &inv_txfm_param);
} else {
#else
{
#endif // CONFIG_VP9_HIGHBITDEPTH
switch (tx_size) {
case TX_32X32:
vp10_inv_txfm_add_32x32(dqcoeff, rec_buffer, 32, p->eobs[block],
tx_type);
break;
case TX_16X16:
vp10_inv_txfm_add_16x16(dqcoeff, rec_buffer, 32, p->eobs[block],
tx_type);
break;
case TX_8X8:
vp10_inv_txfm_add_8x8(dqcoeff, rec_buffer, 32, p->eobs[block],
tx_type);
break;
case TX_4X4:
vp10_inv_txfm_add_4x4(dqcoeff, rec_buffer, 32, p->eobs[block],
tx_type, lossless);
break;
default:
assert(0 && "Invalid transform size");
break;
}
inv_txfm_add(dqcoeff, rec_buffer, 32, &inv_txfm_param);
}
#else // CONFIG_VP9_HIGHBITDEPTH
inv_txfm_add(dqcoeff, rec_buffer, 32, &inv_txfm_param);
#endif // CONFIG_VP9_HIGHBITDEPTH
if ((bh >> 2) + blk_col > max_blocks_wide ||
(bh >> 2) + blk_row > max_blocks_high) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment