Remove av1_get_tx_type from av1_xform_quant
av1_xform_quant call av1_xform_quant to get
transform type, which can be passed in as
an argument from it's caller.
Change-Id: I807c4a7ee63412e5244db0d7322aae618deecbe6
diff --git a/av1/encoder/encodemb.c b/av1/encoder/encodemb.c
index d48ac4f..5a5b3be 100644
--- a/av1/encoder/encodemb.c
+++ b/av1/encoder/encodemb.c
@@ -134,15 +134,12 @@
void av1_xform_quant(const AV1_COMMON *cm, MACROBLOCK *x, int plane, int block,
int blk_row, int blk_col, BLOCK_SIZE plane_bsize,
- TX_SIZE tx_size, AV1_XFORM_QUANT xform_quant_idx) {
+ TX_SIZE tx_size, TX_TYPE tx_type,
+ AV1_XFORM_QUANT xform_quant_idx) {
MACROBLOCKD *const xd = &x->e_mbd;
MB_MODE_INFO *const mbmi = xd->mi[0];
const struct macroblock_plane *const p = &x->plane[plane];
const struct macroblockd_plane *const pd = &xd->plane[plane];
- PLANE_TYPE plane_type = get_plane_type(plane);
- TX_TYPE tx_type = av1_get_tx_type(plane_type, xd, blk_row, blk_col, tx_size,
- cm->reduced_tx_set_used);
-
const SCAN_ORDER *const scan_order = get_scan(tx_size, tx_type);
tran_low_t *const coeff = BLOCK_OFFSET(p->coeff, block);
@@ -161,17 +158,14 @@
? pd->seg_iqmatrix[seg_id][qm_tx_size]
: cm->giqmatrix[NUM_QM_LEVELS - 1][0][qm_tx_size];
- TxfmParam txfm_param;
+ const int src_offset = (blk_row * diff_stride + blk_col);
+ const int16_t *src_diff = &p->src_diff[src_offset << tx_size_wide_log2[0]];
QUANT_PARAM qparam;
- const int16_t *src_diff;
-
- src_diff =
- &p->src_diff[(blk_row * diff_stride + blk_col) << tx_size_wide_log2[0]];
qparam.log_scale = av1_get_tx_scale(tx_size);
qparam.tx_size = tx_size;
qparam.qmatrix = qmatrix;
qparam.iqmatrix = iqmatrix;
-
+ TxfmParam txfm_param;
txfm_param.tx_type = tx_type;
txfm_param.tx_size = tx_size;
txfm_param.lossless = xd->lossless[mbmi->segment_id];
@@ -230,20 +224,21 @@
a = &args->ta[blk_col];
l = &args->tl[blk_row];
-
// Assert not magic number (uninitialized).
assert(plane != 0 || x->blk_skip[blk_row * bw + blk_col] != 234);
if ((plane != 0 || x->blk_skip[blk_row * bw + blk_col] == 0) &&
!mbmi->skip_mode) {
+ TX_TYPE tx_type = av1_get_tx_type(pd->plane_type, xd, blk_row, blk_col,
+ tx_size, cm->reduced_tx_set_used);
if (args->enable_optimize_b) {
av1_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize,
- tx_size, AV1_XFORM_QUANT_FP);
+ tx_size, tx_type, AV1_XFORM_QUANT_FP);
av1_optimize_b(args->cpi, x, plane, blk_row, blk_col, block, plane_bsize,
tx_size, a, l, 1, &dummy_rate_cost);
} else {
av1_xform_quant(
- cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size,
+ cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size, tx_type,
USE_B_QUANT_NO_TRELLIS ? AV1_XFORM_QUANT_B : AV1_XFORM_QUANT_FP);
}
} else {
@@ -374,9 +369,8 @@
uint8_t *dst;
dst = &pd->dst
.buf[(blk_row * pd->dst.stride + blk_col) << tx_size_wide_log2[0]];
-
av1_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size,
- AV1_XFORM_QUANT_B);
+ DCT_DCT, AV1_XFORM_QUANT_B);
if (p->eobs[block] > 0) {
txfm_param.bd = xd->bd;
@@ -531,12 +525,12 @@
const ENTROPY_CONTEXT *l = &args->tl[blk_row];
if (args->enable_optimize_b) {
av1_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize,
- tx_size, AV1_XFORM_QUANT_FP);
+ tx_size, tx_type, AV1_XFORM_QUANT_FP);
av1_optimize_b(args->cpi, x, plane, blk_row, blk_col, block, plane_bsize,
tx_size, a, l, 1, &dummy_rate_cost);
} else {
av1_xform_quant(
- cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size,
+ cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size, tx_type,
USE_B_QUANT_NO_TRELLIS ? AV1_XFORM_QUANT_B : AV1_XFORM_QUANT_FP);
}
}
diff --git a/av1/encoder/encodemb.h b/av1/encoder/encodemb.h
index 45f8699..1be2ce0 100644
--- a/av1/encoder/encodemb.h
+++ b/av1/encoder/encodemb.h
@@ -49,7 +49,8 @@
void av1_encode_sby_pass1(AV1_COMMON *cm, MACROBLOCK *x, BLOCK_SIZE bsize);
void av1_xform_quant(const AV1_COMMON *cm, MACROBLOCK *x, int plane, int block,
int blk_row, int blk_col, BLOCK_SIZE plane_bsize,
- TX_SIZE tx_size, AV1_XFORM_QUANT xform_quant_idx);
+ TX_SIZE tx_size, TX_TYPE tx_type,
+ AV1_XFORM_QUANT xform_quant_idx);
int av1_optimize_b(const struct AV1_COMP *cpi, MACROBLOCK *mb, int plane,
int blk_row, int blk_col, int block, BLOCK_SIZE plane_bsize,
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 8f69577..772f7ba 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -2572,13 +2572,13 @@
if (!cpi->optimize_seg_arr[mbmi->segment_id]) {
av1_xform_quant(
- cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size,
+ cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size, tx_type,
USE_B_QUANT_NO_TRELLIS ? AV1_XFORM_QUANT_B : AV1_XFORM_QUANT_FP);
rate_cost = av1_cost_coeffs(cm, x, plane_bsize, plane, blk_row, blk_col,
block, tx_size, a, l, use_fast_coef_costing);
} else {
av1_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize,
- tx_size, AV1_XFORM_QUANT_FP);
+ tx_size, tx_type, AV1_XFORM_QUANT_FP);
if (cpi->sf.optimize_b_precheck && best_rd < INT64_MAX &&
eobs_ptr[block] >= 4) {
// Calculate distortion quickly in transform domain.
@@ -2688,10 +2688,11 @@
if (!cpi->optimize_seg_arr[mbmi->segment_id]) {
av1_xform_quant(
cm, x, plane, block, blk_row, blk_col, plane_bsize, tx_size,
+ best_tx_type,
USE_B_QUANT_NO_TRELLIS ? AV1_XFORM_QUANT_B : AV1_XFORM_QUANT_FP);
} else {
av1_xform_quant(cm, x, plane, block, blk_row, blk_col, plane_bsize,
- tx_size, AV1_XFORM_QUANT_FP);
+ tx_size, best_tx_type, AV1_XFORM_QUANT_FP);
av1_optimize_b(cpi, x, plane, blk_row, blk_col, block, plane_bsize,
tx_size, a, l, 1, &rate_cost);
}
diff --git a/av1/encoder/rdopt.h b/av1/encoder/rdopt.h
index 4ae32d4..65f50fc 100644
--- a/av1/encoder/rdopt.h
+++ b/av1/encoder/rdopt.h
@@ -125,10 +125,6 @@
struct macroblock *x, int mi_row, int mi_col, struct RD_STATS *rd_cost,
BLOCK_SIZE bsize, PICK_MODE_CONTEXT *ctx, int64_t best_rd_so_far);
-void av1_inverse_transform_block_facade(MACROBLOCKD *xd, int plane, int block,
- int blk_row, int blk_col, int eob,
- int reduced_tx_set);
-
#if CONFIG_COLLECT_INTER_MODE_RD_STATS
#define INTER_MODE_RD_TEST 0
void av1_inter_mode_data_init();