Remove fwd_txfm_opt
This CL aims at simplify transform code.
Change-Id: Ibaf1dd8607e37d44a0f77788a72e344583f81fa0
diff --git a/av1/encoder/encodemb.c b/av1/encoder/encodemb.c
index 63be199..c70616d 100644
--- a/av1/encoder/encodemb.c
+++ b/av1/encoder/encodemb.c
@@ -472,14 +472,6 @@
};
#endif
-static FWD_TXFM_OPT fwd_txfm_opt_list[AV1_XFORM_QUANT_TYPES] = {
- FWD_TXFM_OPT_NORMAL, FWD_TXFM_OPT_NORMAL, FWD_TXFM_OPT_DC,
-#if CONFIG_NEW_QUANT
- FWD_TXFM_OPT_NORMAL, FWD_TXFM_OPT_NORMAL, FWD_TXFM_OPT_DC,
-#endif // CONFIG_NEW_QUANT
- FWD_TXFM_OPT_NORMAL
-};
-
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, int ctx,
@@ -565,7 +557,6 @@
fwd_txfm_param.tx_type = tx_type;
fwd_txfm_param.tx_size = tx_size;
- fwd_txfm_param.fwd_txfm_opt = fwd_txfm_opt_list[xform_quant_idx];
fwd_txfm_param.lossless = xd->lossless[xd->mi[0]->mbmi.segment_id];
#if CONFIG_AOM_HIGHBITDEPTH
@@ -596,6 +587,7 @@
}
#else // #if !CONFIG_PVQ
+ (void)xform_quant_idx;
fwd_txfm(src_int16, coeff, diff_stride, &fwd_txfm_param);
fwd_txfm(pred, ref_coeff, diff_stride, &fwd_txfm_param);
diff --git a/av1/encoder/hybrid_fwd_txfm.c b/av1/encoder/hybrid_fwd_txfm.c
index 596d7d1..9505f66 100644
--- a/av1/encoder/hybrid_fwd_txfm.c
+++ b/av1/encoder/hybrid_fwd_txfm.c
@@ -16,24 +16,6 @@
#include "av1/common/idct.h"
#include "av1/encoder/hybrid_fwd_txfm.h"
-#if CONFIG_TX64X64
-static INLINE void fdct64x64(const int16_t *src, tran_low_t *dst,
- int src_stride) {
- av1_fht64x64(src, dst, src_stride, DCT_DCT);
-}
-
-static INLINE void fdct64x64_1(const int16_t *src, tran_low_t *dst,
- int src_stride) {
- int i, j;
- int32_t sum = 0;
- memset(dst, 0, sizeof(*dst) * 4096);
- for (i = 0; i < 64; ++i)
- for (j = 0; j < 64; ++j) sum += src[i * src_stride + j];
- // Note: this scaling makes the transform 2 times unitary
- dst[0] = ROUND_POWER_OF_TWO_SIGNED(sum, 5);
-}
-#endif // CONFIG_TX64X64
-
#if CONFIG_CB4X4
static void fwd_txfm_2x2(const int16_t *src_diff, tran_low_t *coeff,
int diff_stride, TX_TYPE tx_type, int lossless) {
@@ -70,27 +52,12 @@
return;
}
- switch (tx_type) {
- case DCT_DCT:
- case ADST_DCT:
- case DCT_ADST:
- case ADST_ADST: av1_fht4x4(src_diff, coeff, diff_stride, tx_type); break;
#if CONFIG_EXT_TX
- case FLIPADST_DCT:
- case DCT_FLIPADST:
- case FLIPADST_FLIPADST:
- case ADST_FLIPADST:
- case FLIPADST_ADST:
- case V_DCT:
- case H_DCT:
- case V_ADST:
- case H_ADST:
- case V_FLIPADST:
- case H_FLIPADST: av1_fht4x4(src_diff, coeff, diff_stride, tx_type); break;
- case IDTX: av1_fwd_idtx_c(src_diff, coeff, diff_stride, 4, tx_type); break;
-#endif // CONFIG_EXT_TX
- default: assert(0);
- }
+ if (tx_type == IDTX)
+ av1_fwd_idtx_c(src_diff, coeff, diff_stride, 4, tx_type);
+ else
+#endif
+ av1_fht4x4(src_diff, coeff, diff_stride, tx_type);
}
static void fwd_txfm_4x8(const int16_t *src_diff, tran_low_t *coeff,
@@ -138,130 +105,50 @@
static void fwd_txfm_8x8(const int16_t *src_diff, tran_low_t *coeff,
int diff_stride, TX_TYPE tx_type,
FWD_TXFM_OPT fwd_txfm_opt) {
- switch (tx_type) {
- case DCT_DCT:
- case ADST_DCT:
- case DCT_ADST:
- case ADST_ADST:
- if (fwd_txfm_opt == FWD_TXFM_OPT_NORMAL)
- av1_fht8x8(src_diff, coeff, diff_stride, tx_type);
- else // FWD_TXFM_OPT_DC
- aom_fdct8x8_1(src_diff, coeff, diff_stride);
- break;
+ (void)fwd_txfm_opt;
#if CONFIG_EXT_TX
- case FLIPADST_DCT:
- case DCT_FLIPADST:
- case FLIPADST_FLIPADST:
- case ADST_FLIPADST:
- case FLIPADST_ADST:
- case V_DCT:
- case H_DCT:
- case V_ADST:
- case H_ADST:
- case V_FLIPADST:
- case H_FLIPADST: av1_fht8x8(src_diff, coeff, diff_stride, tx_type); break;
- case IDTX: av1_fwd_idtx_c(src_diff, coeff, diff_stride, 8, tx_type); break;
-#endif // CONFIG_EXT_TX
- default: assert(0);
- }
+ if (tx_type == IDTX)
+ av1_fwd_idtx_c(src_diff, coeff, diff_stride, 8, tx_type);
+ else
+#endif
+ av1_fht8x8(src_diff, coeff, diff_stride, tx_type);
}
static void fwd_txfm_16x16(const int16_t *src_diff, tran_low_t *coeff,
int diff_stride, TX_TYPE tx_type,
FWD_TXFM_OPT fwd_txfm_opt) {
- switch (tx_type) {
- case DCT_DCT:
- case ADST_DCT:
- case DCT_ADST:
- case ADST_ADST:
- if (fwd_txfm_opt == FWD_TXFM_OPT_NORMAL)
- av1_fht16x16(src_diff, coeff, diff_stride, tx_type);
- else // FWD_TXFM_OPT_DC
- aom_fdct16x16_1(src_diff, coeff, diff_stride);
- break;
+ (void)fwd_txfm_opt;
#if CONFIG_EXT_TX
- case FLIPADST_DCT:
- case DCT_FLIPADST:
- case FLIPADST_FLIPADST:
- case ADST_FLIPADST:
- case FLIPADST_ADST:
- case V_DCT:
- case H_DCT:
- case V_ADST:
- case H_ADST:
- case V_FLIPADST:
- case H_FLIPADST: av1_fht16x16(src_diff, coeff, diff_stride, tx_type); break;
- case IDTX: av1_fwd_idtx_c(src_diff, coeff, diff_stride, 16, tx_type); break;
-#endif // CONFIG_EXT_TX
- default: assert(0);
- }
+ if (tx_type == IDTX)
+ av1_fwd_idtx_c(src_diff, coeff, diff_stride, 16, tx_type);
+ else
+#endif
+ av1_fht16x16(src_diff, coeff, diff_stride, tx_type);
}
static void fwd_txfm_32x32(const int16_t *src_diff, tran_low_t *coeff,
int diff_stride, TX_TYPE tx_type,
FWD_TXFM_OPT fwd_txfm_opt) {
- switch (tx_type) {
- case DCT_DCT:
- if (fwd_txfm_opt == FWD_TXFM_OPT_NORMAL)
- av1_fht32x32(src_diff, coeff, diff_stride, tx_type);
- else // FWD_TXFM_OPT_DC
- aom_fdct32x32_1(src_diff, coeff, diff_stride);
- break;
+ (void)fwd_txfm_opt;
#if CONFIG_EXT_TX
- case ADST_DCT:
- case DCT_ADST:
- case ADST_ADST:
- case FLIPADST_DCT:
- case DCT_FLIPADST:
- case FLIPADST_FLIPADST:
- case ADST_FLIPADST:
- case FLIPADST_ADST:
- av1_fht32x32(src_diff, coeff, diff_stride, tx_type);
- break;
- case V_DCT:
- case H_DCT:
- case V_ADST:
- case H_ADST:
- case V_FLIPADST:
- case H_FLIPADST: av1_fht32x32(src_diff, coeff, diff_stride, tx_type); break;
- case IDTX: av1_fwd_idtx_c(src_diff, coeff, diff_stride, 32, tx_type); break;
-#endif // CONFIG_EXT_TX
- default: assert(0); break;
- }
+ if (tx_type == IDTX)
+ av1_fwd_idtx_c(src_diff, coeff, diff_stride, 32, tx_type);
+ else
+#endif
+ av1_fht32x32(src_diff, coeff, diff_stride, tx_type);
}
#if CONFIG_TX64X64
static void fwd_txfm_64x64(const int16_t *src_diff, tran_low_t *coeff,
int diff_stride, TX_TYPE tx_type,
FWD_TXFM_OPT fwd_txfm_opt) {
- switch (tx_type) {
- case DCT_DCT:
- if (fwd_txfm_opt == FWD_TXFM_OPT_NORMAL)
- fdct64x64(src_diff, coeff, diff_stride);
- else // FWD_TXFM_OPT_DC
- fdct64x64_1(src_diff, coeff, diff_stride);
- break;
+ (void)fwd_txfm_opt;
#if CONFIG_EXT_TX
- case ADST_DCT:
- case DCT_ADST:
- case ADST_ADST:
- case FLIPADST_DCT:
- case DCT_FLIPADST:
- case FLIPADST_FLIPADST:
- case ADST_FLIPADST:
- case FLIPADST_ADST:
- av1_fht64x64(src_diff, coeff, diff_stride, tx_type);
- break;
- case V_DCT:
- case H_DCT:
- case V_ADST:
- case H_ADST:
- case V_FLIPADST:
- case H_FLIPADST: av1_fht32x32(src_diff, coeff, diff_stride, tx_type); break;
- case IDTX: av1_fwd_idtx_c(src_diff, coeff, diff_stride, 64, tx_type); break;
-#endif // CONFIG_EXT_TX
- default: assert(0); break;
- }
+ if (tx_type == IDTX)
+ av1_fwd_idtx_c(src_diff, coeff, diff_stride, 64, tx_type);
+ else
+#endif
+ av1_fht64x64(src_diff, coeff, diff_stride, tx_type);
}
#endif // CONFIG_TX64X64
@@ -518,7 +405,7 @@
void fwd_txfm(const int16_t *src_diff, tran_low_t *coeff, int diff_stride,
FWD_TXFM_PARAM *fwd_txfm_param) {
- const int fwd_txfm_opt = fwd_txfm_param->fwd_txfm_opt;
+ const int fwd_txfm_opt = FWD_TXFM_OPT_NORMAL;
const TX_TYPE tx_type = fwd_txfm_param->tx_type;
const TX_SIZE tx_size = fwd_txfm_param->tx_size;
const int lossless = fwd_txfm_param->lossless;
@@ -570,7 +457,7 @@
#if CONFIG_AOM_HIGHBITDEPTH
void highbd_fwd_txfm(const int16_t *src_diff, tran_low_t *coeff,
int diff_stride, FWD_TXFM_PARAM *fwd_txfm_param) {
- const int fwd_txfm_opt = fwd_txfm_param->fwd_txfm_opt;
+ const int fwd_txfm_opt = FWD_TXFM_OPT_NORMAL;
const TX_TYPE tx_type = fwd_txfm_param->tx_type;
const TX_SIZE tx_size = fwd_txfm_param->tx_size;
const int lossless = fwd_txfm_param->lossless;
diff --git a/av1/encoder/hybrid_fwd_txfm.h b/av1/encoder/hybrid_fwd_txfm.h
index 4b48f1b..a5b4b2e 100644
--- a/av1/encoder/hybrid_fwd_txfm.h
+++ b/av1/encoder/hybrid_fwd_txfm.h
@@ -14,12 +14,11 @@
#include "./aom_config.h"
-typedef enum FWD_TXFM_OPT { FWD_TXFM_OPT_NORMAL, FWD_TXFM_OPT_DC } FWD_TXFM_OPT;
+typedef enum FWD_TXFM_OPT { FWD_TXFM_OPT_NORMAL } FWD_TXFM_OPT;
typedef struct FWD_TXFM_PARAM {
TX_TYPE tx_type;
TX_SIZE tx_size;
- FWD_TXFM_OPT fwd_txfm_opt;
int lossless;
#if CONFIG_AOM_HIGHBITDEPTH
int bd;