(void)bd;
for (i = 0; i < 32; ++i) output[i] = input[i] * 4;
}
+#endif // CONFIG_EXT_TX
static void highbd_ihalfright32_c(const tran_low_t *input, tran_low_t *output,
int bd) {
// Note overall scaling factor is 4 times orthogonal
}
+#if CONFIG_EXT_TX
#if CONFIG_TX64X64
static void highbd_iidtx64_c(const tran_low_t *input, tran_low_t *output,
int bd) {
}
}
-#if CONFIG_EXT_TX
void av1_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest8,
int stride, int tx_type, int bd) {
static const highbd_transform_2d HIGH_IHT_4x8[] = {
{ aom_highbd_iadst8_c, aom_highbd_idct4_c }, // ADST_DCT
{ aom_highbd_idct8_c, aom_highbd_iadst4_c }, // DCT_ADST
{ aom_highbd_iadst8_c, aom_highbd_iadst4_c }, // ADST_ADST
+#if CONFIG_EXT_TX
{ aom_highbd_iadst8_c, aom_highbd_idct4_c }, // FLIPADST_DCT
{ aom_highbd_idct8_c, aom_highbd_iadst4_c }, // DCT_FLIPADST
{ aom_highbd_iadst8_c, aom_highbd_iadst4_c }, // FLIPADST_FLIPADST
{ highbd_iidtx8_c, aom_highbd_iadst4_c }, // H_ADST
{ aom_highbd_iadst8_c, highbd_iidtx4_c }, // V_FLIPADST
{ highbd_iidtx8_c, aom_highbd_iadst4_c }, // H_FLIPADST
+#endif // CONFIG_EXT_TX
};
const int n = 4;
const int n2 = 8;
HIGH_IHT_4x8[tx_type].cols(out[i], out[i], bd);
}
+#if CONFIG_EXT_TX
maybe_flip_strides16(&dest, &stride, &outp, &outstride, tx_type, n2, n);
+#endif // CONFIG_EXT_TX
// Sum with the destination
for (i = 0; i < n2; ++i) {
{ aom_highbd_iadst4_c, aom_highbd_idct8_c }, // ADST_DCT
{ aom_highbd_idct4_c, aom_highbd_iadst8_c }, // DCT_ADST
{ aom_highbd_iadst4_c, aom_highbd_iadst8_c }, // ADST_ADST
+#if CONFIG_EXT_TX
{ aom_highbd_iadst4_c, aom_highbd_idct8_c }, // FLIPADST_DCT
{ aom_highbd_idct4_c, aom_highbd_iadst8_c }, // DCT_FLIPADST
{ aom_highbd_iadst4_c, aom_highbd_iadst8_c }, // FLIPADST_FLIPADST
{ highbd_iidtx4_c, aom_highbd_iadst8_c }, // H_ADST
{ aom_highbd_iadst4_c, highbd_iidtx8_c }, // V_FLIPADST
{ highbd_iidtx4_c, aom_highbd_iadst8_c }, // H_FLIPADST
+#endif // CONFIG_EXT_TX
};
const int n = 4;
const int n2 = 8;
HIGH_IHT_8x4[tx_type].cols(out[i], out[i], bd);
}
+#if CONFIG_EXT_TX
maybe_flip_strides16(&dest, &stride, &outp, &outstride, tx_type, n, n2);
+#endif // CONFIG_EXT_TX
// Sum with the destination
for (i = 0; i < n; ++i) {
{ aom_highbd_iadst16_c, aom_highbd_idct8_c }, // ADST_DCT
{ aom_highbd_idct16_c, aom_highbd_iadst8_c }, // DCT_ADST
{ aom_highbd_iadst16_c, aom_highbd_iadst8_c }, // ADST_ADST
+#if CONFIG_EXT_TX
{ aom_highbd_iadst16_c, aom_highbd_idct8_c }, // FLIPADST_DCT
{ aom_highbd_idct16_c, aom_highbd_iadst8_c }, // DCT_FLIPADST
{ aom_highbd_iadst16_c, aom_highbd_iadst8_c }, // FLIPADST_FLIPADST
{ highbd_iidtx16_c, aom_highbd_iadst8_c }, // H_ADST
{ aom_highbd_iadst16_c, highbd_iidtx8_c }, // V_FLIPADST
{ highbd_iidtx16_c, aom_highbd_iadst8_c }, // H_FLIPADST
+#endif // CONFIG_EXT_TX
};
const int n = 8;
const int n2 = 16;
HIGH_IHT_8x16[tx_type].cols(out[i], out[i], bd);
}
+#if CONFIG_EXT_TX
maybe_flip_strides16(&dest, &stride, &outp, &outstride, tx_type, n2, n);
+#endif // CONFIG_EXT_TX
// Sum with the destination
for (i = 0; i < n2; ++i) {
{ aom_highbd_iadst8_c, aom_highbd_idct16_c }, // ADST_DCT
{ aom_highbd_idct8_c, aom_highbd_iadst16_c }, // DCT_ADST
{ aom_highbd_iadst8_c, aom_highbd_iadst16_c }, // ADST_ADST
+#if CONFIG_EXT_TX
{ aom_highbd_iadst8_c, aom_highbd_idct16_c }, // FLIPADST_DCT
{ aom_highbd_idct8_c, aom_highbd_iadst16_c }, // DCT_FLIPADST
{ aom_highbd_iadst8_c, aom_highbd_iadst16_c }, // FLIPADST_FLIPADST
{ highbd_iidtx8_c, aom_highbd_iadst16_c }, // H_ADST
{ aom_highbd_iadst8_c, highbd_iidtx16_c }, // V_FLIPADST
{ highbd_iidtx8_c, aom_highbd_iadst16_c }, // H_FLIPADST
+#endif // CONFIG_EXT_TX
};
const int n = 8;
const int n2 = 16;
HIGH_IHT_16x8[tx_type].cols(out[i], out[i], bd);
}
+#if CONFIG_EXT_TX
maybe_flip_strides16(&dest, &stride, &outp, &outstride, tx_type, n, n2);
+#endif // CONFIG_EXT_TX
// Sum with the destination
for (i = 0; i < n; ++i) {
{ highbd_ihalfright32_c, aom_highbd_idct16_c }, // ADST_DCT
{ aom_highbd_idct32_c, aom_highbd_iadst16_c }, // DCT_ADST
{ highbd_ihalfright32_c, aom_highbd_iadst16_c }, // ADST_ADST
+#if CONFIG_EXT_TX
{ highbd_ihalfright32_c, aom_highbd_idct16_c }, // FLIPADST_DCT
{ aom_highbd_idct32_c, aom_highbd_iadst16_c }, // DCT_FLIPADST
{ highbd_ihalfright32_c, aom_highbd_iadst16_c }, // FLIPADST_FLIPADST
{ highbd_iidtx32_c, aom_highbd_iadst16_c }, // H_ADST
{ highbd_ihalfright32_c, highbd_iidtx16_c }, // V_FLIPADST
{ highbd_iidtx32_c, aom_highbd_iadst16_c }, // H_FLIPADST
+#endif // CONFIG_EXT_TX
};
const int n = 16;
const int n2 = 32;
HIGH_IHT_16x32[tx_type].cols(out[i], out[i], bd);
}
+#if CONFIG_EXT_TX
maybe_flip_strides16(&dest, &stride, &outp, &outstride, tx_type, n2, n);
+#endif // CONFIG_EXT_TX
// Sum with the destination
for (i = 0; i < n2; ++i) {
{ aom_highbd_iadst16_c, aom_highbd_idct32_c }, // ADST_DCT
{ aom_highbd_idct16_c, highbd_ihalfright32_c }, // DCT_ADST
{ aom_highbd_iadst16_c, highbd_ihalfright32_c }, // ADST_ADST
+#if CONFIG_EXT_TX
{ aom_highbd_iadst16_c, aom_highbd_idct32_c }, // FLIPADST_DCT
{ aom_highbd_idct16_c, highbd_ihalfright32_c }, // DCT_FLIPADST
{ aom_highbd_iadst16_c, highbd_ihalfright32_c }, // FLIPADST_FLIPADST
{ highbd_iidtx16_c, highbd_ihalfright32_c }, // H_ADST
{ aom_highbd_iadst16_c, highbd_iidtx32_c }, // V_FLIPADST
{ highbd_iidtx16_c, highbd_ihalfright32_c }, // H_FLIPADST
+#endif // CONFIG_EXT_TX
};
const int n = 16;
const int n2 = 32;
HIGH_IHT_32x16[tx_type].cols(out[i], out[i], bd);
}
+#if CONFIG_EXT_TX
maybe_flip_strides16(&dest, &stride, &outp, &outstride, tx_type, n, n2);
+#endif // CONFIG_EXT_TX
// Sum with the destination
for (i = 0; i < n; ++i) {
}
}
}
-#endif // CONFIG_EXT_TX
void av1_highbd_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest8,
int stride, int tx_type, int bd) {
}
}
-#if CONFIG_EXT_TX
void av1_highbd_inv_txfm_add_4x8(const tran_low_t *input, uint8_t *dest,
int stride, int eob, int bd, TX_TYPE tx_type) {
(void)eob;
(void)eob;
av1_highbd_iht32x16_512_add_c(input, dest, stride, tx_type, bd);
}
-#endif // CONFIG_EXT_TX
void av1_highbd_inv_txfm_add_8x8(const tran_low_t *input, uint8_t *dest,
int stride, int eob, int bd, TX_TYPE tx_type) {
case TX_8X8:
av1_highbd_inv_txfm_add_8x8(input, dest, stride, eob, bd, tx_type);
break;
-#if CONFIG_EXT_TX
case TX_4X8:
av1_highbd_inv_txfm_add_4x8(input, dest, stride, eob, bd, tx_type);
break;
case TX_32X16:
av1_highbd_inv_txfm_add_32x16(input, dest, stride, eob, bd, tx_type);
break;
-#endif // CONFIG_EXT_TX
case TX_4X4:
// this is like av1_short_idct4x4 but has a special case around eob<=1
// which is significant (not just an optimization) for the lossless