This commit is contained in:
Anthony Minessale
2019-09-11 15:51:47 +00:00
committed by Andrey Volk
parent 34fcadbd53
commit ceb051af4e
821 changed files with 89961 additions and 48650 deletions

View File

@@ -20,24 +20,13 @@
#include "test/register_state_check.h"
#include "vpx/vpx_codec.h"
#include "vpx/vpx_integer.h"
#include "vpx_dsp/variance.h"
#include "vpx_mem/vpx_mem.h"
#include "vpx_ports/mem.h"
#include "vpx_ports/vpx_timer.h"
namespace {
typedef unsigned int (*VarianceMxNFunc)(const uint8_t *a, int a_stride,
const uint8_t *b, int b_stride,
unsigned int *sse);
typedef unsigned int (*SubpixVarMxNFunc)(const uint8_t *a, int a_stride,
int xoffset, int yoffset,
const uint8_t *b, int b_stride,
unsigned int *sse);
typedef unsigned int (*SubpixAvgVarMxNFunc)(const uint8_t *a, int a_stride,
int xoffset, int yoffset,
const uint8_t *b, int b_stride,
uint32_t *sse,
const uint8_t *second_pred);
typedef unsigned int (*Get4x4SseFunc)(const uint8_t *a, int a_stride,
const uint8_t *b, int b_stride);
typedef unsigned int (*SumOfSquaresFunction)(const int16_t *src);
@@ -572,15 +561,16 @@ class SubpelVarianceTest
if (!use_high_bit_depth()) {
src_ = reinterpret_cast<uint8_t *>(vpx_memalign(16, block_size()));
sec_ = reinterpret_cast<uint8_t *>(vpx_memalign(16, block_size()));
ref_ = new uint8_t[block_size() + width() + height() + 1];
ref_ = reinterpret_cast<uint8_t *>(
vpx_malloc(block_size() + width() + height() + 1));
#if CONFIG_VP9_HIGHBITDEPTH
} else {
src_ = CONVERT_TO_BYTEPTR(reinterpret_cast<uint16_t *>(
vpx_memalign(16, block_size() * sizeof(uint16_t))));
sec_ = CONVERT_TO_BYTEPTR(reinterpret_cast<uint16_t *>(
vpx_memalign(16, block_size() * sizeof(uint16_t))));
ref_ = CONVERT_TO_BYTEPTR(
new uint16_t[block_size() + width() + height() + 1]);
ref_ = CONVERT_TO_BYTEPTR(reinterpret_cast<uint16_t *>(vpx_malloc(
(block_size() + width() + height() + 1) * sizeof(uint16_t))));
#endif // CONFIG_VP9_HIGHBITDEPTH
}
ASSERT_TRUE(src_ != NULL);
@@ -591,12 +581,12 @@ class SubpelVarianceTest
virtual void TearDown() {
if (!use_high_bit_depth()) {
vpx_free(src_);
delete[] ref_;
vpx_free(sec_);
vpx_free(ref_);
#if CONFIG_VP9_HIGHBITDEPTH
} else {
vpx_free(CONVERT_TO_SHORTPTR(src_));
delete[] CONVERT_TO_SHORTPTR(ref_);
vpx_free(CONVERT_TO_SHORTPTR(ref_));
vpx_free(CONVERT_TO_SHORTPTR(sec_));
#endif // CONFIG_VP9_HIGHBITDEPTH
}
@@ -692,7 +682,7 @@ void SubpelVarianceTest<SubpelVarianceFunctionType>::ExtremeRefTest() {
}
template <>
void SubpelVarianceTest<SubpixAvgVarMxNFunc>::RefTest() {
void SubpelVarianceTest<vpx_subp_avg_variance_fn_t>::RefTest() {
for (int x = 0; x < 8; ++x) {
for (int y = 0; y < 8; ++y) {
if (!use_high_bit_depth()) {
@@ -728,10 +718,10 @@ void SubpelVarianceTest<SubpixAvgVarMxNFunc>::RefTest() {
}
typedef MainTestClass<Get4x4SseFunc> VpxSseTest;
typedef MainTestClass<VarianceMxNFunc> VpxMseTest;
typedef MainTestClass<VarianceMxNFunc> VpxVarianceTest;
typedef SubpelVarianceTest<SubpixVarMxNFunc> VpxSubpelVarianceTest;
typedef SubpelVarianceTest<SubpixAvgVarMxNFunc> VpxSubpelAvgVarianceTest;
typedef MainTestClass<vpx_variance_fn_t> VpxMseTest;
typedef MainTestClass<vpx_variance_fn_t> VpxVarianceTest;
typedef SubpelVarianceTest<vpx_subpixvariance_fn_t> VpxSubpelVarianceTest;
typedef SubpelVarianceTest<vpx_subp_avg_variance_fn_t> VpxSubpelAvgVarianceTest;
TEST_P(VpxSseTest, RefSse) { RefTestSse(); }
TEST_P(VpxSseTest, MaxSse) { MaxTestSse(); }
@@ -756,14 +746,14 @@ INSTANTIATE_TEST_CASE_P(C, VpxSseTest,
::testing::Values(SseParams(2, 2,
&vpx_get4x4sse_cs_c)));
typedef TestParams<VarianceMxNFunc> MseParams;
typedef TestParams<vpx_variance_fn_t> MseParams;
INSTANTIATE_TEST_CASE_P(C, VpxMseTest,
::testing::Values(MseParams(4, 4, &vpx_mse16x16_c),
MseParams(4, 3, &vpx_mse16x8_c),
MseParams(3, 4, &vpx_mse8x16_c),
MseParams(3, 3, &vpx_mse8x8_c)));
typedef TestParams<VarianceMxNFunc> VarianceParams;
typedef TestParams<vpx_variance_fn_t> VarianceParams;
INSTANTIATE_TEST_CASE_P(
C, VpxVarianceTest,
::testing::Values(VarianceParams(6, 6, &vpx_variance64x64_c),
@@ -780,7 +770,7 @@ INSTANTIATE_TEST_CASE_P(
VarianceParams(2, 3, &vpx_variance4x8_c),
VarianceParams(2, 2, &vpx_variance4x4_c)));
typedef TestParams<SubpixVarMxNFunc> SubpelVarianceParams;
typedef TestParams<vpx_subpixvariance_fn_t> SubpelVarianceParams;
INSTANTIATE_TEST_CASE_P(
C, VpxSubpelVarianceTest,
::testing::Values(
@@ -798,7 +788,7 @@ INSTANTIATE_TEST_CASE_P(
SubpelVarianceParams(2, 3, &vpx_sub_pixel_variance4x8_c, 0),
SubpelVarianceParams(2, 2, &vpx_sub_pixel_variance4x4_c, 0)));
typedef TestParams<SubpixAvgVarMxNFunc> SubpelAvgVarianceParams;
typedef TestParams<vpx_subp_avg_variance_fn_t> SubpelAvgVarianceParams;
INSTANTIATE_TEST_CASE_P(
C, VpxSubpelAvgVarianceTest,
::testing::Values(
@@ -817,10 +807,11 @@ INSTANTIATE_TEST_CASE_P(
SubpelAvgVarianceParams(2, 2, &vpx_sub_pixel_avg_variance4x4_c, 0)));
#if CONFIG_VP9_HIGHBITDEPTH
typedef MainTestClass<VarianceMxNFunc> VpxHBDMseTest;
typedef MainTestClass<VarianceMxNFunc> VpxHBDVarianceTest;
typedef SubpelVarianceTest<SubpixVarMxNFunc> VpxHBDSubpelVarianceTest;
typedef SubpelVarianceTest<SubpixAvgVarMxNFunc> VpxHBDSubpelAvgVarianceTest;
typedef MainTestClass<vpx_variance_fn_t> VpxHBDMseTest;
typedef MainTestClass<vpx_variance_fn_t> VpxHBDVarianceTest;
typedef SubpelVarianceTest<vpx_subpixvariance_fn_t> VpxHBDSubpelVarianceTest;
typedef SubpelVarianceTest<vpx_subp_avg_variance_fn_t>
VpxHBDSubpelAvgVarianceTest;
TEST_P(VpxHBDMseTest, RefMse) { RefTestMse(); }
TEST_P(VpxHBDMseTest, MaxMse) { MaxTestMse(); }
@@ -1384,15 +1375,19 @@ INSTANTIATE_TEST_CASE_P(
#if HAVE_AVX2
INSTANTIATE_TEST_CASE_P(AVX2, VpxMseTest,
::testing::Values(MseParams(4, 4, &vpx_mse16x16_avx2)));
::testing::Values(MseParams(4, 4, &vpx_mse16x16_avx2),
MseParams(4, 3, &vpx_mse16x8_avx2)));
INSTANTIATE_TEST_CASE_P(
AVX2, VpxVarianceTest,
::testing::Values(VarianceParams(6, 6, &vpx_variance64x64_avx2),
VarianceParams(6, 5, &vpx_variance64x32_avx2),
VarianceParams(5, 6, &vpx_variance32x64_avx2),
VarianceParams(5, 5, &vpx_variance32x32_avx2),
VarianceParams(5, 4, &vpx_variance32x16_avx2),
VarianceParams(4, 4, &vpx_variance16x16_avx2)));
VarianceParams(4, 5, &vpx_variance16x32_avx2),
VarianceParams(4, 4, &vpx_variance16x16_avx2),
VarianceParams(4, 3, &vpx_variance16x8_avx2)));
INSTANTIATE_TEST_CASE_P(
AVX2, VpxSubpelVarianceTest,
@@ -1539,6 +1534,27 @@ INSTANTIATE_TEST_CASE_P(VSX, SumOfSquaresTest,
INSTANTIATE_TEST_CASE_P(VSX, VpxSseTest,
::testing::Values(SseParams(2, 2,
&vpx_get4x4sse_cs_vsx)));
INSTANTIATE_TEST_CASE_P(VSX, VpxMseTest,
::testing::Values(MseParams(4, 4, &vpx_mse16x16_vsx),
MseParams(4, 3, &vpx_mse16x8_vsx),
MseParams(3, 4, &vpx_mse8x16_vsx),
MseParams(3, 3, &vpx_mse8x8_vsx)));
INSTANTIATE_TEST_CASE_P(
VSX, VpxVarianceTest,
::testing::Values(VarianceParams(6, 6, &vpx_variance64x64_vsx),
VarianceParams(6, 5, &vpx_variance64x32_vsx),
VarianceParams(5, 6, &vpx_variance32x64_vsx),
VarianceParams(5, 5, &vpx_variance32x32_vsx),
VarianceParams(5, 4, &vpx_variance32x16_vsx),
VarianceParams(4, 5, &vpx_variance16x32_vsx),
VarianceParams(4, 4, &vpx_variance16x16_vsx),
VarianceParams(4, 3, &vpx_variance16x8_vsx),
VarianceParams(3, 4, &vpx_variance8x16_vsx),
VarianceParams(3, 3, &vpx_variance8x8_vsx),
VarianceParams(3, 2, &vpx_variance8x4_vsx),
VarianceParams(2, 3, &vpx_variance4x8_vsx),
VarianceParams(2, 2, &vpx_variance4x4_vsx)));
#endif // HAVE_VSX
#if HAVE_MMI