#include "av1/common/x86/av1_txfm_sse2.h"
#include "av1/encoder/av1_fwd_txfm1d_cfg.h"
#include "av1/encoder/x86/av1_fwd_txfm_sse2.h"
static void fdct4x4_new_sse2(const __m128i *input, __m128i *output,
int8_t cos_bit) { … }
static void fdct8x4_new_sse2(const __m128i *input, __m128i *output,
int8_t cos_bit) { … }
static void fdct4x8_new_sse2(const __m128i *input, __m128i *output,
int8_t cos_bit) { … }
static void fdct8x16_new_sse2(const __m128i *input, __m128i *output,
int8_t cos_bit) { … }
void av1_fdct8x32_new_sse2(const __m128i *input, __m128i *output,
int8_t cos_bit) { … }
void av1_fdct8x64_new_sse2(const __m128i *input, __m128i *output,
int8_t cos_bit) { … }
static void fadst4x4_new_sse2(const __m128i *input, __m128i *output,
int8_t cos_bit) { … }
static void fadst4x8_new_sse2(const __m128i *input, __m128i *output,
int8_t cos_bit) { … }
static void fadst8x4_new_sse2(const __m128i *input, __m128i *output,
int8_t cos_bit) { … }
static void fadst8x16_new_sse2(const __m128i *input, __m128i *output,
int8_t cos_bit) { … }
static const transform_1d_sse2 col_txfm4x4_arr[TX_TYPES] = …;
static const transform_1d_sse2 row_txfm4x4_arr[TX_TYPES] = …;
static const transform_1d_sse2 col_txfm4x8_arr[TX_TYPES] = …;
static const transform_1d_sse2 row_txfm8x4_arr[TX_TYPES] = …;
static const transform_1d_sse2 col_txfm8x4_arr[TX_TYPES] = …;
static const transform_1d_sse2 row_txfm4x8_arr[TX_TYPES] = …;
static const transform_1d_sse2 col_txfm8x8_arr[TX_TYPES] = …;
static const transform_1d_sse2 row_txfm8x8_arr[TX_TYPES] = …;
static const transform_1d_sse2 col_txfm8x16_arr[TX_TYPES] = …;
static const transform_1d_sse2 row_txfm8x16_arr[TX_TYPES] = …;
static const transform_1d_sse2 row_txfm8x32_arr[TX_TYPES] = …;
void av1_lowbd_fwd_txfm2d_4x4_sse2(const int16_t *input, int32_t *output,
int stride, TX_TYPE tx_type, int bd) { … }
void av1_lowbd_fwd_txfm2d_4x8_sse2(const int16_t *input, int32_t *output,
int stride, TX_TYPE tx_type, int bd) { … }
void av1_lowbd_fwd_txfm2d_4x16_sse2(const int16_t *input, int32_t *output,
int stride, TX_TYPE tx_type, int bd) { … }
void av1_lowbd_fwd_txfm2d_8x4_sse2(const int16_t *input, int32_t *output,
int stride, TX_TYPE tx_type, int bd) { … }
void av1_lowbd_fwd_txfm2d_8x8_sse2(const int16_t *input, int32_t *output,
int stride, TX_TYPE tx_type, int bd) { … }
void av1_lowbd_fwd_txfm2d_8x16_sse2(const int16_t *input, int32_t *output,
int stride, TX_TYPE tx_type, int bd) { … }
void av1_lowbd_fwd_txfm2d_8x32_sse2(const int16_t *input, int32_t *output,
int stride, TX_TYPE tx_type, int bd) { … }
void av1_lowbd_fwd_txfm2d_16x4_sse2(const int16_t *input, int32_t *output,
int stride, TX_TYPE tx_type, int bd) { … }
void av1_lowbd_fwd_txfm2d_16x8_sse2(const int16_t *input, int32_t *output,
int stride, TX_TYPE tx_type, int bd) { … }
void av1_lowbd_fwd_txfm2d_16x16_sse2(const int16_t *input, int32_t *output,
int stride, TX_TYPE tx_type, int bd) { … }
void av1_lowbd_fwd_txfm2d_16x32_sse2(const int16_t *input, int32_t *output,
int stride, TX_TYPE tx_type, int bd) { … }
void av1_lowbd_fwd_txfm2d_32x8_sse2(const int16_t *input, int32_t *output,
int stride, TX_TYPE tx_type, int bd) { … }
void av1_lowbd_fwd_txfm2d_32x16_sse2(const int16_t *input, int32_t *output,
int stride, TX_TYPE tx_type, int bd) { … }
void av1_lowbd_fwd_txfm2d_32x32_sse2(const int16_t *input, int32_t *output,
int stride, TX_TYPE tx_type, int bd) { … }
void av1_lowbd_fwd_txfm2d_64x16_sse2(const int16_t *input, int32_t *output,
int stride, TX_TYPE tx_type, int bd) { … }
void av1_lowbd_fwd_txfm2d_16x64_sse2(const int16_t *input, int32_t *output,
int stride, TX_TYPE tx_type, int bd) { … }
#if AOM_ARCH_X86
static FwdTxfm2dFunc fwd_txfm2d_func_ls[TX_SIZES_ALL] = {
av1_lowbd_fwd_txfm2d_4x4_sse2,
av1_lowbd_fwd_txfm2d_8x8_sse2,
av1_lowbd_fwd_txfm2d_16x16_sse2,
av1_lowbd_fwd_txfm2d_32x32_sse2,
NULL,
av1_lowbd_fwd_txfm2d_4x8_sse2,
av1_lowbd_fwd_txfm2d_8x4_sse2,
av1_lowbd_fwd_txfm2d_8x16_sse2,
av1_lowbd_fwd_txfm2d_16x8_sse2,
av1_lowbd_fwd_txfm2d_16x32_sse2,
av1_lowbd_fwd_txfm2d_32x16_sse2,
NULL,
NULL,
av1_lowbd_fwd_txfm2d_4x16_sse2,
av1_lowbd_fwd_txfm2d_16x4_sse2,
av1_lowbd_fwd_txfm2d_8x32_sse2,
av1_lowbd_fwd_txfm2d_32x8_sse2,
av1_lowbd_fwd_txfm2d_16x64_sse2,
av1_lowbd_fwd_txfm2d_64x16_sse2,
};
void av1_lowbd_fwd_txfm_sse2(const int16_t *src_diff, tran_low_t *coeff,
int diff_stride, TxfmParam *txfm_param) {
FwdTxfm2dFunc fwd_txfm2d_func = fwd_txfm2d_func_ls[txfm_param->tx_size];
if ((fwd_txfm2d_func == NULL) ||
(txfm_param->lossless && txfm_param->tx_size == TX_4X4))
av1_lowbd_fwd_txfm_c(src_diff, coeff, diff_stride, txfm_param);
else
fwd_txfm2d_func(src_diff, coeff, diff_stride, txfm_param->tx_type,
txfm_param->bd);
}
#endif