[idct] Fix initialization of tx_set_type
Previous assumption on reduced_tx_set_used=0 led to many assertion
failures and prevented signalling reduced_tx_set_used equal to 1.
BUG=aomedia:1053
Change-Id: If9a9dff8d01ba3ec942e06559c153f06d34555f9
diff --git a/av1/encoder/encodemb.c b/av1/encoder/encodemb.c
index 920456b..49c79f7 100644
--- a/av1/encoder/encodemb.c
+++ b/av1/encoder/encodemb.c
@@ -689,7 +689,7 @@
mrc_mask,
#endif // CONFIG_MRC_TX && SIGNAL_ANY_MRC_MASK
plane, tx_type, tx_size, dst, pd->dst.stride,
- p->eobs[block]);
+ p->eobs[block], cm->reduced_tx_set_used);
}
}
@@ -943,7 +943,8 @@
#if CONFIG_MRC_TX && SIGNAL_ANY_MRC_MASK
mrc_mask,
#endif // CONFIG_MRC_TX && SIGNAL_ANY_MRC_MASK
- plane, tx_type, tx_size, dst, dst_stride, *eob);
+ plane, tx_type, tx_size, dst, dst_stride, *eob,
+ cm->reduced_tx_set_used);
if (*eob) *(args->skip) = 0;
diff --git a/av1/encoder/encodetxb.c b/av1/encoder/encodetxb.c
index 881f7b2..e0d25bd 100644
--- a/av1/encoder/encodetxb.c
+++ b/av1/encoder/encodetxb.c
@@ -2509,7 +2509,8 @@
a, l, 1);
av1_inverse_transform_block_facade(xd, plane, block, blk_row, blk_col,
- x->plane[plane].eobs[block]);
+ x->plane[plane].eobs[block],
+ cm->reduced_tx_set_used);
}
return best_rd;
}
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index e30f112..9c0ceab 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -1890,7 +1890,8 @@
#endif // CONFIG_HIGHBITDEPTH
void av1_inverse_transform_block_facade(MACROBLOCKD *xd, int plane, int block,
- int blk_row, int blk_col, int eob) {
+ int blk_row, int blk_col, int eob,
+ int reduced_tx_set) {
struct macroblockd_plane *const pd = &xd->plane[plane];
tran_low_t *dqcoeff = BLOCK_OFFSET(pd->dqcoeff, block);
#if CONFIG_MRC_TX && SIGNAL_ANY_MRC_MASK
@@ -1907,7 +1908,8 @@
#if CONFIG_MRC_TX && SIGNAL_ANY_MRC_MASK
mrc_mask,
#endif // CONFIG_MRC_TX && SIGNAL_ANY_MRC_MASK
- plane, tx_type, tx_size, dst, dst_stride, eob);
+ plane, tx_type, tx_size, dst, dst_stride, eob,
+ reduced_tx_set);
}
void av1_dist_block(const AV1_COMP *cpi, MACROBLOCK *x, int plane,
@@ -2029,7 +2031,7 @@
mrc_mask,
#endif // CONFIG_MRC_TX && SIGNAL_ANY_MRC_MASK
plane, tx_type, tx_size, recon, MAX_TX_SIZE,
- eob);
+ eob, cpi->common.reduced_tx_set_used);
#if CONFIG_DIST_8X8
if (x->using_dist_8x8 && plane == 0 && (bsw < 8 || bsh < 8)) {
@@ -2166,7 +2168,7 @@
if (!is_inter_block(mbmi)) {
struct macroblock_plane *const p = &x->plane[plane];
av1_inverse_transform_block_facade(xd, plane, block, blk_row, blk_col,
- p->eobs[block]);
+ p->eobs[block], cm->reduced_tx_set_used);
av1_dist_block(args->cpi, x, plane, plane_bsize, block, blk_row, blk_col,
tx_size, &this_rd_stats.dist, &this_rd_stats.sse,
OUTPUT_HAS_DECODED_PIXELS);
@@ -3799,7 +3801,7 @@
mrc_mask,
#endif // CONFIG_MRC_TX && SIGNAL_ANY_MRC_MASK
plane, tx_type, tx_size, rec_buffer, MAX_TX_SIZE,
- eob);
+ eob, cm->reduced_tx_set_used);
if (eob > 0) {
#if CONFIG_DIST_8X8
if (x->using_dist_8x8 && plane == 0 && (bw < 8 && bh < 8)) {
diff --git a/av1/encoder/rdopt.h b/av1/encoder/rdopt.h
index 082802a..932ca65 100644
--- a/av1/encoder/rdopt.h
+++ b/av1/encoder/rdopt.h
@@ -127,5 +127,6 @@
MB_MODE_INFO *backup_mbmi);
void av1_inverse_transform_block_facade(MACROBLOCKD *xd, int plane, int block,
- int blk_row, int blk_col, int eob);
+ int blk_row, int blk_col, int eob,
+ int reduced_tx_set);
#endif // AV1_ENCODER_RDOPT_H_