History

astyle all

huili2 committed 12 years ago

Commit dc3fae41 parent 101265385 files · +4906 −4701Browse files

Showing the changes to test/encoder/EncUT_Sample.cpp (1 of 85 files). Show all

Unified · Split

test/encoder/EncUT_Sample.cpp+522−503
@@ -11,134 +11,138 @@ · 10 unmodified lines
11 11
12using namespace WelsSVCEnc;12using namespace WelsSVCEnc;
13#ifdef X86_ASM13#ifdef X86_ASM
14TEST(IntraSadSatdFuncTest, WelsIntra16x16Combined3Sad_ssse3){14TEST (IntraSadSatdFuncTest, WelsIntra16x16Combined3Sad_ssse3) {
15 const int32_t iLineSizeDec = 32;15 const int32_t iLineSizeDec = 32;
16 const int32_t iLineSizeEnc = 32;16 const int32_t iLineSizeEnc = 32;
17 int32_t tmpa, tmpb;17 int32_t tmpa, tmpb;
18 int32_t iBestMode_c, iBestMode_a, iLambda = 50;18 int32_t iBestMode_c, iBestMode_a, iLambda = 50;
19 CMemoryAlign cMemoryAlign(0);19 CMemoryAlign cMemoryAlign (0);
20 int32_t iCpuCores = 0;20 int32_t iCpuCores = 0;
21 uint32_t m_uiCpuFeatureFlag = WelsCPUFeatureDetect(&iCpuCores);21 uint32_t m_uiCpuFeatureFlag = WelsCPUFeatureDetect (&iCpuCores);
22 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSSE3))22 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSSE3))
23 return;23 return;
24 uint8_t* pDec = (uint8_t *)cMemoryAlign.WelsMalloc(iLineSizeDec<<5,"pDec");24 uint8_t* pDec = (uint8_t*)cMemoryAlign.WelsMalloc (iLineSizeDec << 5, "pDec");
25 uint8_t* pEnc = (uint8_t *)cMemoryAlign.WelsMalloc(iLineSizeEnc<<5,"pEnc");25 uint8_t* pEnc = (uint8_t*)cMemoryAlign.WelsMalloc (iLineSizeEnc << 5, "pEnc");
26 uint8_t* pDst = (uint8_t *)cMemoryAlign.WelsMalloc(512,"pDst");26 uint8_t* pDst = (uint8_t*)cMemoryAlign.WelsMalloc (512, "pDst");
27 srand((uint32_t)time(NULL));27 srand ((uint32_t)time (NULL));
28 for(int i=0;i<(iLineSizeDec<<5);i++)28 for (int i = 0; i < (iLineSizeDec << 5); i++)
29 pDec[i]=rand()%256;29 pDec[i] = rand() % 256;
30 for(int i=0;i<(iLineSizeEnc<<5);i++)30 for (int i = 0; i < (iLineSizeEnc << 5); i++)
31 pEnc[i]=rand()%256;31 pEnc[i] = rand() % 256;
32 32
33 for(int i=0;i<512;i++)33 for (int i = 0; i < 512; i++)
34 pDst[i]=rand()%256;34 pDst[i] = rand() % 256;
35 tmpa = WelsSampleSadIntra16x16Combined3_c(pDec+128, iLineSizeDec, pEnc,iLineSizeEnc,&iBestMode_c, iLambda, pDst);35 tmpa = WelsSampleSadIntra16x16Combined3_c (pDec + 128, iLineSizeDec, pEnc, iLineSizeEnc, &iBestMode_c, iLambda, pDst);
36 tmpb = WelsIntra16x16Combined3Sad_ssse3(pDec+128, iLineSizeDec, pEnc,iLineSizeEnc,&iBestMode_a, iLambda, pDst);36 tmpb = WelsIntra16x16Combined3Sad_ssse3 (pDec + 128, iLineSizeDec, pEnc, iLineSizeEnc, &iBestMode_a, iLambda, pDst);
37 37
38 ASSERT_EQ(tmpa, tmpb);38 ASSERT_EQ (tmpa, tmpb);
39 ASSERT_EQ(iBestMode_c, iBestMode_a);39 ASSERT_EQ (iBestMode_c, iBestMode_a);
40 40
41 cMemoryAlign.WelsFree(pDec,"pDec");41 cMemoryAlign.WelsFree (pDec, "pDec");
42 cMemoryAlign.WelsFree(pEnc,"pEnc");42 cMemoryAlign.WelsFree (pEnc, "pEnc");
43 cMemoryAlign.WelsFree(pDst,"pDst");43 cMemoryAlign.WelsFree (pDst, "pDst");
44}44}
45 45
46TEST(IntraSadSatdFuncTest, WelsIntra16x16Combined3Satd_sse41){46TEST (IntraSadSatdFuncTest, WelsIntra16x16Combined3Satd_sse41) {
47 const int32_t iLineSizeDec = 32;47 const int32_t iLineSizeDec = 32;
48 const int32_t iLineSizeEnc = 32;48 const int32_t iLineSizeEnc = 32;
49 int32_t tmpa, tmpb;49 int32_t tmpa, tmpb;
50 int32_t iBestMode_c, iBestMode_a, iLambda = 50;50 int32_t iBestMode_c, iBestMode_a, iLambda = 50;
51 CMemoryAlign cMemoryAlign(0);51 CMemoryAlign cMemoryAlign (0);
52 int32_t iCpuCores = 0;52 int32_t iCpuCores = 0;
53 uint32_t m_uiCpuFeatureFlag = WelsCPUFeatureDetect(&iCpuCores);53 uint32_t m_uiCpuFeatureFlag = WelsCPUFeatureDetect (&iCpuCores);
54 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE41))54 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE41))
55 return;55 return;
56 uint8_t* pDec = (uint8_t *)cMemoryAlign.WelsMalloc(iLineSizeDec<<5,"pDec");56 uint8_t* pDec = (uint8_t*)cMemoryAlign.WelsMalloc (iLineSizeDec << 5, "pDec");
57 uint8_t* pEnc = (uint8_t *)cMemoryAlign.WelsMalloc(iLineSizeEnc<<5,"pEnc");57 uint8_t* pEnc = (uint8_t*)cMemoryAlign.WelsMalloc (iLineSizeEnc << 5, "pEnc");
58 uint8_t* pDst = (uint8_t *)cMemoryAlign.WelsMalloc(512,"pDst");58 uint8_t* pDst = (uint8_t*)cMemoryAlign.WelsMalloc (512, "pDst");
59 srand((uint32_t)time(NULL));59 srand ((uint32_t)time (NULL));
60 for(int i=0;i<(iLineSizeDec<<5);i++)60 for (int i = 0; i < (iLineSizeDec << 5); i++)
61 pDec[i]=rand()%256;61 pDec[i] = rand() % 256;
62 for(int i=0;i<(iLineSizeEnc<<5);i++)62 for (int i = 0; i < (iLineSizeEnc << 5); i++)
63 pEnc[i]=rand()%256;63 pEnc[i] = rand() % 256;
64 for(int i=0;i<512;i++)64 for (int i = 0; i < 512; i++)
65 pDst[i]=rand()%256;65 pDst[i] = rand() % 256;
66 tmpa = WelsSampleSatdIntra16x16Combined3_c(pDec+128, iLineSizeDec, pEnc,iLineSizeEnc,&iBestMode_c, iLambda, pDst);66 tmpa = WelsSampleSatdIntra16x16Combined3_c (pDec + 128, iLineSizeDec, pEnc, iLineSizeEnc, &iBestMode_c, iLambda, pDst);
67 tmpb = WelsIntra16x16Combined3Satd_sse41(pDec+128, iLineSizeDec, pEnc,iLineSizeEnc,&iBestMode_a, iLambda, pDst);67 tmpb = WelsIntra16x16Combined3Satd_sse41 (pDec + 128, iLineSizeDec, pEnc, iLineSizeEnc, &iBestMode_a, iLambda, pDst);
68 ASSERT_EQ(tmpa, tmpb);68 ASSERT_EQ (tmpa, tmpb);
69 ASSERT_EQ(iBestMode_c, iBestMode_a);69 ASSERT_EQ (iBestMode_c, iBestMode_a);
70 cMemoryAlign.WelsFree(pDec,"pDec");70 cMemoryAlign.WelsFree (pDec, "pDec");
71 cMemoryAlign.WelsFree(pEnc,"pEnc");71 cMemoryAlign.WelsFree (pEnc, "pEnc");
72 cMemoryAlign.WelsFree(pDst,"pDst");72 cMemoryAlign.WelsFree (pDst, "pDst");
73}73}
74 74
75TEST(IntraSadSatdFuncTest, WelsSampleSatdThree4x4_sse2){75TEST (IntraSadSatdFuncTest, WelsSampleSatdThree4x4_sse2) {
76 const int32_t iLineSizeDec = 32;76 const int32_t iLineSizeDec = 32;
77 const int32_t iLineSizeEnc = 32;77 const int32_t iLineSizeEnc = 32;
78 int32_t tmpa, tmpb;78 int32_t tmpa, tmpb;
79 int32_t iBestMode_c, iBestMode_a, iLambda = 50;79 int32_t iBestMode_c, iBestMode_a, iLambda = 50;
80 int32_t lambda[2] = {iLambda << 2, iLambda};80 int32_t lambda[2] = {iLambda << 2, iLambda};
81 int32_t iPredMode = rand()%3;81 int32_t iPredMode = rand() % 3;
82 CMemoryAlign cMemoryAlign(0);82 CMemoryAlign cMemoryAlign (0);
83 int32_t iCpuCores = 0;83 int32_t iCpuCores = 0;
84 uint32_t m_uiCpuFeatureFlag = WelsCPUFeatureDetect(&iCpuCores);84 uint32_t m_uiCpuFeatureFlag = WelsCPUFeatureDetect (&iCpuCores);
85 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))85 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))
86 return;86 return;
87 uint8_t* pDec = (uint8_t *)cMemoryAlign.WelsMalloc(iLineSizeDec<<5,"pDec");87 uint8_t* pDec = (uint8_t*)cMemoryAlign.WelsMalloc (iLineSizeDec << 5, "pDec");
88 uint8_t* pEnc = (uint8_t *)cMemoryAlign.WelsMalloc(iLineSizeEnc<<5,"pEnc");88 uint8_t* pEnc = (uint8_t*)cMemoryAlign.WelsMalloc (iLineSizeEnc << 5, "pEnc");
89 uint8_t* pDst = (uint8_t *)cMemoryAlign.WelsMalloc(512,"pDst");89 uint8_t* pDst = (uint8_t*)cMemoryAlign.WelsMalloc (512, "pDst");
90 WelsInitFillingPredFuncs(WELS_CPU_SSE2);90 WelsInitFillingPredFuncs (WELS_CPU_SSE2);
91 srand((uint32_t)time(NULL));91 srand ((uint32_t)time (NULL));
92 for(int i=0;i<(iLineSizeDec<<5);i++)92 for (int i = 0; i < (iLineSizeDec << 5); i++)
93 pDec[i]=rand()%256;93 pDec[i] = rand() % 256;
94 for(int i=0;i<(iLineSizeEnc<<5);i++)94 for (int i = 0; i < (iLineSizeEnc << 5); i++)
95 pEnc[i]=rand()%256;95 pEnc[i] = rand() % 256;
96 for(int i=0;i<512;i++)96 for (int i = 0; i < 512; i++)
97 pDst[i]=rand()%256;97 pDst[i] = rand() % 256;
98 tmpa = WelsSampleSatdIntra4x4Combined3_c(pDec+128, iLineSizeDec, pEnc,iLineSizeEnc, pDst, &iBestMode_c, lambda[iPredMode == 2], lambda[iPredMode == 1], lambda[iPredMode == 0]);98 tmpa = WelsSampleSatdIntra4x4Combined3_c (pDec + 128, iLineSizeDec, pEnc, iLineSizeEnc, pDst, &iBestMode_c,
99 tmpb = WelsSampleSatdThree4x4_sse2(pDec+128, iLineSizeDec, pEnc,iLineSizeEnc, pDst, &iBestMode_a, lambda[iPredMode == 2], lambda[iPredMode == 1], lambda[iPredMode == 0]);99 lambda[iPredMode == 2], lambda[iPredMode == 1], lambda[iPredMode == 0]);
100 ASSERT_EQ(tmpa, tmpb);100 tmpb = WelsSampleSatdThree4x4_sse2 (pDec + 128, iLineSizeDec, pEnc, iLineSizeEnc, pDst, &iBestMode_a,
101 ASSERT_EQ(iBestMode_c, iBestMode_a);101 lambda[iPredMode == 2], lambda[iPredMode == 1], lambda[iPredMode == 0]);
102 cMemoryAlign.WelsFree(pDec,"pDec");102 ASSERT_EQ (tmpa, tmpb);
103 cMemoryAlign.WelsFree(pEnc,"pEnc");103 ASSERT_EQ (iBestMode_c, iBestMode_a);
104 cMemoryAlign.WelsFree(pDst,"pDst");104 cMemoryAlign.WelsFree (pDec, "pDec");
105}105 cMemoryAlign.WelsFree (pEnc, "pEnc");
106 106 cMemoryAlign.WelsFree (pDst, "pDst");
107TEST(IntraSadSatdFuncTest, WelsIntraChroma8x8Combined3Satd_sse41){107}
108
109TEST (IntraSadSatdFuncTest, WelsIntraChroma8x8Combined3Satd_sse41) {
108 const int32_t iLineSizeDec = 32;110 const int32_t iLineSizeDec = 32;
109 const int32_t iLineSizeEnc = 32;111 const int32_t iLineSizeEnc = 32;
110 int32_t tmpa, tmpb;112 int32_t tmpa, tmpb;
111 int32_t iBestMode_c, iBestMode_a, iLambda = 50;113 int32_t iBestMode_c, iBestMode_a, iLambda = 50;
112 CMemoryAlign cMemoryAlign(0);114 CMemoryAlign cMemoryAlign (0);
113 int32_t iCpuCores = 0;115 int32_t iCpuCores = 0;
114 uint32_t m_uiCpuFeatureFlag = WelsCPUFeatureDetect(&iCpuCores);116 uint32_t m_uiCpuFeatureFlag = WelsCPUFeatureDetect (&iCpuCores);
115 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE41))117 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE41))
116 return;118 return;
117 uint8_t* pDecCb = (uint8_t *)cMemoryAlign.WelsMalloc(iLineSizeDec<<5,"pDecCb");119 uint8_t* pDecCb = (uint8_t*)cMemoryAlign.WelsMalloc (iLineSizeDec << 5, "pDecCb");
118 uint8_t* pEncCb = (uint8_t *)cMemoryAlign.WelsMalloc(iLineSizeEnc<<5,"pEncCb");120 uint8_t* pEncCb = (uint8_t*)cMemoryAlign.WelsMalloc (iLineSizeEnc << 5, "pEncCb");
119 uint8_t* pDecCr = (uint8_t *)cMemoryAlign.WelsMalloc(iLineSizeDec<<5,"pDecCr");121 uint8_t* pDecCr = (uint8_t*)cMemoryAlign.WelsMalloc (iLineSizeDec << 5, "pDecCr");
120 uint8_t* pEncCr = (uint8_t *)cMemoryAlign.WelsMalloc(iLineSizeEnc<<5,"pEncCr");122 uint8_t* pEncCr = (uint8_t*)cMemoryAlign.WelsMalloc (iLineSizeEnc << 5, "pEncCr");
121 uint8_t* pDstChma = (uint8_t *)cMemoryAlign.WelsMalloc(512,"pDstChma");123 uint8_t* pDstChma = (uint8_t*)cMemoryAlign.WelsMalloc (512, "pDstChma");
122 srand((uint32_t)time(NULL));124 srand ((uint32_t)time (NULL));
123 for(int i=0;i<(iLineSizeDec<<5);i++){125 for (int i = 0; i < (iLineSizeDec << 5); i++) {
124 pDecCb[i]=rand()%256;126 pDecCb[i] = rand() % 256;
125 pDecCr[i]=rand()%256;127 pDecCr[i] = rand() % 256;
126 }128 }
127 for(int i=0;i<(iLineSizeEnc<<5);i++){129 for (int i = 0; i < (iLineSizeEnc << 5); i++) {
128 pEncCb[i]=rand()%256;130 pEncCb[i] = rand() % 256;
129 pEncCr[i]=rand()%256;131 pEncCr[i] = rand() % 256;
130 }132 }
131 for(int i=0;i<512;i++)133 for (int i = 0; i < 512; i++)
132 pDstChma[i]=rand()%256;134 pDstChma[i] = rand() % 256;
133 tmpa = WelsSampleSatdIntra8x8Combined3_c(pDecCb+128, iLineSizeDec, pEncCb,iLineSizeEnc,&iBestMode_c, iLambda, pDstChma, pDecCr+128, pEncCr);135 tmpa = WelsSampleSatdIntra8x8Combined3_c (pDecCb + 128, iLineSizeDec, pEncCb, iLineSizeEnc, &iBestMode_c, iLambda,
134 tmpb = WelsIntraChroma8x8Combined3Satd_sse41(pDecCb+128, iLineSizeDec, pEncCb,iLineSizeEnc,&iBestMode_a, iLambda, pDstChma, pDecCr+128, pEncCr);136 pDstChma, pDecCr + 128, pEncCr);
135 ASSERT_EQ(tmpa, tmpb);137 tmpb = WelsIntraChroma8x8Combined3Satd_sse41 (pDecCb + 128, iLineSizeDec, pEncCb, iLineSizeEnc, &iBestMode_a, iLambda,
136 ASSERT_EQ(iBestMode_c, iBestMode_a);138 pDstChma, pDecCr + 128, pEncCr);
137 cMemoryAlign.WelsFree(pDecCb,"pDecCb");139 ASSERT_EQ (tmpa, tmpb);
138 cMemoryAlign.WelsFree(pEncCb,"pEncCb");140 ASSERT_EQ (iBestMode_c, iBestMode_a);
139 cMemoryAlign.WelsFree(pDecCr,"pDecCr");141 cMemoryAlign.WelsFree (pDecCb, "pDecCb");
140 cMemoryAlign.WelsFree(pEncCr,"pEncCr");142 cMemoryAlign.WelsFree (pEncCb, "pEncCb");
141 cMemoryAlign.WelsFree(pDstChma,"pDstChma");143 cMemoryAlign.WelsFree (pDecCr, "pDecCr");
144 cMemoryAlign.WelsFree (pEncCr, "pEncCr");
145 cMemoryAlign.WelsFree (pDstChma, "pDstChma");
142}146}
143#endif147#endif
144#define ASSERT_MEMORY_FAIL2X(A, B) \148#define ASSERT_MEMORY_FAIL2X(A, B) \
@@ -157,27 +161,27 @@ TEST(IntraSadSatdFuncTest, WelsIntraChroma8x8Combined3Satd_sse41){ · 12 unmodified lines
157#define PIXEL_STRIDE 32161#define PIXEL_STRIDE 32
158 162
159class SadSatdCFuncTest : public testing::Test {163class SadSatdCFuncTest : public testing::Test {
160public:164 public:
161 virtual void SetUp() {165 virtual void SetUp() {
162 pMemAlign = new CMemoryAlign(0);166 pMemAlign = new CMemoryAlign (0);
163 167
164 srand((uint32_t)time(NULL));168 srand ((uint32_t)time (NULL));
165 m_iStrideA = rand()%256 + PIXEL_STRIDE;169 m_iStrideA = rand() % 256 + PIXEL_STRIDE;
166 m_iStrideB = rand()%256 + PIXEL_STRIDE;170 m_iStrideB = rand() % 256 + PIXEL_STRIDE;
167 m_pPixSrcA = (uint8_t *)pMemAlign->WelsMalloc(m_iStrideA<<5,"Sad_m_pPixSrcA");171 m_pPixSrcA = (uint8_t*)pMemAlign->WelsMalloc (m_iStrideA << 5, "Sad_m_pPixSrcA");
168 ASSERT_TRUE(NULL != m_pPixSrcA);172 ASSERT_TRUE (NULL != m_pPixSrcA);
169 m_pPixSrcB = (uint8_t *)pMemAlign->WelsMalloc(m_iStrideB<<5,"Sad_m_pPixSrcB");173 m_pPixSrcB = (uint8_t*)pMemAlign->WelsMalloc (m_iStrideB << 5, "Sad_m_pPixSrcB");
170 ASSERT_MEMORY_FAIL2X(m_pPixSrcA, m_pPixSrcB)174 ASSERT_MEMORY_FAIL2X (m_pPixSrcA, m_pPixSrcB)
171 m_pSad = (int32_t*)pMemAlign->WelsMalloc(4*sizeof(int32_t), "m_pSad");175 m_pSad = (int32_t*)pMemAlign->WelsMalloc (4 * sizeof (int32_t), "m_pSad");
172 ASSERT_MEMORY_FAIL3X(m_pPixSrcA, m_pPixSrcB, m_pSad)176 ASSERT_MEMORY_FAIL3X (m_pPixSrcA, m_pPixSrcB, m_pSad)
173 }177 }
174 virtual void TearDown() {178 virtual void TearDown() {
175 pMemAlign->WelsFree(m_pPixSrcA,"Sad_m_pPixSrcA");179 pMemAlign->WelsFree (m_pPixSrcA, "Sad_m_pPixSrcA");
176 pMemAlign->WelsFree(m_pPixSrcB,"Sad_m_pPixSrcB");180 pMemAlign->WelsFree (m_pPixSrcB, "Sad_m_pPixSrcB");
177 pMemAlign->WelsFree(m_pSad,"m_pSad");181 pMemAlign->WelsFree (m_pSad, "m_pSad");
178 delete pMemAlign;182 delete pMemAlign;
179 }183 }
180public:184 public:
181 uint8_t* m_pPixSrcA;185 uint8_t* m_pPixSrcA;
182 uint8_t* m_pPixSrcB;186 uint8_t* m_pPixSrcB;
183 int32_t m_iStrideA;187 int32_t m_iStrideA;
@@ -187,313 +191,313 @@ public: · 3 unmodified lines
187 CMemoryAlign* pMemAlign;191 CMemoryAlign* pMemAlign;
188};192};
189 193
190TEST_F(SadSatdCFuncTest, WelsSampleSad4x4_c) {194TEST_F (SadSatdCFuncTest, WelsSampleSad4x4_c) {
191 srand((uint32_t)time(NULL));195 srand ((uint32_t)time (NULL));
192 for(int i=0; i<(m_iStrideA<<2); i++)196 for (int i = 0; i < (m_iStrideA << 2); i++)
193 m_pPixSrcA[i]=rand()%256;197 m_pPixSrcA[i] = rand() % 256;
194 for(int i=0; i<(m_iStrideB<<2); i++)198 for (int i = 0; i < (m_iStrideB << 2); i++)
195 m_pPixSrcB[i]=rand()%256;199 m_pPixSrcB[i] = rand() % 256;
196 uint8_t *pPixA=m_pPixSrcA;200 uint8_t* pPixA = m_pPixSrcA;
197 uint8_t *pPixB=m_pPixSrcB;201 uint8_t* pPixB = m_pPixSrcB;
198 202
199 int32_t iSumSad = 0;203 int32_t iSumSad = 0;
200 for (int i = 0; i < 4; i++ ) {204 for (int i = 0; i < 4; i++) {
201 for(int j=0; j<4; j++)205 for (int j = 0; j < 4; j++)
202 iSumSad+=abs(pPixA[j]-pPixB[j]);206 iSumSad += abs (pPixA[j] - pPixB[j]);
203 pPixA += m_iStrideA;207 pPixA += m_iStrideA;
204 pPixB += m_iStrideB;208 pPixB += m_iStrideB;
205 }209 }
206 EXPECT_EQ(WelsSampleSad4x4_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), iSumSad);210 EXPECT_EQ (WelsSampleSad4x4_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), iSumSad);
207}211}
208 212
209TEST_F(SadSatdCFuncTest, WelsSampleSad8x8_c) {213TEST_F (SadSatdCFuncTest, WelsSampleSad8x8_c) {
210 srand((uint32_t)time(NULL));214 srand ((uint32_t)time (NULL));
211 for(int i=0; i<(m_iStrideA<<3); i++)215 for (int i = 0; i < (m_iStrideA << 3); i++)
212 m_pPixSrcA[i]=rand()%256;216 m_pPixSrcA[i] = rand() % 256;
213 for(int i=0; i<(m_iStrideB<<3); i++)217 for (int i = 0; i < (m_iStrideB << 3); i++)
214 m_pPixSrcB[i]=rand()%256;218 m_pPixSrcB[i] = rand() % 256;
215 uint8_t *pPixA=m_pPixSrcA;219 uint8_t* pPixA = m_pPixSrcA;
216 uint8_t *pPixB=m_pPixSrcB;220 uint8_t* pPixB = m_pPixSrcB;
217 221
218 int32_t iSumSad = 0;222 int32_t iSumSad = 0;
219 for (int i = 0; i < 8; i++ ) {223 for (int i = 0; i < 8; i++) {
220 for(int j=0; j<8; j++)224 for (int j = 0; j < 8; j++)
221 iSumSad+=abs(pPixA[j]-pPixB[j]);225 iSumSad += abs (pPixA[j] - pPixB[j]);
222 226
223 pPixA += m_iStrideA;227 pPixA += m_iStrideA;
224 pPixB += m_iStrideB;228 pPixB += m_iStrideB;
225 }229 }
226 EXPECT_EQ(WelsSampleSad8x8_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), iSumSad);230 EXPECT_EQ (WelsSampleSad8x8_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), iSumSad);
227}231}
228 232
229TEST_F(SadSatdCFuncTest, WelsSampleSad16x8_c) {233TEST_F (SadSatdCFuncTest, WelsSampleSad16x8_c) {
230 srand((uint32_t)time(NULL));234 srand ((uint32_t)time (NULL));
231 for(int i=0; i<(m_iStrideA<<3); i++)235 for (int i = 0; i < (m_iStrideA << 3); i++)
232 m_pPixSrcA[i]=rand()%256;236 m_pPixSrcA[i] = rand() % 256;
233 for(int i=0; i<(m_iStrideB<<3); i++)237 for (int i = 0; i < (m_iStrideB << 3); i++)
234 m_pPixSrcB[i]=rand()%256;238 m_pPixSrcB[i] = rand() % 256;
235 uint8_t *pPixA=m_pPixSrcA;239 uint8_t* pPixA = m_pPixSrcA;
236 uint8_t *pPixB=m_pPixSrcB;240 uint8_t* pPixB = m_pPixSrcB;
237 241
238 int32_t iSumSad = 0;242 int32_t iSumSad = 0;
239 for (int i = 0; i <8; i++ ) {243 for (int i = 0; i < 8; i++) {
240 for(int j=0; j<16; j++)244 for (int j = 0; j < 16; j++)
241 iSumSad+=abs(pPixA[j]-pPixB[j]);245 iSumSad += abs (pPixA[j] - pPixB[j]);
242 246
243 pPixA += m_iStrideA;247 pPixA += m_iStrideA;
244 pPixB += m_iStrideB;248 pPixB += m_iStrideB;
245 }249 }
246 EXPECT_EQ(WelsSampleSad16x8_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), iSumSad);250 EXPECT_EQ (WelsSampleSad16x8_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), iSumSad);
247}251}
248 252
249TEST_F(SadSatdCFuncTest, WelsSampleSad8x16_c) {253TEST_F (SadSatdCFuncTest, WelsSampleSad8x16_c) {
250 srand((uint32_t)time(NULL));254 srand ((uint32_t)time (NULL));
251 for(int i=0; i<(m_iStrideA<<4); i++)255 for (int i = 0; i < (m_iStrideA << 4); i++)
252 m_pPixSrcA[i]=rand()%256;256 m_pPixSrcA[i] = rand() % 256;
253 for(int i=0; i<(m_iStrideB<<4); i++)257 for (int i = 0; i < (m_iStrideB << 4); i++)
254 m_pPixSrcB[i]=rand()%256;258 m_pPixSrcB[i] = rand() % 256;
255 uint8_t *pPixA=m_pPixSrcA;259 uint8_t* pPixA = m_pPixSrcA;
256 uint8_t *pPixB=m_pPixSrcB;260 uint8_t* pPixB = m_pPixSrcB;
257 261
258 int32_t iSumSad = 0;262 int32_t iSumSad = 0;
259 for (int i = 0; i <16; i++ ) {263 for (int i = 0; i < 16; i++) {
260 for(int j=0; j<8; j++)264 for (int j = 0; j < 8; j++)
261 iSumSad+=abs(pPixA[j]-pPixB[j]);265 iSumSad += abs (pPixA[j] - pPixB[j]);
262 266
263 pPixA += m_iStrideA;267 pPixA += m_iStrideA;
264 pPixB += m_iStrideB;268 pPixB += m_iStrideB;
265 }269 }
266 EXPECT_EQ(WelsSampleSad8x16_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), iSumSad);270 EXPECT_EQ (WelsSampleSad8x16_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), iSumSad);
267}271}
268 272
269TEST_F(SadSatdCFuncTest, WelsSampleSad16x16_c) {273TEST_F (SadSatdCFuncTest, WelsSampleSad16x16_c) {
270 srand((uint32_t)time(NULL));274 srand ((uint32_t)time (NULL));
271 for(int i=0; i<(m_iStrideA<<4); i++)275 for (int i = 0; i < (m_iStrideA << 4); i++)
272 m_pPixSrcA[i]=rand()%256;276 m_pPixSrcA[i] = rand() % 256;
273 for(int i=0; i<(m_iStrideB<<4); i++)277 for (int i = 0; i < (m_iStrideB << 4); i++)
274 m_pPixSrcB[i]=rand()%256;278 m_pPixSrcB[i] = rand() % 256;
275 uint8_t *pPixA=m_pPixSrcA;279 uint8_t* pPixA = m_pPixSrcA;
276 uint8_t *pPixB=m_pPixSrcB;280 uint8_t* pPixB = m_pPixSrcB;
277 281
278 int32_t iSumSad = 0;282 int32_t iSumSad = 0;
279 for (int i = 0; i <16; i++ ) {283 for (int i = 0; i < 16; i++) {
280 for(int j=0; j<16; j++)284 for (int j = 0; j < 16; j++)
281 iSumSad+=abs(pPixA[j]-pPixB[j]);285 iSumSad += abs (pPixA[j] - pPixB[j]);
282 286
283 pPixA += m_iStrideA;287 pPixA += m_iStrideA;
284 pPixB += m_iStrideB;288 pPixB += m_iStrideB;
285 }289 }
286 EXPECT_EQ(WelsSampleSad16x16_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), iSumSad);290 EXPECT_EQ (WelsSampleSad16x16_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), iSumSad);
287}291}
288 292
289TEST_F(SadSatdCFuncTest, WelsSampleSatd4x4_c) {293TEST_F (SadSatdCFuncTest, WelsSampleSatd4x4_c) {
290 srand((uint32_t)time(NULL));294 srand ((uint32_t)time (NULL));
291 for(int i=0; i<(m_iStrideA<<2); i++)295 for (int i = 0; i < (m_iStrideA << 2); i++)
292 m_pPixSrcA[i]=rand()%256;296 m_pPixSrcA[i] = rand() % 256;
293 for(int i=0; i<(m_iStrideB<<2); i++)297 for (int i = 0; i < (m_iStrideB << 2); i++)
294 m_pPixSrcB[i]=rand()%256;298 m_pPixSrcB[i] = rand() % 256;
295 uint8_t *pPixA=m_pPixSrcA;299 uint8_t* pPixA = m_pPixSrcA;
296 uint8_t *pPixB=m_pPixSrcB;300 uint8_t* pPixB = m_pPixSrcB;
297 301
298 int32_t W[16],T[16],Y[16],k=0;302 int32_t W[16], T[16], Y[16], k = 0;
299 for(int i=0; i<4; i++) {303 for (int i = 0; i < 4; i++) {
300 for(int j=0; j<4; j++)304 for (int j = 0; j < 4; j++)
301 W[k++]=pPixA[j]-pPixB[j];305 W[k++] = pPixA[j] - pPixB[j];
302 pPixA += m_iStrideA;306 pPixA += m_iStrideA;
303 pPixB += m_iStrideB;307 pPixB += m_iStrideB;
304 }308 }
305 309
306 T[0]=W[0]+W[4]+W[8]+W[12];310 T[0] = W[0] + W[4] + W[8] + W[12];
307 T[1]=W[1]+W[5]+W[9]+W[13];311 T[1] = W[1] + W[5] + W[9] + W[13];
308 T[2]=W[2]+W[6]+W[10]+W[14];312 T[2] = W[2] + W[6] + W[10] + W[14];
309 T[3]=W[3]+W[7]+W[11]+W[15];313 T[3] = W[3] + W[7] + W[11] + W[15];
310 314
311 T[4]=W[0]+W[4]-W[8]-W[12];315 T[4] = W[0] + W[4] - W[8] - W[12];
312 T[5]=W[1]+W[5]-W[9]-W[13];316 T[5] = W[1] + W[5] - W[9] - W[13];
313 T[6]=W[2]+W[6]-W[10]-W[14];317 T[6] = W[2] + W[6] - W[10] - W[14];
314 T[7]=W[3]+W[7]-W[11]-W[15];318 T[7] = W[3] + W[7] - W[11] - W[15];
315 319
316 T[8]=W[0]-W[4]-W[8]+W[12];320 T[8] = W[0] - W[4] - W[8] + W[12];
317 T[9]=W[1]-W[5]-W[9]+W[13];321 T[9] = W[1] - W[5] - W[9] + W[13];
318 T[10]=W[2]-W[6]-W[10]+W[14];322 T[10] = W[2] - W[6] - W[10] + W[14];
319 T[11]=W[3]-W[7]-W[11]+W[15];323 T[11] = W[3] - W[7] - W[11] + W[15];
320 324
321 T[12]=W[0]-W[4]+W[8]-W[12];325 T[12] = W[0] - W[4] + W[8] - W[12];
322 T[13]=W[1]-W[5]+W[9]-W[13];326 T[13] = W[1] - W[5] + W[9] - W[13];
323 T[14]=W[2]-W[6]+W[10]-W[14];327 T[14] = W[2] - W[6] + W[10] - W[14];
324 T[15]=W[3]-W[7]+W[11]-W[15];328 T[15] = W[3] - W[7] + W[11] - W[15];
325 329
326 Y[0]=T[0]+T[1]+T[2]+T[3];330 Y[0] = T[0] + T[1] + T[2] + T[3];
327 Y[1]=T[0]+T[1]-T[2]-T[3];331 Y[1] = T[0] + T[1] - T[2] - T[3];
328 Y[2]=T[0]-T[1]-T[2]+T[3];332 Y[2] = T[0] - T[1] - T[2] + T[3];
329 Y[3]=T[0]-T[1]+T[2]-T[3];333 Y[3] = T[0] - T[1] + T[2] - T[3];
330 334
331 Y[4]=T[4]+T[5]+T[6]+T[7];335 Y[4] = T[4] + T[5] + T[6] + T[7];
332 Y[5]=T[4]+T[5]-T[6]-T[7];336 Y[5] = T[4] + T[5] - T[6] - T[7];
333 Y[6]=T[4]-T[5]-T[6]+T[7];337 Y[6] = T[4] - T[5] - T[6] + T[7];
334 Y[7]=T[4]-T[5]+T[6]-T[7];338 Y[7] = T[4] - T[5] + T[6] - T[7];
335 339
336 Y[8]=T[8]+T[9]+T[10]+T[11];340 Y[8] = T[8] + T[9] + T[10] + T[11];
337 Y[9]=T[8]+T[9]-T[10]-T[11];341 Y[9] = T[8] + T[9] - T[10] - T[11];
338 Y[10]=T[8]-T[9]-T[10]+T[11];342 Y[10] = T[8] - T[9] - T[10] + T[11];
339 Y[11]=T[8]-T[9]+T[10]-T[11];343 Y[11] = T[8] - T[9] + T[10] - T[11];
340 344
341 Y[12]=T[12]+T[13]+T[14]+T[15];345 Y[12] = T[12] + T[13] + T[14] + T[15];
342 Y[13]=T[12]+T[13]-T[14]-T[15];346 Y[13] = T[12] + T[13] - T[14] - T[15];
343 Y[14]=T[12]-T[13]-T[14]+T[15];347 Y[14] = T[12] - T[13] - T[14] + T[15];
344 Y[15]=T[12]-T[13]+T[14]-T[15];348 Y[15] = T[12] - T[13] + T[14] - T[15];
345 349
346 int32_t iSumSatd = 0;350 int32_t iSumSatd = 0;
347 for(int i=0; i<16; i++)351 for (int i = 0; i < 16; i++)
348 iSumSatd+=abs(Y[i]);352 iSumSatd += abs (Y[i]);
349 353
350 EXPECT_EQ(WelsSampleSatd4x4_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), (iSumSatd+1)>>1);354 EXPECT_EQ (WelsSampleSatd4x4_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), (iSumSatd + 1) >> 1);
351}355}
352 356
353TEST_F(SadSatdCFuncTest, WelsSampleSadFour16x16_c) {357TEST_F (SadSatdCFuncTest, WelsSampleSadFour16x16_c) {
354 srand((uint32_t)time(NULL));358 srand ((uint32_t)time (NULL));
355 for(int i=0; i<(m_iStrideA<<5); i++)359 for (int i = 0; i < (m_iStrideA << 5); i++)
356 m_pPixSrcA[i]=rand()%256;360 m_pPixSrcA[i] = rand() % 256;
357 for(int i=0; i<(m_iStrideB<<5); i++)361 for (int i = 0; i < (m_iStrideB << 5); i++)
358 m_pPixSrcB[i]=rand()%256;362 m_pPixSrcB[i] = rand() % 256;
359 uint8_t *pPixA=m_pPixSrcA;363 uint8_t* pPixA = m_pPixSrcA;
360 uint8_t *pPixB=m_pPixSrcB+m_iStrideB;364 uint8_t* pPixB = m_pPixSrcB + m_iStrideB;
361 365
362 int32_t iSumSad = 0;366 int32_t iSumSad = 0;
363 for (int i = 0; i <16; i++ ) {367 for (int i = 0; i < 16; i++) {
364 for(int j=0; j<16; j++) {368 for (int j = 0; j < 16; j++) {
365 iSumSad+=abs(pPixA[j]-pPixB[j-1]);369 iSumSad += abs (pPixA[j] - pPixB[j - 1]);
366 iSumSad+=abs(pPixA[j]-pPixB[j+1]);370 iSumSad += abs (pPixA[j] - pPixB[j + 1]);
367 iSumSad+=abs(pPixA[j]-pPixB[j-m_iStrideB]);371 iSumSad += abs (pPixA[j] - pPixB[j - m_iStrideB]);
368 iSumSad+=abs(pPixA[j]-pPixB[j+m_iStrideB]);372 iSumSad += abs (pPixA[j] - pPixB[j + m_iStrideB]);
369 }373 }
370 pPixA += m_iStrideA;374 pPixA += m_iStrideA;
371 pPixB += m_iStrideB;375 pPixB += m_iStrideB;
372 }376 }
373 WelsSampleSadFour16x16_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB+m_iStrideB, m_iStrideB, m_pSad);377 WelsSampleSadFour16x16_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB + m_iStrideB, m_iStrideB, m_pSad);
374 EXPECT_EQ(m_pSad[0]+m_pSad[1]+m_pSad[2]+m_pSad[3],iSumSad);378 EXPECT_EQ (m_pSad[0] + m_pSad[1] + m_pSad[2] + m_pSad[3], iSumSad);
375}379}
376 380
377TEST_F(SadSatdCFuncTest, WelsSampleSadFour16x8_c) {381TEST_F (SadSatdCFuncTest, WelsSampleSadFour16x8_c) {
378 srand((uint32_t)time(NULL));382 srand ((uint32_t)time (NULL));
379 for(int i=0; i<(m_iStrideA<<5); i++)383 for (int i = 0; i < (m_iStrideA << 5); i++)
380 m_pPixSrcA[i]=rand()%256;384 m_pPixSrcA[i] = rand() % 256;
381 for(int i=0; i<(m_iStrideB<<5); i++)385 for (int i = 0; i < (m_iStrideB << 5); i++)
382 m_pPixSrcB[i]=rand()%256;386 m_pPixSrcB[i] = rand() % 256;
383 uint8_t *pPixA=m_pPixSrcA;387 uint8_t* pPixA = m_pPixSrcA;
384 uint8_t *pPixB=m_pPixSrcB+m_iStrideB;388 uint8_t* pPixB = m_pPixSrcB + m_iStrideB;
385 389
386 int32_t iSumSad = 0;390 int32_t iSumSad = 0;
387 for (int i = 0; i <8; i++ ) {391 for (int i = 0; i < 8; i++) {
388 for(int j=0; j<16; j++) {392 for (int j = 0; j < 16; j++) {
389 iSumSad+=abs(pPixA[j]-pPixB[j-1]);393 iSumSad += abs (pPixA[j] - pPixB[j - 1]);
390 iSumSad+=abs(pPixA[j]-pPixB[j+1]);394 iSumSad += abs (pPixA[j] - pPixB[j + 1]);
391 iSumSad+=abs(pPixA[j]-pPixB[j-m_iStrideB]);395 iSumSad += abs (pPixA[j] - pPixB[j - m_iStrideB]);
392 iSumSad+=abs(pPixA[j]-pPixB[j+m_iStrideB]);396 iSumSad += abs (pPixA[j] - pPixB[j + m_iStrideB]);
393 }397 }
394 pPixA += m_iStrideA;398 pPixA += m_iStrideA;
395 pPixB += m_iStrideB;399 pPixB += m_iStrideB;
396 }400 }
397 401
398 WelsSampleSadFour16x8_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB+m_iStrideB, m_iStrideB, m_pSad);402 WelsSampleSadFour16x8_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB + m_iStrideB, m_iStrideB, m_pSad);
399 EXPECT_EQ(m_pSad[0]+m_pSad[1]+m_pSad[2]+m_pSad[3],iSumSad);403 EXPECT_EQ (m_pSad[0] + m_pSad[1] + m_pSad[2] + m_pSad[3], iSumSad);
400}404}
401 405
402TEST_F(SadSatdCFuncTest, WelsSampleSadFour8x16_c) {406TEST_F (SadSatdCFuncTest, WelsSampleSadFour8x16_c) {
403 srand((uint32_t)time(NULL));407 srand ((uint32_t)time (NULL));
404 for(int i=0; i<(m_iStrideA<<5); i++)408 for (int i = 0; i < (m_iStrideA << 5); i++)
405 m_pPixSrcA[i]=rand()%256;409 m_pPixSrcA[i] = rand() % 256;
406 for(int i=0; i<(m_iStrideB<<5); i++)410 for (int i = 0; i < (m_iStrideB << 5); i++)
407 m_pPixSrcB[i]=rand()%256;411 m_pPixSrcB[i] = rand() % 256;
408 uint8_t *pPixA=m_pPixSrcA;412 uint8_t* pPixA = m_pPixSrcA;
409 uint8_t *pPixB=m_pPixSrcB+m_iStrideB;413 uint8_t* pPixB = m_pPixSrcB + m_iStrideB;
410 414
411 int32_t iSumSad = 0;415 int32_t iSumSad = 0;
412 for (int i = 0; i <16; i++ ) {416 for (int i = 0; i < 16; i++) {
413 for(int j=0; j<8; j++) {417 for (int j = 0; j < 8; j++) {
414 iSumSad+=abs(pPixA[j]-pPixB[j-1]);418 iSumSad += abs (pPixA[j] - pPixB[j - 1]);
415 iSumSad+=abs(pPixA[j]-pPixB[j+1]);419 iSumSad += abs (pPixA[j] - pPixB[j + 1]);
416 iSumSad+=abs(pPixA[j]-pPixB[j-m_iStrideB]);420 iSumSad += abs (pPixA[j] - pPixB[j - m_iStrideB]);
417 iSumSad+=abs(pPixA[j]-pPixB[j+m_iStrideB]);421 iSumSad += abs (pPixA[j] - pPixB[j + m_iStrideB]);
418 }422 }
419 pPixA += m_iStrideA;423 pPixA += m_iStrideA;
420 pPixB += m_iStrideB;424 pPixB += m_iStrideB;
421 }425 }
422 426
423 WelsSampleSadFour8x16_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB+m_iStrideB, m_iStrideB, m_pSad);427 WelsSampleSadFour8x16_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB + m_iStrideB, m_iStrideB, m_pSad);
424 EXPECT_EQ(m_pSad[0]+m_pSad[1]+m_pSad[2]+m_pSad[3],iSumSad);428 EXPECT_EQ (m_pSad[0] + m_pSad[1] + m_pSad[2] + m_pSad[3], iSumSad);
425}429}
426 430
427TEST_F(SadSatdCFuncTest, WelsSampleSadFour8x8_c) {431TEST_F (SadSatdCFuncTest, WelsSampleSadFour8x8_c) {
428 srand((uint32_t)time(NULL));432 srand ((uint32_t)time (NULL));
429 for(int i=0; i<(m_iStrideA<<4); i++)433 for (int i = 0; i < (m_iStrideA << 4); i++)
430 m_pPixSrcA[i]=rand()%256;434 m_pPixSrcA[i] = rand() % 256;
431 for(int i=0; i<(m_iStrideB<<4); i++)435 for (int i = 0; i < (m_iStrideB << 4); i++)
432 m_pPixSrcB[i]=rand()%256;436 m_pPixSrcB[i] = rand() % 256;
433 uint8_t *pPixA=m_pPixSrcA;437 uint8_t* pPixA = m_pPixSrcA;
434 uint8_t *pPixB=m_pPixSrcB+m_iStrideB;438 uint8_t* pPixB = m_pPixSrcB + m_iStrideB;
435 439
436 int32_t iSumSad = 0;440 int32_t iSumSad = 0;
437 for (int i = 0; i <8; i++ ) {441 for (int i = 0; i < 8; i++) {
438 for(int j=0; j<8; j++) {442 for (int j = 0; j < 8; j++) {
439 iSumSad+=abs(pPixA[j]-pPixB[j-1]);443 iSumSad += abs (pPixA[j] - pPixB[j - 1]);
440 iSumSad+=abs(pPixA[j]-pPixB[j+1]);444 iSumSad += abs (pPixA[j] - pPixB[j + 1]);
441 iSumSad+=abs(pPixA[j]-pPixB[j-m_iStrideB]);445 iSumSad += abs (pPixA[j] - pPixB[j - m_iStrideB]);
442 iSumSad+=abs(pPixA[j]-pPixB[j+m_iStrideB]);446 iSumSad += abs (pPixA[j] - pPixB[j + m_iStrideB]);
443 }447 }
444 pPixA += m_iStrideA;448 pPixA += m_iStrideA;
445 pPixB += m_iStrideB;449 pPixB += m_iStrideB;
446 }450 }
447 WelsSampleSadFour8x8_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB+m_iStrideB, m_iStrideB, m_pSad);451 WelsSampleSadFour8x8_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB + m_iStrideB, m_iStrideB, m_pSad);
448 EXPECT_EQ(m_pSad[0]+m_pSad[1]+m_pSad[2]+m_pSad[3],iSumSad);452 EXPECT_EQ (m_pSad[0] + m_pSad[1] + m_pSad[2] + m_pSad[3], iSumSad);
449}453}
450 454
451TEST_F(SadSatdCFuncTest, WelsSampleSadFour4x4_c) {455TEST_F (SadSatdCFuncTest, WelsSampleSadFour4x4_c) {
452 srand((uint32_t)time(NULL));456 srand ((uint32_t)time (NULL));
453 for(int i=0; i<(m_iStrideA<<3); i++)457 for (int i = 0; i < (m_iStrideA << 3); i++)
454 m_pPixSrcA[i]=rand()%256;458 m_pPixSrcA[i] = rand() % 256;
455 for(int i=0; i<(m_iStrideB<<3); i++)459 for (int i = 0; i < (m_iStrideB << 3); i++)
456 m_pPixSrcB[i]=rand()%256;460 m_pPixSrcB[i] = rand() % 256;
457 uint8_t *pPixA=m_pPixSrcA;461 uint8_t* pPixA = m_pPixSrcA;
458 uint8_t *pPixB=m_pPixSrcB+m_iStrideB;462 uint8_t* pPixB = m_pPixSrcB + m_iStrideB;
459 463
460 int32_t iSumSad = 0;464 int32_t iSumSad = 0;
461 for (int i = 0; i <4; i++ ) {465 for (int i = 0; i < 4; i++) {
462 for(int j=0; j<4; j++) {466 for (int j = 0; j < 4; j++) {
463 iSumSad+=abs(pPixA[j]-pPixB[j-1]);467 iSumSad += abs (pPixA[j] - pPixB[j - 1]);
464 iSumSad+=abs(pPixA[j]-pPixB[j+1]);468 iSumSad += abs (pPixA[j] - pPixB[j + 1]);
465 iSumSad+=abs(pPixA[j]-pPixB[j-m_iStrideB]);469 iSumSad += abs (pPixA[j] - pPixB[j - m_iStrideB]);
466 iSumSad+=abs(pPixA[j]-pPixB[j+m_iStrideB]);470 iSumSad += abs (pPixA[j] - pPixB[j + m_iStrideB]);
467 }471 }
468 pPixA += m_iStrideA;472 pPixA += m_iStrideA;
469 pPixB += m_iStrideB;473 pPixB += m_iStrideB;
470 }474 }
471 WelsSampleSadFour4x4_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB+m_iStrideB, m_iStrideB, m_pSad);475 WelsSampleSadFour4x4_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB + m_iStrideB, m_iStrideB, m_pSad);
472 EXPECT_EQ(m_pSad[0]+m_pSad[1]+m_pSad[2]+m_pSad[3],iSumSad);476 EXPECT_EQ (m_pSad[0] + m_pSad[1] + m_pSad[2] + m_pSad[3], iSumSad);
473}477}
474 478
475#ifdef X86_ASM479#ifdef X86_ASM
476class SadSatdAssemblyFuncTest : public testing::Test {480class SadSatdAssemblyFuncTest : public testing::Test {
477public:481 public:
478 virtual void SetUp() {482 virtual void SetUp() {
479 int32_t iCpuCores = 0;483 int32_t iCpuCores = 0;
480 m_uiCpuFeatureFlag = WelsCPUFeatureDetect(&iCpuCores);484 m_uiCpuFeatureFlag = WelsCPUFeatureDetect (&iCpuCores);
481 pMemAlign = new CMemoryAlign(16);485 pMemAlign = new CMemoryAlign (16);
482 m_iStrideA = m_iStrideB = PIXEL_STRIDE;486 m_iStrideA = m_iStrideB = PIXEL_STRIDE;
483 m_pPixSrcA = (uint8_t *)pMemAlign->WelsMalloc(m_iStrideA<<5,"Sad_m_pPixSrcA");487 m_pPixSrcA = (uint8_t*)pMemAlign->WelsMalloc (m_iStrideA << 5, "Sad_m_pPixSrcA");
484 ASSERT_TRUE(NULL != m_pPixSrcA);488 ASSERT_TRUE (NULL != m_pPixSrcA);
485 m_pPixSrcB = (uint8_t *)pMemAlign->WelsMalloc(m_iStrideB<<5,"Sad_m_pPixSrcB");489 m_pPixSrcB = (uint8_t*)pMemAlign->WelsMalloc (m_iStrideB << 5, "Sad_m_pPixSrcB");
486 ASSERT_MEMORY_FAIL2X(m_pPixSrcA, m_pPixSrcB)490 ASSERT_MEMORY_FAIL2X (m_pPixSrcA, m_pPixSrcB)
487 m_pSad = (int32_t*)pMemAlign->WelsMalloc(4*sizeof(int32_t), "m_pSad");491 m_pSad = (int32_t*)pMemAlign->WelsMalloc (4 * sizeof (int32_t), "m_pSad");
488 ASSERT_MEMORY_FAIL3X(m_pPixSrcA, m_pPixSrcB, m_pSad)492 ASSERT_MEMORY_FAIL3X (m_pPixSrcA, m_pPixSrcB, m_pSad)
489 }493 }
490 virtual void TearDown() {494 virtual void TearDown() {
491 pMemAlign->WelsFree(m_pPixSrcA,"Sad_m_pPixSrcA");495 pMemAlign->WelsFree (m_pPixSrcA, "Sad_m_pPixSrcA");
492 pMemAlign->WelsFree(m_pPixSrcB,"Sad_m_pPixSrcB");496 pMemAlign->WelsFree (m_pPixSrcB, "Sad_m_pPixSrcB");
493 pMemAlign->WelsFree(m_pSad,"m_pSad");497 pMemAlign->WelsFree (m_pSad, "m_pSad");
494 delete pMemAlign;498 delete pMemAlign;
495 }499 }
496public:500 public:
497 uint32_t m_uiCpuFeatureFlag;501 uint32_t m_uiCpuFeatureFlag;
498 uint8_t* m_pPixSrcA;502 uint8_t* m_pPixSrcA;
499 uint8_t* m_pPixSrcB;503 uint8_t* m_pPixSrcB;
@@ -504,332 +508,347 @@ public: · 4 unmodified lines
504 CMemoryAlign* pMemAlign;508 CMemoryAlign* pMemAlign;
505};509};
506 510
507TEST_F(SadSatdAssemblyFuncTest, WelsSampleSad4x4_mmx) {511TEST_F (SadSatdAssemblyFuncTest, WelsSampleSad4x4_mmx) {
508 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_MMXEXT))512 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_MMXEXT))
509 return;513 return;
510 514
511 srand((uint32_t)time(NULL));515 srand ((uint32_t)time (NULL));
512 for(int i=0; i<(m_iStrideA<<2); i++)516 for (int i = 0; i < (m_iStrideA << 2); i++)
513 m_pPixSrcA[i]=rand()%256;517 m_pPixSrcA[i] = rand() % 256;
514 for(int i=0; i<(m_iStrideB<<2); i++)518 for (int i = 0; i < (m_iStrideB << 2); i++)
515 m_pPixSrcB[i]=rand()%256;519 m_pPixSrcB[i] = rand() % 256;
516 520
517 EXPECT_EQ(WelsSampleSad4x4_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSad4x4_mmx(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB));521 EXPECT_EQ (WelsSampleSad4x4_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSad4x4_mmx (m_pPixSrcA,
522 m_iStrideA, m_pPixSrcB, m_iStrideB));
518}523}
519 524
520 525
521TEST_F(SadSatdAssemblyFuncTest, WelsSampleSad8x8_sse21) {526TEST_F (SadSatdAssemblyFuncTest, WelsSampleSad8x8_sse21) {
522 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))527 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))
523 return;528 return;
524 529
525 srand((uint32_t)time(NULL));530 srand ((uint32_t)time (NULL));
526 for(int i=0; i<(m_iStrideA<<3); i++)531 for (int i = 0; i < (m_iStrideA << 3); i++)
527 m_pPixSrcA[i]=rand()%256;532 m_pPixSrcA[i] = rand() % 256;
528 for(int i=0; i<(m_iStrideB<<3); i++)533 for (int i = 0; i < (m_iStrideB << 3); i++)
529 m_pPixSrcB[i]=rand()%256;534 m_pPixSrcB[i] = rand() % 256;
530 535
531 EXPECT_EQ(WelsSampleSad8x8_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSad8x8_sse21(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB ));536 EXPECT_EQ (WelsSampleSad8x8_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSad8x8_sse21 (m_pPixSrcA,
537 m_iStrideA, m_pPixSrcB, m_iStrideB));
532}538}
533 539
534TEST_F(SadSatdAssemblyFuncTest, WelsSampleSad8x16_sse2) {540TEST_F (SadSatdAssemblyFuncTest, WelsSampleSad8x16_sse2) {
535 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))541 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))
536 return;542 return;
537 srand((uint32_t)time(NULL));543 srand ((uint32_t)time (NULL));
538 for(int i=0; i<(m_iStrideA<<4); i++)544 for (int i = 0; i < (m_iStrideA << 4); i++)
539 m_pPixSrcA[i]=rand()%256;545 m_pPixSrcA[i] = rand() % 256;
540 for(int i=0; i<(m_iStrideB<<4); i++)546 for (int i = 0; i < (m_iStrideB << 4); i++)
541 m_pPixSrcB[i]=rand()%256;547 m_pPixSrcB[i] = rand() % 256;
542 548
543 EXPECT_EQ(WelsSampleSad8x16_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSad8x16_sse2(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB));549 EXPECT_EQ (WelsSampleSad8x16_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSad8x16_sse2 (m_pPixSrcA,
550 m_iStrideA, m_pPixSrcB, m_iStrideB));
544}551}
545 552
546TEST_F(SadSatdAssemblyFuncTest, WelsSampleSad16x8_sse2) {553TEST_F (SadSatdAssemblyFuncTest, WelsSampleSad16x8_sse2) {
547 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))554 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))
548 return;555 return;
549 srand((uint32_t)time(NULL));556 srand ((uint32_t)time (NULL));
550 for(int i=0; i<(m_iStrideA<<3); i++)557 for (int i = 0; i < (m_iStrideA << 3); i++)
551 m_pPixSrcA[i]=rand()%256;558 m_pPixSrcA[i] = rand() % 256;
552 for(int i=0; i<(m_iStrideB<<3); i++)559 for (int i = 0; i < (m_iStrideB << 3); i++)
553 m_pPixSrcB[i]=rand()%256;560 m_pPixSrcB[i] = rand() % 256;
554 561
555 EXPECT_EQ(WelsSampleSad16x8_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSad16x8_sse2(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB));562 EXPECT_EQ (WelsSampleSad16x8_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSad16x8_sse2 (m_pPixSrcA,
563 m_iStrideA, m_pPixSrcB, m_iStrideB));
556}564}
557 565
558TEST_F(SadSatdAssemblyFuncTest, WelsSampleSad16x16_sse2) {566TEST_F (SadSatdAssemblyFuncTest, WelsSampleSad16x16_sse2) {
559 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))567 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))
560 return;568 return;
561 srand((uint32_t)time(NULL));569 srand ((uint32_t)time (NULL));
562 for(int i=0; i<(m_iStrideA<<4); i++)570 for (int i = 0; i < (m_iStrideA << 4); i++)
563 m_pPixSrcA[i]=rand()%256;571 m_pPixSrcA[i] = rand() % 256;
564 for(int i=0; i<(m_iStrideB<<4); i++)572 for (int i = 0; i < (m_iStrideB << 4); i++)
565 m_pPixSrcB[i]=rand()%256;573 m_pPixSrcB[i] = rand() % 256;
566 574
567 EXPECT_EQ(WelsSampleSad16x16_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSad16x16_sse2(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB));575 EXPECT_EQ (WelsSampleSad16x16_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSad16x16_sse2 (m_pPixSrcA,
576 m_iStrideA, m_pPixSrcB, m_iStrideB));
568}577}
569 578
570TEST_F(SadSatdAssemblyFuncTest, WelsSampleSatd4x4_sse2) {579TEST_F (SadSatdAssemblyFuncTest, WelsSampleSatd4x4_sse2) {
571 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))580 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))
572 return;581 return;
573 srand((uint32_t)time(NULL));582 srand ((uint32_t)time (NULL));
574 for(int i=0; i<(m_iStrideA<<2); i++)583 for (int i = 0; i < (m_iStrideA << 2); i++)
575 m_pPixSrcA[i]=rand()%256;584 m_pPixSrcA[i] = rand() % 256;
576 for(int i=0; i<(m_iStrideB<<2); i++)585 for (int i = 0; i < (m_iStrideB << 2); i++)
577 m_pPixSrcB[i]=rand()%256;586 m_pPixSrcB[i] = rand() % 256;
578 587
579 EXPECT_EQ(WelsSampleSatd4x4_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd4x4_sse2(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB));588 EXPECT_EQ (WelsSampleSatd4x4_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd4x4_sse2 (m_pPixSrcA,
589 m_iStrideA, m_pPixSrcB, m_iStrideB));
580}590}
581 591
582TEST_F(SadSatdAssemblyFuncTest, WelsSampleSatd8x8_sse2) {592TEST_F (SadSatdAssemblyFuncTest, WelsSampleSatd8x8_sse2) {
583 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))593 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))
584 return;594 return;
585 srand((uint32_t)time(NULL));595 srand ((uint32_t)time (NULL));
586 for(int i=0; i<(m_iStrideA<<3); i++)596 for (int i = 0; i < (m_iStrideA << 3); i++)
587 m_pPixSrcA[i]=rand()%256;597 m_pPixSrcA[i] = rand() % 256;
588 for(int i=0; i<(m_iStrideB<<3); i++)598 for (int i = 0; i < (m_iStrideB << 3); i++)
589 m_pPixSrcB[i]=rand()%256;599 m_pPixSrcB[i] = rand() % 256;
590 600
591 EXPECT_EQ(WelsSampleSatd8x8_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd8x8_sse2(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB ));601 EXPECT_EQ (WelsSampleSatd8x8_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd8x8_sse2 (m_pPixSrcA,
602 m_iStrideA, m_pPixSrcB, m_iStrideB));
592}603}
593 604
594TEST_F(SadSatdAssemblyFuncTest, WelsSampleSatd8x16_sse2) {605TEST_F (SadSatdAssemblyFuncTest, WelsSampleSatd8x16_sse2) {
595 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))606 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))
596 return;607 return;
597 srand((uint32_t)time(NULL));608 srand ((uint32_t)time (NULL));
598 for(int i=0; i<(m_iStrideA<<4); i++)609 for (int i = 0; i < (m_iStrideA << 4); i++)
599 m_pPixSrcA[i]=rand()%256;610 m_pPixSrcA[i] = rand() % 256;
600 for(int i=0; i<(m_iStrideB<<4); i++)611 for (int i = 0; i < (m_iStrideB << 4); i++)
601 m_pPixSrcB[i]=rand()%256;612 m_pPixSrcB[i] = rand() % 256;
602 613
603 EXPECT_EQ(WelsSampleSatd8x16_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd8x16_sse2(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB));614 EXPECT_EQ (WelsSampleSatd8x16_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd8x16_sse2 (m_pPixSrcA,
615 m_iStrideA, m_pPixSrcB, m_iStrideB));
604}616}
605 617
606TEST_F(SadSatdAssemblyFuncTest, WelsSampleSatd16x8_sse2) {618TEST_F (SadSatdAssemblyFuncTest, WelsSampleSatd16x8_sse2) {
607 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))619 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))
608 return;620 return;
609 srand((uint32_t)time(NULL));621 srand ((uint32_t)time (NULL));
610 for(int i=0; i<(m_iStrideA<<3); i++)622 for (int i = 0; i < (m_iStrideA << 3); i++)
611 m_pPixSrcA[i]=rand()%256;623 m_pPixSrcA[i] = rand() % 256;
612 for(int i=0; i<(m_iStrideB<<3); i++)624 for (int i = 0; i < (m_iStrideB << 3); i++)
613 m_pPixSrcB[i]=rand()%256;625 m_pPixSrcB[i] = rand() % 256;
614 626
615 EXPECT_EQ(WelsSampleSatd16x8_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd16x8_sse2(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB));627 EXPECT_EQ (WelsSampleSatd16x8_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd16x8_sse2 (m_pPixSrcA,
628 m_iStrideA, m_pPixSrcB, m_iStrideB));
616}629}
617 630
618TEST_F(SadSatdAssemblyFuncTest, WelsSampleSatd16x16_sse2) {631TEST_F (SadSatdAssemblyFuncTest, WelsSampleSatd16x16_sse2) {
619 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))632 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))
620 return;633 return;
621 srand((uint32_t)time(NULL));634 srand ((uint32_t)time (NULL));
622 for(int i=0; i<(m_iStrideA<<4); i++)635 for (int i = 0; i < (m_iStrideA << 4); i++)
623 m_pPixSrcA[i]=rand()%256;636 m_pPixSrcA[i] = rand() % 256;
624 for(int i=0; i<(m_iStrideB<<4); i++)637 for (int i = 0; i < (m_iStrideB << 4); i++)
625 m_pPixSrcB[i]=rand()%256;638 m_pPixSrcB[i] = rand() % 256;
626 639
627 EXPECT_EQ(WelsSampleSatd16x16_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd16x16_sse2(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB));640 EXPECT_EQ (WelsSampleSatd16x16_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd16x16_sse2 (m_pPixSrcA,
641 m_iStrideA, m_pPixSrcB, m_iStrideB));
628}642}
629 643
630TEST_F(SadSatdAssemblyFuncTest, WelsSampleSatd4x4_sse41) {644TEST_F (SadSatdAssemblyFuncTest, WelsSampleSatd4x4_sse41) {
631 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE41))645 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE41))
632 return;646 return;
633 srand((uint32_t)time(NULL));647 srand ((uint32_t)time (NULL));
634 for(int i=0; i<(m_iStrideA<<2); i++)648 for (int i = 0; i < (m_iStrideA << 2); i++)
635 m_pPixSrcA[i]=rand()%256;649 m_pPixSrcA[i] = rand() % 256;
636 for(int i=0; i<(m_iStrideB<<2); i++)650 for (int i = 0; i < (m_iStrideB << 2); i++)
637 m_pPixSrcB[i]=rand()%256;651 m_pPixSrcB[i] = rand() % 256;
638 652
639 EXPECT_EQ(WelsSampleSatd4x4_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd4x4_sse41(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB));653 EXPECT_EQ (WelsSampleSatd4x4_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd4x4_sse41 (m_pPixSrcA,
654 m_iStrideA, m_pPixSrcB, m_iStrideB));
640}655}
641 656
642TEST_F(SadSatdAssemblyFuncTest, WelsSampleSatd8x8_sse41) {657TEST_F (SadSatdAssemblyFuncTest, WelsSampleSatd8x8_sse41) {
643 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE41))658 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE41))
644 return;659 return;
645 srand((uint32_t)time(NULL));660 srand ((uint32_t)time (NULL));
646 for(int i=0; i<(m_iStrideA<<3); i++)661 for (int i = 0; i < (m_iStrideA << 3); i++)
647 m_pPixSrcA[i]=rand()%256;662 m_pPixSrcA[i] = rand() % 256;
648 for(int i=0; i<(m_iStrideB<<3); i++)663 for (int i = 0; i < (m_iStrideB << 3); i++)
649 m_pPixSrcB[i]=rand()%256;664 m_pPixSrcB[i] = rand() % 256;
650 665
651 EXPECT_EQ(WelsSampleSatd8x8_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd8x8_sse41(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB ));666 EXPECT_EQ (WelsSampleSatd8x8_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd8x8_sse41 (m_pPixSrcA,
667 m_iStrideA, m_pPixSrcB, m_iStrideB));
652}668}
653 669
654TEST_F(SadSatdAssemblyFuncTest, WelsSampleSatd8x16_sse41) {670TEST_F (SadSatdAssemblyFuncTest, WelsSampleSatd8x16_sse41) {
655 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE41))671 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE41))
656 return;672 return;
657 srand((uint32_t)time(NULL));673 srand ((uint32_t)time (NULL));
658 for(int i=0; i<(m_iStrideA<<4); i++)674 for (int i = 0; i < (m_iStrideA << 4); i++)
659 m_pPixSrcA[i]=rand()%256;675 m_pPixSrcA[i] = rand() % 256;
660 for(int i=0; i<(m_iStrideB<<4); i++)676 for (int i = 0; i < (m_iStrideB << 4); i++)
661 m_pPixSrcB[i]=rand()%256;677 m_pPixSrcB[i] = rand() % 256;
662 678
663 EXPECT_EQ(WelsSampleSatd8x16_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd8x16_sse41(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB));679 EXPECT_EQ (WelsSampleSatd8x16_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd8x16_sse41 (m_pPixSrcA,
680 m_iStrideA, m_pPixSrcB, m_iStrideB));
664}681}
665 682
666TEST_F(SadSatdAssemblyFuncTest, WelsSampleSatd16x8_sse41) {683TEST_F (SadSatdAssemblyFuncTest, WelsSampleSatd16x8_sse41) {
667 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE41))684 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE41))
668 return;685 return;
669 srand((uint32_t)time(NULL));686 srand ((uint32_t)time (NULL));
670 for(int i=0; i<(m_iStrideA<<3); i++)687 for (int i = 0; i < (m_iStrideA << 3); i++)
671 m_pPixSrcA[i]=rand()%256;688 m_pPixSrcA[i] = rand() % 256;
672 for(int i=0; i<(m_iStrideB<<3); i++)689 for (int i = 0; i < (m_iStrideB << 3); i++)
673 m_pPixSrcB[i]=rand()%256;690 m_pPixSrcB[i] = rand() % 256;
674 691
675 EXPECT_EQ(WelsSampleSatd16x8_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd16x8_sse41(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB));692 EXPECT_EQ (WelsSampleSatd16x8_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd16x8_sse41 (m_pPixSrcA,
693 m_iStrideA, m_pPixSrcB, m_iStrideB));
676}694}
677 695
678TEST_F(SadSatdAssemblyFuncTest, WelsSampleSatd16x16_sse41) {696TEST_F (SadSatdAssemblyFuncTest, WelsSampleSatd16x16_sse41) {
679 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE41))697 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE41))
680 return;698 return;
681 srand((uint32_t)time(NULL));699 srand ((uint32_t)time (NULL));
682 for(int i=0; i<(m_iStrideA<<4); i++)700 for (int i = 0; i < (m_iStrideA << 4); i++)
683 m_pPixSrcA[i]=rand()%256;701 m_pPixSrcA[i] = rand() % 256;
684 for(int i=0; i<(m_iStrideB<<4); i++)702 for (int i = 0; i < (m_iStrideB << 4); i++)
685 m_pPixSrcB[i]=rand()%256;703 m_pPixSrcB[i] = rand() % 256;
686 704
687 EXPECT_EQ(WelsSampleSatd16x16_c(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB), WelsSampleSatd16x16_sse41(m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB));705 EXPECT_EQ (WelsSampleSatd16x16_c (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB),
706 WelsSampleSatd16x16_sse41 (m_pPixSrcA, m_iStrideA, m_pPixSrcB, m_iStrideB));
688}707}
689 708
690TEST_F(SadSatdAssemblyFuncTest, WelsSampleSadFour16x16_sse2) {709TEST_F (SadSatdAssemblyFuncTest, WelsSampleSadFour16x16_sse2) {
691 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))710 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))
692 return;711 return;
693 712
694 srand((uint32_t)time(NULL));713 srand ((uint32_t)time (NULL));
695 for(int i=0; i<(m_iStrideA<<5); i++)714 for (int i = 0; i < (m_iStrideA << 5); i++)
696 m_pPixSrcA[i]=rand()%256;715 m_pPixSrcA[i] = rand() % 256;
697 for(int i=0; i<(m_iStrideB<<5); i++)716 for (int i = 0; i < (m_iStrideB << 5); i++)
698 m_pPixSrcB[i]=rand()%256;717 m_pPixSrcB[i] = rand() % 256;
699 uint8_t *pPixA=m_pPixSrcA;718 uint8_t* pPixA = m_pPixSrcA;
700 uint8_t *pPixB=m_pPixSrcB+m_iStrideB;719 uint8_t* pPixB = m_pPixSrcB + m_iStrideB;
701 720
702 int32_t iSumSad = 0;721 int32_t iSumSad = 0;
703 for (int i = 0; i <16; i++ ) {722 for (int i = 0; i < 16; i++) {
704 for(int j=0; j<16; j++) {723 for (int j = 0; j < 16; j++) {
705 iSumSad+=abs(pPixA[j]-pPixB[j-1]);724 iSumSad += abs (pPixA[j] - pPixB[j - 1]);
706 iSumSad+=abs(pPixA[j]-pPixB[j+1]);725 iSumSad += abs (pPixA[j] - pPixB[j + 1]);
707 iSumSad+=abs(pPixA[j]-pPixB[j-m_iStrideB]);726 iSumSad += abs (pPixA[j] - pPixB[j - m_iStrideB]);
708 iSumSad+=abs(pPixA[j]-pPixB[j+m_iStrideB]);727 iSumSad += abs (pPixA[j] - pPixB[j + m_iStrideB]);
709 }728 }
710 729
711 pPixA += m_iStrideA;730 pPixA += m_iStrideA;
712 pPixB += m_iStrideB;731 pPixB += m_iStrideB;
713 }732 }
714 733
715 WelsSampleSadFour16x16_sse2(m_pPixSrcA, m_iStrideA, m_pPixSrcB+m_iStrideB, m_iStrideB, m_pSad);734 WelsSampleSadFour16x16_sse2 (m_pPixSrcA, m_iStrideA, m_pPixSrcB + m_iStrideB, m_iStrideB, m_pSad);
716 EXPECT_EQ(m_pSad[0]+m_pSad[1]+m_pSad[2]+m_pSad[3],iSumSad);735 EXPECT_EQ (m_pSad[0] + m_pSad[1] + m_pSad[2] + m_pSad[3], iSumSad);
717}736}
718 737
719TEST_F(SadSatdAssemblyFuncTest, WelsSampleSadFour16x8_sse2) {738TEST_F (SadSatdAssemblyFuncTest, WelsSampleSadFour16x8_sse2) {
720 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))739 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))
721 return;740 return;
722 741
723 srand((uint32_t)time(NULL));742 srand ((uint32_t)time (NULL));
724 for(int i=0; i<(m_iStrideA<<5); i++)743 for (int i = 0; i < (m_iStrideA << 5); i++)
725 m_pPixSrcA[i]=rand()%256;744 m_pPixSrcA[i] = rand() % 256;
726 for(int i=0; i<(m_iStrideB<<5); i++)745 for (int i = 0; i < (m_iStrideB << 5); i++)
727 m_pPixSrcB[i]=rand()%256;746 m_pPixSrcB[i] = rand() % 256;
728 uint8_t *pPixA=m_pPixSrcA;747 uint8_t* pPixA = m_pPixSrcA;
729 uint8_t *pPixB=m_pPixSrcB+m_iStrideB;748 uint8_t* pPixB = m_pPixSrcB + m_iStrideB;
730 749
731 int32_t iSumSad = 0;750 int32_t iSumSad = 0;
732 for (int i = 0; i <8; i++ ) {751 for (int i = 0; i < 8; i++) {
733 for(int j=0; j<16; j++) {752 for (int j = 0; j < 16; j++) {
734 iSumSad+=abs(pPixA[j]-pPixB[j-1]);753 iSumSad += abs (pPixA[j] - pPixB[j - 1]);
735 iSumSad+=abs(pPixA[j]-pPixB[j+1]);754 iSumSad += abs (pPixA[j] - pPixB[j + 1]);
736 iSumSad+=abs(pPixA[j]-pPixB[j-m_iStrideB]);755 iSumSad += abs (pPixA[j] - pPixB[j - m_iStrideB]);
737 iSumSad+=abs(pPixA[j]-pPixB[j+m_iStrideB]);756 iSumSad += abs (pPixA[j] - pPixB[j + m_iStrideB]);
738 }757 }
739 758
740 pPixA += m_iStrideA;759 pPixA += m_iStrideA;
741 pPixB += m_iStrideB;760 pPixB += m_iStrideB;
742 }761 }
743 762
744 WelsSampleSadFour16x8_sse2(m_pPixSrcA, m_iStrideA, m_pPixSrcB+m_iStrideB, m_iStrideB, m_pSad);763 WelsSampleSadFour16x8_sse2 (m_pPixSrcA, m_iStrideA, m_pPixSrcB + m_iStrideB, m_iStrideB, m_pSad);
745 EXPECT_EQ(m_pSad[0]+m_pSad[1]+m_pSad[2]+m_pSad[3],iSumSad);764 EXPECT_EQ (m_pSad[0] + m_pSad[1] + m_pSad[2] + m_pSad[3], iSumSad);
746}765}
747 766
748TEST_F(SadSatdAssemblyFuncTest, WelsSampleSadFour8x16_sse2) {767TEST_F (SadSatdAssemblyFuncTest, WelsSampleSadFour8x16_sse2) {
749 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))768 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))
750 return;769 return;
751 770
752 srand((uint32_t)time(NULL));771 srand ((uint32_t)time (NULL));
753 for(int i=0; i<(m_iStrideA<<5); i++)772 for (int i = 0; i < (m_iStrideA << 5); i++)
754 m_pPixSrcA[i]=rand()%256;773 m_pPixSrcA[i] = rand() % 256;
755 for(int i=0; i<(m_iStrideB<<5); i++)774 for (int i = 0; i < (m_iStrideB << 5); i++)
756 m_pPixSrcB[i]=rand()%256;775 m_pPixSrcB[i] = rand() % 256;
757 uint8_t *pPixA=m_pPixSrcA;776 uint8_t* pPixA = m_pPixSrcA;
758 uint8_t *pPixB=m_pPixSrcB+m_iStrideB;777 uint8_t* pPixB = m_pPixSrcB + m_iStrideB;
759 778
760 int32_t iSumSad = 0;779 int32_t iSumSad = 0;
761 for (int i = 0; i <16; i++ ) {780 for (int i = 0; i < 16; i++) {
762 for(int j=0; j<8; j++) {781 for (int j = 0; j < 8; j++) {
763 iSumSad+=abs(pPixA[j]-pPixB[j-1]);782 iSumSad += abs (pPixA[j] - pPixB[j - 1]);
764 iSumSad+=abs(pPixA[j]-pPixB[j+1]);783 iSumSad += abs (pPixA[j] - pPixB[j + 1]);
765 iSumSad+=abs(pPixA[j]-pPixB[j-m_iStrideB]);784 iSumSad += abs (pPixA[j] - pPixB[j - m_iStrideB]);
766 iSumSad+=abs(pPixA[j]-pPixB[j+m_iStrideB]);785 iSumSad += abs (pPixA[j] - pPixB[j + m_iStrideB]);
767 }786 }
768 787
769 pPixA += m_iStrideA;788 pPixA += m_iStrideA;
770 pPixB += m_iStrideB;789 pPixB += m_iStrideB;
771 }790 }
772 791
773 WelsSampleSadFour8x16_sse2(m_pPixSrcA, m_iStrideA, m_pPixSrcB+m_iStrideB, m_iStrideB, m_pSad);792 WelsSampleSadFour8x16_sse2 (m_pPixSrcA, m_iStrideA, m_pPixSrcB + m_iStrideB, m_iStrideB, m_pSad);
774 EXPECT_EQ(m_pSad[0]+m_pSad[1]+m_pSad[2]+m_pSad[3],iSumSad);793 EXPECT_EQ (m_pSad[0] + m_pSad[1] + m_pSad[2] + m_pSad[3], iSumSad);
775}794}
776 795
777TEST_F(SadSatdAssemblyFuncTest, WelsSampleSadFour8x8_sse2) {796TEST_F (SadSatdAssemblyFuncTest, WelsSampleSadFour8x8_sse2) {
778 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))797 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))
779 return;798 return;
780 799
781 srand((uint32_t)time(NULL));800 srand ((uint32_t)time (NULL));
782 for(int i=0; i<(m_iStrideA<<4); i++)801 for (int i = 0; i < (m_iStrideA << 4); i++)
783 m_pPixSrcA[i]=rand()%256;802 m_pPixSrcA[i] = rand() % 256;
784 for(int i=0; i<(m_iStrideB<<4); i++)803 for (int i = 0; i < (m_iStrideB << 4); i++)
785 m_pPixSrcB[i]=rand()%256;804 m_pPixSrcB[i] = rand() % 256;
786 uint8_t *pPixA=m_pPixSrcA;805 uint8_t* pPixA = m_pPixSrcA;
787 uint8_t *pPixB=m_pPixSrcB+m_iStrideB;806 uint8_t* pPixB = m_pPixSrcB + m_iStrideB;
788 807
789 int32_t iSumSad = 0;808 int32_t iSumSad = 0;
790 for (int i = 0; i <8; i++ ) {809 for (int i = 0; i < 8; i++) {
791 for(int j=0; j<8; j++) {810 for (int j = 0; j < 8; j++) {
792 iSumSad+=abs(pPixA[j]-pPixB[j-1]);811 iSumSad += abs (pPixA[j] - pPixB[j - 1]);
793 iSumSad+=abs(pPixA[j]-pPixB[j+1]);812 iSumSad += abs (pPixA[j] - pPixB[j + 1]);
794 iSumSad+=abs(pPixA[j]-pPixB[j-m_iStrideB]);813 iSumSad += abs (pPixA[j] - pPixB[j - m_iStrideB]);
795 iSumSad+=abs(pPixA[j]-pPixB[j+m_iStrideB]);814 iSumSad += abs (pPixA[j] - pPixB[j + m_iStrideB]);
796 }815 }
797 816
798 pPixA += m_iStrideA;817 pPixA += m_iStrideA;
799 pPixB += m_iStrideB;818 pPixB += m_iStrideB;
800 }819 }
801 820
802 WelsSampleSadFour8x8_sse2(m_pPixSrcA, m_iStrideA, m_pPixSrcB+m_iStrideB, m_iStrideB, m_pSad);821 WelsSampleSadFour8x8_sse2 (m_pPixSrcA, m_iStrideA, m_pPixSrcB + m_iStrideB, m_iStrideB, m_pSad);
803 EXPECT_EQ(m_pSad[0]+m_pSad[1]+m_pSad[2]+m_pSad[3],iSumSad);822 EXPECT_EQ (m_pSad[0] + m_pSad[1] + m_pSad[2] + m_pSad[3], iSumSad);
804}823}
805 824
806 825
807TEST_F(SadSatdAssemblyFuncTest, WelsSampleSadFour4x4_sse2) {826TEST_F (SadSatdAssemblyFuncTest, WelsSampleSadFour4x4_sse2) {
808 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))827 if (0 == (m_uiCpuFeatureFlag & WELS_CPU_SSE2))
809 return;828 return;
810 829
811 srand((uint32_t)time(NULL));830 srand ((uint32_t)time (NULL));
812 for(int i=0; i<(m_iStrideA<<3); i++)831 for (int i = 0; i < (m_iStrideA << 3); i++)
813 m_pPixSrcA[i]=rand()%256;832 m_pPixSrcA[i] = rand() % 256;
814 for(int i=0; i<(m_iStrideB<<3); i++)833 for (int i = 0; i < (m_iStrideB << 3); i++)
815 m_pPixSrcB[i]=rand()%256;834 m_pPixSrcB[i] = rand() % 256;
816 uint8_t *pPixA=m_pPixSrcA;835 uint8_t* pPixA = m_pPixSrcA;
817 uint8_t *pPixB=m_pPixSrcB+m_iStrideB;836 uint8_t* pPixB = m_pPixSrcB + m_iStrideB;
818 837
819 int32_t iSumSad = 0;838 int32_t iSumSad = 0;
820 for (int i = 0; i <4; i++ ) {839 for (int i = 0; i < 4; i++) {
821 for(int j=0; j<4; j++) {840 for (int j = 0; j < 4; j++) {
822 iSumSad+=abs(pPixA[j]-pPixB[j-1]);841 iSumSad += abs (pPixA[j] - pPixB[j - 1]);
823 iSumSad+=abs(pPixA[j]-pPixB[j+1]);842 iSumSad += abs (pPixA[j] - pPixB[j + 1]);
824 iSumSad+=abs(pPixA[j]-pPixB[j-m_iStrideB]);843 iSumSad += abs (pPixA[j] - pPixB[j - m_iStrideB]);
825 iSumSad+=abs(pPixA[j]-pPixB[j+m_iStrideB]);844 iSumSad += abs (pPixA[j] - pPixB[j + m_iStrideB]);
826 }845 }
827 846
828 pPixA += m_iStrideA;847 pPixA += m_iStrideA;
829 pPixB += m_iStrideB;848 pPixB += m_iStrideB;
830 }849 }
831 850
832 WelsSampleSadFour4x4_sse2(m_pPixSrcA, m_iStrideA, m_pPixSrcB+m_iStrideB, m_iStrideB, m_pSad);851 WelsSampleSadFour4x4_sse2 (m_pPixSrcA, m_iStrideA, m_pPixSrcB + m_iStrideB, m_iStrideB, m_pSad);
833 EXPECT_EQ(m_pSad[0]+m_pSad[1]+m_pSad[2]+m_pSad[3],iSumSad);852 EXPECT_EQ (m_pSad[0] + m_pSad[1] + m_pSad[2] + m_pSad[3], iSumSad);
834}853}
835#endif854#endif

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t