diff options
author | trav90 <travawine@palemoon.org> | 2018-10-18 06:04:57 -0500 |
---|---|---|
committer | trav90 <travawine@palemoon.org> | 2018-10-18 06:04:57 -0500 |
commit | 7369c7d7a5eed32963d8af37658286617919f91c (patch) | |
tree | 5397ce7ee9bca1641118fdc3187bd9e2b24fdc9c /third_party/aom/av1/encoder/hybrid_fwd_txfm.c | |
parent | 77887af9c4ad1420bbdb33984af4f74b55ca59db (diff) | |
download | UXP-7369c7d7a5eed32963d8af37658286617919f91c.tar UXP-7369c7d7a5eed32963d8af37658286617919f91c.tar.gz UXP-7369c7d7a5eed32963d8af37658286617919f91c.tar.lz UXP-7369c7d7a5eed32963d8af37658286617919f91c.tar.xz UXP-7369c7d7a5eed32963d8af37658286617919f91c.zip |
Update aom to commit id f5bdeac22930ff4c6b219be49c843db35970b918
Diffstat (limited to 'third_party/aom/av1/encoder/hybrid_fwd_txfm.c')
-rw-r--r-- | third_party/aom/av1/encoder/hybrid_fwd_txfm.c | 421 |
1 files changed, 214 insertions, 207 deletions
diff --git a/third_party/aom/av1/encoder/hybrid_fwd_txfm.c b/third_party/aom/av1/encoder/hybrid_fwd_txfm.c index c57deed84..85f4b7d9b 100644 --- a/third_party/aom/av1/encoder/hybrid_fwd_txfm.c +++ b/third_party/aom/av1/encoder/hybrid_fwd_txfm.c @@ -18,7 +18,7 @@ #if CONFIG_CHROMA_2X2 static void fwd_txfm_2x2(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, int lossless) { + int diff_stride, TxfmParam *txfm_param) { tran_high_t a1 = src_diff[0]; tran_high_t b1 = src_diff[1]; tran_high_t c1 = src_diff[diff_stride]; @@ -39,134 +39,151 @@ static void fwd_txfm_2x2(const int16_t *src_diff, tran_low_t *coeff, coeff[2] = (tran_low_t)(4 * c1); coeff[3] = (tran_low_t)(4 * d1); - (void)tx_type; - (void)lossless; + (void)txfm_param; } #endif static void fwd_txfm_4x4(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, int lossless) { - if (lossless) { - assert(tx_type == DCT_DCT); + int diff_stride, TxfmParam *txfm_param) { + if (txfm_param->lossless) { + assert(txfm_param->tx_type == DCT_DCT); av1_fwht4x4(src_diff, coeff, diff_stride); return; } - av1_fht4x4(src_diff, coeff, diff_stride, tx_type); +#if CONFIG_LGT + // only C version has LGTs + av1_fht4x4_c(src_diff, coeff, diff_stride, txfm_param); +#else + av1_fht4x4(src_diff, coeff, diff_stride, txfm_param); +#endif } static void fwd_txfm_4x8(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, - FWD_TXFM_OPT fwd_txfm_opt) { - (void)fwd_txfm_opt; - av1_fht4x8(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { +#if CONFIG_LGT + av1_fht4x8_c(src_diff, coeff, diff_stride, txfm_param); +#else + av1_fht4x8(src_diff, coeff, diff_stride, txfm_param); +#endif } static void fwd_txfm_8x4(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, - FWD_TXFM_OPT fwd_txfm_opt) { - (void)fwd_txfm_opt; - av1_fht8x4(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { +#if CONFIG_LGT + av1_fht8x4_c(src_diff, coeff, diff_stride, txfm_param); +#else + av1_fht8x4(src_diff, coeff, diff_stride, txfm_param); +#endif } static void fwd_txfm_8x16(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, - FWD_TXFM_OPT fwd_txfm_opt) { - (void)fwd_txfm_opt; - av1_fht8x16(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { +#if CONFIG_LGT + av1_fht8x16_c(src_diff, coeff, diff_stride, txfm_param); +#else + av1_fht8x16(src_diff, coeff, diff_stride, txfm_param); +#endif } static void fwd_txfm_16x8(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, - FWD_TXFM_OPT fwd_txfm_opt) { - (void)fwd_txfm_opt; - av1_fht16x8(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { +#if CONFIG_LGT + av1_fht16x8_c(src_diff, coeff, diff_stride, txfm_param); +#else + av1_fht16x8(src_diff, coeff, diff_stride, txfm_param); +#endif } static void fwd_txfm_16x32(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, - FWD_TXFM_OPT fwd_txfm_opt) { - (void)fwd_txfm_opt; - av1_fht16x32(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { + av1_fht16x32(src_diff, coeff, diff_stride, txfm_param); } static void fwd_txfm_32x16(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, - FWD_TXFM_OPT fwd_txfm_opt) { - (void)fwd_txfm_opt; - av1_fht32x16(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { + av1_fht32x16(src_diff, coeff, diff_stride, txfm_param); } 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) { - (void)fwd_txfm_opt; - av1_fht8x8(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { +#if CONFIG_LGT + av1_fht8x8_c(src_diff, coeff, diff_stride, txfm_param); +#else + av1_fht8x8(src_diff, coeff, diff_stride, txfm_param); +#endif } 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) { - (void)fwd_txfm_opt; - av1_fht16x16(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { + av1_fht16x16(src_diff, coeff, diff_stride, txfm_param); } 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) { - (void)fwd_txfm_opt; - av1_fht32x32(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { +#if CONFIG_MRC_TX + // MRC_DCT currently only has a C implementation + if (txfm_param->tx_type == MRC_DCT) { + av1_fht32x32_c(src_diff, coeff, diff_stride, txfm_param); + return; + } +#endif // CONFIG_MRC_TX + av1_fht32x32(src_diff, coeff, diff_stride, txfm_param); } #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) { - (void)fwd_txfm_opt; + int diff_stride, TxfmParam *txfm_param) { #if CONFIG_EXT_TX - if (tx_type == IDTX) - av1_fwd_idtx_c(src_diff, coeff, diff_stride, 64, tx_type); + if (txfm_param->tx_type == IDTX) + av1_fwd_idtx_c(src_diff, coeff, diff_stride, 64, txfm_param->tx_type); else #endif - av1_fht64x64(src_diff, coeff, diff_stride, tx_type); + av1_fht64x64(src_diff, coeff, diff_stride, txfm_param); } #endif // CONFIG_TX64X64 -#if CONFIG_EXT_TX && CONFIG_RECT_TX && CONFIG_RECT_TX_EXT +#if CONFIG_RECT_TX_EXT && (CONFIG_EXT_TX || CONFIG_VAR_TX) static void fwd_txfm_16x4(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, - FWD_TXFM_OPT fwd_txfm_opt) { - (void)fwd_txfm_opt; - av1_fht16x4(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { +#if CONFIG_LGT + av1_fht16x4_c(src_diff, coeff, diff_stride, txfm_param); +#else + av1_fht16x4(src_diff, coeff, diff_stride, txfm_param); +#endif } static void fwd_txfm_4x16(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, - FWD_TXFM_OPT fwd_txfm_opt) { - (void)fwd_txfm_opt; - av1_fht4x16(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { +#if CONFIG_LGT + av1_fht4x16_c(src_diff, coeff, diff_stride, txfm_param); +#else + av1_fht4x16(src_diff, coeff, diff_stride, txfm_param); +#endif } static void fwd_txfm_32x8(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, - FWD_TXFM_OPT fwd_txfm_opt) { - (void)fwd_txfm_opt; - av1_fht32x8(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { +#if CONFIG_LGT + av1_fht32x8_c(src_diff, coeff, diff_stride, txfm_param); +#else + av1_fht32x8(src_diff, coeff, diff_stride, txfm_param); +#endif } static void fwd_txfm_8x32(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, - FWD_TXFM_OPT fwd_txfm_opt) { - (void)fwd_txfm_opt; - av1_fht8x32(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { +#if CONFIG_LGT + av1_fht8x32_c(src_diff, coeff, diff_stride, txfm_param); +#else + av1_fht8x32(src_diff, coeff, diff_stride, txfm_param); +#endif } -#endif // CONFIG_EXT_TX && CONFIG_RECT_TX && CONFIG_RECT_TX_EXT +#endif -#if CONFIG_HIGHBITDEPTH #if CONFIG_CHROMA_2X2 static void highbd_fwd_txfm_2x2(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, int lossless, - const int bd) { + int diff_stride, TxfmParam *txfm_param) { tran_high_t a1 = src_diff[0]; tran_high_t b1 = src_diff[1]; tran_high_t c1 = src_diff[diff_stride]; @@ -187,27 +204,27 @@ static void highbd_fwd_txfm_2x2(const int16_t *src_diff, tran_low_t *coeff, coeff[2] = (tran_low_t)(4 * c1); coeff[3] = (tran_low_t)(4 * d1); - (void)tx_type; - (void)lossless; - (void)bd; + (void)txfm_param; } #endif static void highbd_fwd_txfm_4x4(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, int lossless, - const int bd) { - if (lossless) { + int diff_stride, TxfmParam *txfm_param) { + int32_t *dst_coeff = (int32_t *)coeff; + const int tx_type = txfm_param->tx_type; + const int bd = txfm_param->bd; + if (txfm_param->lossless) { assert(tx_type == DCT_DCT); av1_highbd_fwht4x4(src_diff, coeff, diff_stride); return; } - switch (tx_type) { case DCT_DCT: case ADST_DCT: case DCT_ADST: case ADST_ADST: - av1_fwd_txfm2d_4x4(src_diff, coeff, diff_stride, tx_type, bd); + // fallthrough intended + av1_fwd_txfm2d_4x4(src_diff, dst_coeff, diff_stride, tx_type, bd); break; #if CONFIG_EXT_TX case FLIPADST_DCT: @@ -215,80 +232,79 @@ static void highbd_fwd_txfm_4x4(const int16_t *src_diff, tran_low_t *coeff, case FLIPADST_FLIPADST: case ADST_FLIPADST: case FLIPADST_ADST: - av1_fwd_txfm2d_4x4(src_diff, coeff, diff_stride, tx_type, bd); + // fallthrough intended + av1_fwd_txfm2d_4x4(src_diff, dst_coeff, diff_stride, tx_type, bd); break; + // use the c version for anything including identity for now case V_DCT: case H_DCT: case V_ADST: case H_ADST: case V_FLIPADST: case H_FLIPADST: - av1_highbd_fht4x4_c(src_diff, coeff, diff_stride, tx_type); + case IDTX: + // fallthrough intended + av1_fwd_txfm2d_4x4_c(src_diff, dst_coeff, diff_stride, tx_type, bd); break; - case IDTX: av1_fwd_idtx_c(src_diff, coeff, diff_stride, 4, tx_type); break; #endif // CONFIG_EXT_TX default: assert(0); } } static void highbd_fwd_txfm_4x8(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, - FWD_TXFM_OPT fwd_txfm_opt, const int bd) { - (void)fwd_txfm_opt; - (void)bd; - av1_highbd_fht4x8(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { + int32_t *dst_coeff = (int32_t *)coeff; + av1_fwd_txfm2d_4x8_c(src_diff, dst_coeff, diff_stride, txfm_param->tx_type, + txfm_param->bd); } static void highbd_fwd_txfm_8x4(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, - FWD_TXFM_OPT fwd_txfm_opt, const int bd) { - (void)fwd_txfm_opt; - (void)bd; - av1_highbd_fht8x4(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { + int32_t *dst_coeff = (int32_t *)coeff; + av1_fwd_txfm2d_8x4_c(src_diff, dst_coeff, diff_stride, txfm_param->tx_type, + txfm_param->bd); } static void highbd_fwd_txfm_8x16(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, - FWD_TXFM_OPT fwd_txfm_opt, const int bd) { - (void)fwd_txfm_opt; - (void)bd; - av1_highbd_fht8x16(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { + int32_t *dst_coeff = (int32_t *)coeff; + av1_fwd_txfm2d_8x16_c(src_diff, dst_coeff, diff_stride, txfm_param->tx_type, + txfm_param->bd); } static void highbd_fwd_txfm_16x8(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, - FWD_TXFM_OPT fwd_txfm_opt, const int bd) { - (void)fwd_txfm_opt; - (void)bd; - av1_highbd_fht16x8(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { + int32_t *dst_coeff = (int32_t *)coeff; + av1_fwd_txfm2d_16x8_c(src_diff, dst_coeff, diff_stride, txfm_param->tx_type, + txfm_param->bd); } static void highbd_fwd_txfm_16x32(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, - FWD_TXFM_OPT fwd_txfm_opt, const int bd) { - (void)fwd_txfm_opt; - (void)bd; - av1_highbd_fht16x32(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { + int32_t *dst_coeff = (int32_t *)coeff; + av1_fwd_txfm2d_16x32_c(src_diff, dst_coeff, diff_stride, txfm_param->tx_type, + txfm_param->bd); } static void highbd_fwd_txfm_32x16(const int16_t *src_diff, tran_low_t *coeff, - int diff_stride, TX_TYPE tx_type, - FWD_TXFM_OPT fwd_txfm_opt, const int bd) { - (void)fwd_txfm_opt; - (void)bd; - av1_highbd_fht32x16(src_diff, coeff, diff_stride, tx_type); + int diff_stride, TxfmParam *txfm_param) { + int32_t *dst_coeff = (int32_t *)coeff; + av1_fwd_txfm2d_32x16_c(src_diff, dst_coeff, diff_stride, txfm_param->tx_type, + txfm_param->bd); } static void highbd_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, const int bd) { - (void)fwd_txfm_opt; + int diff_stride, TxfmParam *txfm_param) { + int32_t *dst_coeff = (int32_t *)coeff; + const int tx_type = txfm_param->tx_type; + const int bd = txfm_param->bd; switch (tx_type) { case DCT_DCT: case ADST_DCT: case DCT_ADST: case ADST_ADST: - av1_fwd_txfm2d_8x8(src_diff, coeff, diff_stride, tx_type, bd); + // fallthrough intended + av1_fwd_txfm2d_8x8(src_diff, dst_coeff, diff_stride, tx_type, bd); break; #if CONFIG_EXT_TX case FLIPADST_DCT: @@ -296,33 +312,37 @@ static void highbd_fwd_txfm_8x8(const int16_t *src_diff, tran_low_t *coeff, case FLIPADST_FLIPADST: case ADST_FLIPADST: case FLIPADST_ADST: - av1_fwd_txfm2d_8x8(src_diff, coeff, diff_stride, tx_type, bd); + // fallthrough intended + av1_fwd_txfm2d_8x8(src_diff, dst_coeff, diff_stride, tx_type, bd); break; + // use the c version for anything including identity for now case V_DCT: case H_DCT: case V_ADST: case H_ADST: case V_FLIPADST: case H_FLIPADST: - // Use C version since DST exists only in C - av1_highbd_fht8x8_c(src_diff, coeff, diff_stride, tx_type); + case IDTX: + // fallthrough intended + av1_fwd_txfm2d_8x8_c(src_diff, dst_coeff, diff_stride, tx_type, bd); break; - case IDTX: av1_fwd_idtx_c(src_diff, coeff, diff_stride, 8, tx_type); break; #endif // CONFIG_EXT_TX default: assert(0); } } static void highbd_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, const int bd) { - (void)fwd_txfm_opt; + int diff_stride, TxfmParam *txfm_param) { + int32_t *dst_coeff = (int32_t *)coeff; + const int tx_type = txfm_param->tx_type; + const int bd = txfm_param->bd; switch (tx_type) { case DCT_DCT: case ADST_DCT: case DCT_ADST: case ADST_ADST: - av1_fwd_txfm2d_16x16(src_diff, coeff, diff_stride, tx_type, bd); + // fallthrough intended + av1_fwd_txfm2d_16x16(src_diff, dst_coeff, diff_stride, tx_type, bd); break; #if CONFIG_EXT_TX case FLIPADST_DCT: @@ -330,63 +350,72 @@ static void highbd_fwd_txfm_16x16(const int16_t *src_diff, tran_low_t *coeff, case FLIPADST_FLIPADST: case ADST_FLIPADST: case FLIPADST_ADST: - av1_fwd_txfm2d_16x16(src_diff, coeff, diff_stride, tx_type, bd); + // fallthrough intended + av1_fwd_txfm2d_16x16(src_diff, dst_coeff, diff_stride, tx_type, bd); break; + // use the c version for anything including identity for now case V_DCT: case H_DCT: case V_ADST: case H_ADST: case V_FLIPADST: case H_FLIPADST: - // Use C version since DST exists only in C - av1_highbd_fht16x16_c(src_diff, coeff, diff_stride, tx_type); + case IDTX: + // fallthrough intended + av1_fwd_txfm2d_16x16_c(src_diff, dst_coeff, diff_stride, tx_type, bd); break; - case IDTX: av1_fwd_idtx_c(src_diff, coeff, diff_stride, 16, tx_type); break; #endif // CONFIG_EXT_TX default: assert(0); } } static void highbd_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, const int bd) { - (void)fwd_txfm_opt; + int diff_stride, TxfmParam *txfm_param) { + int32_t *dst_coeff = (int32_t *)coeff; + const int tx_type = txfm_param->tx_type; + const int bd = txfm_param->bd; switch (tx_type) { case DCT_DCT: - av1_fwd_txfm2d_32x32(src_diff, coeff, diff_stride, tx_type, bd); - break; -#if CONFIG_EXT_TX case ADST_DCT: case DCT_ADST: case ADST_ADST: + // fallthrough intended + av1_fwd_txfm2d_32x32(src_diff, dst_coeff, diff_stride, tx_type, bd); + break; +#if CONFIG_EXT_TX case FLIPADST_DCT: case DCT_FLIPADST: case FLIPADST_FLIPADST: case ADST_FLIPADST: case FLIPADST_ADST: + // fallthrough intended + av1_fwd_txfm2d_32x32(src_diff, dst_coeff, diff_stride, tx_type, bd); + break; + // use the c version for anything including identity for now case V_DCT: case H_DCT: case V_ADST: case H_ADST: case V_FLIPADST: case H_FLIPADST: - av1_highbd_fht32x32_c(src_diff, coeff, diff_stride, tx_type); + case IDTX: + // fallthrough intended + av1_fwd_txfm2d_32x32_c(src_diff, dst_coeff, diff_stride, tx_type, bd); break; - case IDTX: av1_fwd_idtx_c(src_diff, coeff, diff_stride, 32, tx_type); break; #endif // CONFIG_EXT_TX - default: assert(0); break; + default: assert(0); } } #if CONFIG_TX64X64 static void highbd_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, const int bd) { - (void)fwd_txfm_opt; - (void)bd; + int diff_stride, TxfmParam *txfm_param) { + int32_t *dst_coeff = (int32_t *)coeff; + const int tx_type = txfm_param->tx_type; + const int bd = txfm_param->bd; switch (tx_type) { case DCT_DCT: - av1_highbd_fht64x64(src_diff, coeff, diff_stride, tx_type); + av1_fwd_txfm2d_64x64(src_diff, dst_coeff, diff_stride, tx_type, bd); break; #if CONFIG_EXT_TX case ADST_DCT: @@ -403,141 +432,119 @@ static void highbd_fwd_txfm_64x64(const int16_t *src_diff, tran_low_t *coeff, case H_ADST: case V_FLIPADST: case H_FLIPADST: - av1_highbd_fht64x64(src_diff, coeff, diff_stride, tx_type); + // TODO(sarahparker) + // I've deleted the 64x64 implementations that existed in lieu + // of adst, flipadst and identity for simplicity but will bring back + // in a later change. This shouldn't impact performance since + // DCT_DCT is the only extended type currently allowed for 64x64, + // as dictated by get_ext_tx_set_type in blockd.h. + av1_fwd_txfm2d_64x64_c(src_diff, dst_coeff, diff_stride, DCT_DCT, bd); + break; + case IDTX: + av1_fwd_idtx_c(src_diff, dst_coeff, diff_stride, 64, 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; } } #endif // CONFIG_TX64X64 -#endif // CONFIG_HIGHBITDEPTH void av1_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_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; + TxfmParam *txfm_param) { + const TX_SIZE tx_size = txfm_param->tx_size; switch (tx_size) { #if CONFIG_TX64X64 case TX_64X64: - fwd_txfm_64x64(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt); + fwd_txfm_64x64(src_diff, coeff, diff_stride, txfm_param); break; #endif // CONFIG_TX64X64 case TX_32X32: - fwd_txfm_32x32(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt); + fwd_txfm_32x32(src_diff, coeff, diff_stride, txfm_param); break; case TX_16X16: - fwd_txfm_16x16(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt); - break; - case TX_8X8: - fwd_txfm_8x8(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt); - break; - case TX_4X8: - fwd_txfm_4x8(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt); - break; - case TX_8X4: - fwd_txfm_8x4(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt); + fwd_txfm_16x16(src_diff, coeff, diff_stride, txfm_param); break; + case TX_8X8: fwd_txfm_8x8(src_diff, coeff, diff_stride, txfm_param); break; + case TX_4X8: fwd_txfm_4x8(src_diff, coeff, diff_stride, txfm_param); break; + case TX_8X4: fwd_txfm_8x4(src_diff, coeff, diff_stride, txfm_param); break; case TX_8X16: - fwd_txfm_8x16(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt); + fwd_txfm_8x16(src_diff, coeff, diff_stride, txfm_param); break; case TX_16X8: - fwd_txfm_16x8(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt); + fwd_txfm_16x8(src_diff, coeff, diff_stride, txfm_param); break; case TX_16X32: - fwd_txfm_16x32(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt); + fwd_txfm_16x32(src_diff, coeff, diff_stride, txfm_param); break; case TX_32X16: - fwd_txfm_32x16(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt); - break; - case TX_4X4: - fwd_txfm_4x4(src_diff, coeff, diff_stride, tx_type, lossless); + fwd_txfm_32x16(src_diff, coeff, diff_stride, txfm_param); break; + case TX_4X4: fwd_txfm_4x4(src_diff, coeff, diff_stride, txfm_param); break; #if CONFIG_CHROMA_2X2 - case TX_2X2: - fwd_txfm_2x2(src_diff, coeff, diff_stride, tx_type, lossless); - break; + case TX_2X2: fwd_txfm_2x2(src_diff, coeff, diff_stride, txfm_param); break; #endif -#if CONFIG_EXT_TX && CONFIG_RECT_TX && CONFIG_RECT_TX_EXT +#if CONFIG_RECT_TX_EXT && (CONFIG_EXT_TX || CONFIG_VAR_TX) case TX_4X16: - fwd_txfm_4x16(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt); + fwd_txfm_4x16(src_diff, coeff, diff_stride, txfm_param); break; case TX_16X4: - fwd_txfm_16x4(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt); + fwd_txfm_16x4(src_diff, coeff, diff_stride, txfm_param); break; case TX_8X32: - fwd_txfm_8x32(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt); + fwd_txfm_8x32(src_diff, coeff, diff_stride, txfm_param); break; case TX_32X8: - fwd_txfm_32x8(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt); + fwd_txfm_32x8(src_diff, coeff, diff_stride, txfm_param); break; -#endif // CONFIG_EXT_TX && CONFIG_RECT_TX && CONFIG_RECT_TX_EXT +#endif default: assert(0); break; } } -#if CONFIG_HIGHBITDEPTH void av1_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_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; - const int bd = fwd_txfm_param->bd; + int diff_stride, TxfmParam *txfm_param) { + const TX_SIZE tx_size = txfm_param->tx_size; switch (tx_size) { #if CONFIG_TX64X64 case TX_64X64: - highbd_fwd_txfm_64x64(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt, - bd); + highbd_fwd_txfm_64x64(src_diff, coeff, diff_stride, txfm_param); break; #endif // CONFIG_TX64X64 case TX_32X32: - highbd_fwd_txfm_32x32(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt, - bd); + highbd_fwd_txfm_32x32(src_diff, coeff, diff_stride, txfm_param); break; case TX_16X16: - highbd_fwd_txfm_16x16(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt, - bd); + highbd_fwd_txfm_16x16(src_diff, coeff, diff_stride, txfm_param); break; case TX_8X8: - highbd_fwd_txfm_8x8(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt, - bd); + highbd_fwd_txfm_8x8(src_diff, coeff, diff_stride, txfm_param); break; case TX_4X8: - highbd_fwd_txfm_4x8(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt, - bd); + highbd_fwd_txfm_4x8(src_diff, coeff, diff_stride, txfm_param); break; case TX_8X4: - highbd_fwd_txfm_8x4(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt, - bd); + highbd_fwd_txfm_8x4(src_diff, coeff, diff_stride, txfm_param); break; case TX_8X16: - highbd_fwd_txfm_8x16(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt, - bd); + highbd_fwd_txfm_8x16(src_diff, coeff, diff_stride, txfm_param); break; case TX_16X8: - highbd_fwd_txfm_16x8(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt, - bd); + highbd_fwd_txfm_16x8(src_diff, coeff, diff_stride, txfm_param); break; case TX_16X32: - highbd_fwd_txfm_16x32(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt, - bd); + highbd_fwd_txfm_16x32(src_diff, coeff, diff_stride, txfm_param); break; case TX_32X16: - highbd_fwd_txfm_32x16(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt, - bd); + highbd_fwd_txfm_32x16(src_diff, coeff, diff_stride, txfm_param); break; case TX_4X4: - highbd_fwd_txfm_4x4(src_diff, coeff, diff_stride, tx_type, lossless, bd); + highbd_fwd_txfm_4x4(src_diff, coeff, diff_stride, txfm_param); break; #if CONFIG_CHROMA_2X2 case TX_2X2: - highbd_fwd_txfm_2x2(src_diff, coeff, diff_stride, tx_type, lossless, bd); + highbd_fwd_txfm_2x2(src_diff, coeff, diff_stride, txfm_param); break; #endif default: assert(0); break; } } -#endif // CONFIG_HIGHBITDEPTH |