#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <tuple>
#include "aom_dsp/aom_dsp_common.h"
#include "gtest/gtest.h"
#include "config/av1_rtcd.h"
#include "config/aom_dsp_rtcd.h"
#include "test/acm_random.h"
#include "test/register_state_check.h"
#include "test/transform_test_base.h"
#include "test/util.h"
#include "av1/common/entropy.h"
#include "aom/aom_codec.h"
#include "aom/aom_integer.h"
#include "aom_ports/mem.h"
ACMRandom;
namespace {
FdctFunc;
IdctFunc;
FhtFunc;
Dct4x4Param;
void fwht4x4_ref(const int16_t *in, tran_low_t *out, int stride,
TxfmParam * ) { … }
void iwht4x4_10_c(const tran_low_t *in, uint8_t *out, int stride) { … }
void iwht4x4_12_c(const tran_low_t *in, uint8_t *out, int stride) { … }
#if HAVE_SSE4_1
void iwht4x4_10_sse4_1(const tran_low_t *in, uint8_t *out, int stride) { … }
void iwht4x4_12_sse4_1(const tran_low_t *in, uint8_t *out, int stride) { … }
#endif
class Trans4x4WHT : public libaom_test::TransformTestBase<tran_low_t>,
public ::testing::TestWithParam<Dct4x4Param> { … };
TEST_P(Trans4x4WHT, AccuracyCheck) { … }
TEST_P(Trans4x4WHT, CoeffCheck) { … }
TEST_P(Trans4x4WHT, MemCheck) { … }
TEST_P(Trans4x4WHT, InvAccuracyCheck) { … }
TEST_P(Trans4x4WHT, DISABLED_Speed) { … }
make_tuple;
INSTANTIATE_TEST_SUITE_P(…);
#if HAVE_SSE4_1
INSTANTIATE_TEST_SUITE_P(…);
#endif
#if HAVE_NEON
INSTANTIATE_TEST_SUITE_P(
NEON, Trans4x4WHT,
::testing::Values(make_tuple(&av1_fwht4x4_neon, &iwht4x4_10_c, DCT_DCT,
AOM_BITS_10, 16, &av1_fwht4x4_c),
make_tuple(&av1_fwht4x4_neon, &iwht4x4_12_c, DCT_DCT,
AOM_BITS_12, 16, &av1_fwht4x4_c)));
#endif
}