Showing the changes to test/encoder/EncUT_EncoderMbAux.cpp (1 of 1 file). Show all
Unified · Split
| @@ -292,6 +292,7 @@ TEST (EncodeMbAuxTest, WelsGetNoneZeroCount_sse2) { · 291 unmodified lines | |||
| 292 | #define WELS_ABS_LC(a) ((sign ^ (int32_t)(a)) - sign) | 292 | #define WELS_ABS_LC(a) ((sign ^ (int32_t)(a)) - sign) |
| 293 | #define NEW_QUANT(pDct, ff, mf) (((ff)+ WELS_ABS_LC(pDct))*(mf)) >>16 | 293 | #define NEW_QUANT(pDct, ff, mf) (((ff)+ WELS_ABS_LC(pDct))*(mf)) >>16 |
| 294 | #define WELS_NEW_QUANT(pDct,ff,mf) WELS_ABS_LC(NEW_QUANT(pDct, ff, mf)) | 294 | #define WELS_NEW_QUANT(pDct,ff,mf) WELS_ABS_LC(NEW_QUANT(pDct, ff, mf)) |
| 295 | namespace { | ||
| 295 | void WelsQuantFour4x4MaxAnchor (int16_t* pDct, int16_t* ff, int16_t* mf, int16_t* max) { | 296 | void WelsQuantFour4x4MaxAnchor (int16_t* pDct, int16_t* ff, int16_t* mf, int16_t* max) { |
| 296 | int32_t i, j, k, sign; | 297 | int32_t i, j, k, sign; |
| 297 | int16_t max_abs; | 298 | int16_t max_abs; |
| @@ -308,25 +309,7 @@ void WelsQuantFour4x4MaxAnchor (int16_t* pDct, int16_t* ff, int16_t* mf, int16_ · 10 unmodified lines | |||
| 308 | max[k] = max_abs; | 309 | max[k] = max_abs; |
| 309 | } | 310 | } |
| 310 | } | 311 | } |
| 311 | TEST (EncodeMbAuxTest, WelsQuantFour4x4Max_c) { | 312 | void TestWelsQuantFour4x4Max (PQuantizationMaxFunc func) { |
| 312 | int16_t ff[8], mf[8]; | ||
| 313 | int16_t iDctA[64], iMaxA[16]; | ||
| 314 | int16_t iDctC[64], iMaxC[16]; | ||
| 315 | for (int i = 0; i < 8; i++) { | ||
| 316 | ff[i] = rand() & 32767; | ||
| 317 | mf[i] = rand() & 32767; | ||
| 318 | } | ||
| 319 | for (int i = 0; i < 64; i++) | ||
| 320 | iDctA[i] = iDctC[i] = (rand() & 65535) - 32767; | ||
| 321 | WelsQuantFour4x4MaxAnchor (iDctA, ff, mf, iMaxA); | ||
| 322 | WelsQuantFour4x4Max_c (iDctC, ff, mf, iMaxC); | ||
| 323 | for (int i = 0; i < 64; i++) | ||
| 324 | EXPECT_EQ (iDctA[i], iDctC[i]); | ||
| 325 | for (int i = 0; i < 4; i++) | ||
| 326 | EXPECT_EQ (iMaxA[i], iMaxC[i]); | ||
| 327 | } | ||
| 328 | #ifdef X86_ASM | ||
| 329 | TEST (EncodeMbAuxTest, WelsQuantFour4x4Max_sse2) { | ||
| 330 | CMemoryAlign cMemoryAlign (0); | 313 | CMemoryAlign cMemoryAlign (0); |
| 331 | ALLOC_MEMORY (int16_t, ff, 8); | 314 | ALLOC_MEMORY (int16_t, ff, 8); |
| 332 | ALLOC_MEMORY (int16_t, mf, 8); | 315 | ALLOC_MEMORY (int16_t, mf, 8); |
| @@ -340,8 +323,8 @@ TEST (EncodeMbAuxTest, WelsQuantFour4x4Max_sse2) { · 7 unmodified lines | |||
| 340 | } | 323 | } |
| 341 | for (int i = 0; i < 64; i++) | 324 | for (int i = 0; i < 64; i++) |
| 342 | iDctC[i] = iDctS[i] = (rand() & 65535) - 32767; | 325 | iDctC[i] = iDctS[i] = (rand() & 65535) - 32767; |
| 343 | WelsQuantFour4x4Max_c (iDctC, ff, mf, iMaxC); | 326 | WelsQuantFour4x4MaxAnchor (iDctC, ff, mf, iMaxC); |
| 344 | WelsQuantFour4x4Max_sse2 (iDctS, ff, mf, iMaxS); | 327 | func (iDctS, ff, mf, iMaxS); |
| 345 | for (int i = 0; i < 64; i++) | 328 | for (int i = 0; i < 64; i++) |
| 346 | EXPECT_EQ (iDctC[i], iDctS[i]); | 329 | EXPECT_EQ (iDctC[i], iDctS[i]); |
| 347 | for (int i = 0; i < 4; i++) | 330 | for (int i = 0; i < 4; i++) |
| @@ -353,6 +336,14 @@ TEST (EncodeMbAuxTest, WelsQuantFour4x4Max_sse2) { · 5 unmodified lines | |||
| 353 | FREE_MEMORY (iMaxC); | 336 | FREE_MEMORY (iMaxC); |
| 354 | FREE_MEMORY (iMaxS); | 337 | FREE_MEMORY (iMaxS); |
| 355 | } | 338 | } |
| 339 | } // anon ns | ||
| 340 | TEST (EncodeMbAuxTest, WelsQuantFour4x4Max_c) { | ||
| 341 | TestWelsQuantFour4x4Max (WelsQuantFour4x4Max_c); | ||
| 342 | } | ||
| 343 | #ifdef X86_ASM | ||
| 344 | TEST (EncodeMbAuxTest, WelsQuantFour4x4Max_sse2) { | ||
| 345 | TestWelsQuantFour4x4Max (WelsQuantFour4x4Max_sse2); | ||
| 346 | } | ||
| 356 | #endif | 347 | #endif |
| 357 | int32_t WelsHadamardQuant2x2SkipAnchor (int16_t* rs, int16_t ff, int16_t mf) { | 348 | int32_t WelsHadamardQuant2x2SkipAnchor (int16_t* rs, int16_t ff, int16_t mf) { |
| 358 | int16_t pDct[4], s[4]; | 349 | int16_t pDct[4], s[4]; |