Use av1_inverse_transform_block() in rdopt.c
This will make the code cleaner
Change-Id: I94622b696b0a8d51d28dbbe29c767a62942bc5f3
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 72575c3..ec8795d 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -1453,7 +1453,6 @@
*out_sse = (int64_t)tmp * 16;
if (eob) {
- const MB_MODE_INFO *mbmi = &xd->mi[0]->mbmi;
#if CONFIG_AOM_HIGHBITDEPTH
DECLARE_ALIGNED(16, uint16_t, recon16[MAX_TX_SQUARE]);
uint8_t *recon = (uint8_t *)recon16;
@@ -1461,25 +1460,10 @@
DECLARE_ALIGNED(16, uint8_t, recon[MAX_TX_SQUARE]);
#endif // CONFIG_AOM_HIGHBITDEPTH
- const PLANE_TYPE plane_type = get_plane_type(plane);
-
- INV_TXFM_PARAM inv_txfm_param;
- const int block_raster_idx =
- av1_block_index_to_raster_order(tx_size, block);
-
- inv_txfm_param.tx_type =
- get_tx_type(plane_type, xd, block_raster_idx, tx_size);
- inv_txfm_param.tx_size = tx_size;
- inv_txfm_param.eob = eob;
- inv_txfm_param.lossless = xd->lossless[mbmi->segment_id];
-
#if CONFIG_AOM_HIGHBITDEPTH
if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) {
- recon = CONVERT_TO_BYTEPTR(recon);
- inv_txfm_param.bd = xd->bd;
aom_highbd_convolve_copy(dst, dst_stride, recon, MAX_TX_SIZE, NULL, 0,
NULL, 0, bsw, bsh, xd->bd);
- av1_highbd_inv_txfm_add(dqcoeff, recon, MAX_TX_SIZE, &inv_txfm_param);
} else
#endif // CONFIG_AOM_HIGHBITDEPTH
{
@@ -1492,8 +1476,16 @@
for (j = 0; j < bsh; j++)
for (i = 0; i < bsw; i++) recon[j * MAX_TX_SIZE + i] = 0;
#endif // !CONFIG_PVQ
- av1_inv_txfm_add(dqcoeff, recon, MAX_TX_SIZE, &inv_txfm_param);
}
+
+ const int block_raster_idx =
+ av1_block_index_to_raster_order(tx_size, block);
+ const PLANE_TYPE plane_type = get_plane_type(plane);
+ TX_TYPE tx_type = get_tx_type(plane_type, xd, block_raster_idx, tx_size);
+
+ av1_inverse_transform_block(xd, dqcoeff, tx_type, tx_size, recon,
+ MAX_TX_SIZE, eob);
+
#if CONFIG_DAALA_DIST
if (plane == 0) {
if (bsw >= 8 && bsh >= 8)
@@ -4073,26 +4065,11 @@
tmp = ROUND_POWER_OF_TWO(tmp, (xd->bd - 8) * 2);
#endif // CONFIG_AOM_HIGHBITDEPTH
rd_stats->sse += tmp * 16;
+ const int eob = p->eobs[block];
- if (p->eobs[block] > 0) {
- 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];
-// TODO(yushin) : If PVQ is enabled, rec_buffer needs be set as zeros.
-#if CONFIG_AOM_HIGHBITDEPTH
- if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) {
- inv_txfm_param.bd = xd->bd;
- av1_highbd_inv_txfm_add(dqcoeff, rec_buffer, MAX_TX_SIZE,
- &inv_txfm_param);
- } else {
- av1_inv_txfm_add(dqcoeff, rec_buffer, MAX_TX_SIZE, &inv_txfm_param);
- }
-#else // CONFIG_AOM_HIGHBITDEPTH
- av1_inv_txfm_add(dqcoeff, rec_buffer, MAX_TX_SIZE, &inv_txfm_param);
-#endif // CONFIG_AOM_HIGHBITDEPTH
-
+ av1_inverse_transform_block(xd, dqcoeff, tx_type, tx_size, rec_buffer,
+ MAX_TX_SIZE, eob);
+ if (eob > 0) {
if (txb_w + blk_col > max_blocks_wide ||
txb_h + blk_row > max_blocks_high) {
int idx, idy;
@@ -4121,7 +4098,7 @@
txb_coeff_cost =
av1_cost_coeffs(cm, x, plane, block, tx_size, scan_order, a, l, 0);
rd_stats->rate += txb_coeff_cost;
- rd_stats->skip &= (p->eobs[block] == 0);
+ rd_stats->skip &= (eob == 0);
#if CONFIG_RD_DEBUG
av1_update_txb_coeff_cost(rd_stats, plane, tx_size, blk_row, blk_col,