1 #ifdef ZIMG_X86
2
3 #include <cmath>
4 #include "common/cpuinfo.h"
5 #include "common/pixel.h"
6 #include "common/x86/cpuinfo_x86.h"
7 #include "graph/image_filter.h"
8 #include "colorspace/colorspace.h"
9
10 #include "gtest/gtest.h"
11 #include "graph/filter_validator.h"
12
13 namespace {
14
test_case(const zimg::colorspace::ColorspaceDefinition & csp_in,const zimg::colorspace::ColorspaceDefinition & csp_out,const char * const expected_sha1[3],double expected_snr)15 void test_case(const zimg::colorspace::ColorspaceDefinition &csp_in, const zimg::colorspace::ColorspaceDefinition &csp_out,
16 const char * const expected_sha1[3], double expected_snr)
17 {
18 const unsigned w = 640;
19 const unsigned h = 480;
20
21 if (!zimg::query_x86_capabilities().sse) {
22 SUCCEED() << "sse not available, skipping";
23 return;
24 }
25
26 zimg::PixelFormat format = zimg::PixelType::FLOAT;
27 auto builder = zimg::colorspace::ColorspaceConversion{ w, h }
28 .set_csp_in(csp_in)
29 .set_csp_out(csp_out);
30
31 auto filter_c = builder.set_cpu(zimg::CPUClass::NONE).create();
32 auto filter_sse = builder.set_cpu(zimg::CPUClass::X86_SSE).create();
33
34 FilterValidator validator{ filter_sse.get(), w, h, format };
35 validator.set_sha1(expected_sha1)
36 .set_ref_filter(filter_c.get(), expected_snr)
37 .set_yuv(csp_in.matrix != zimg::colorspace::MatrixCoefficients::RGB)
38 .validate();
39 }
40
41 } // namespace
42
43
TEST(ColorspaceConversionSSETest,test_matrix)44 TEST(ColorspaceConversionSSETest, test_matrix)
45 {
46 using namespace zimg::colorspace;
47
48 const char *expected_sha1[3] = {
49 "0495adab9c82d98e73841e229a9b2041838fc0f2",
50 "ece7edb1118d4b3063ad80f5d8febb6db7e9633a",
51 "73a9ee951c7bde9ae0ada9b90afd1f7ce8b604df"
52 };
53 const double expected_snr = INFINITY;
54
55 test_case({ MatrixCoefficients::RGB, TransferCharacteristics::UNSPECIFIED, ColorPrimaries::UNSPECIFIED },
56 { MatrixCoefficients::REC_709, TransferCharacteristics::UNSPECIFIED, ColorPrimaries::UNSPECIFIED },
57 expected_sha1, expected_snr);
58 }
59
60 #endif // ZIMG_X86
61