Showing the changes to test/processing (1 of 9 files). Show all
Unified · Split
| @@ -199,6 +199,79 @@ TEST (DownSampleTest, func) { \ · 198 unmodified lines | ||
| 199 | 199 | } \ |
| 200 | 200 | } |
| 201 | 201 | |
| 202 | +#define GENERATE_DyadicBilinearOneThirdDownsampler_UT(func, ASM, CPUFLAGS) \ | |
| 203 | +TEST (DownSampleTest, func) { \ | |
| 204 | + if (ASM) {\ | |
| 205 | + int32_t iCpuCores = 0; \ | |
| 206 | + uint32_t m_uiCpuFeatureFlag = WelsCPUFeatureDetect (&iCpuCores); \ | |
| 207 | + if (0 == (m_uiCpuFeatureFlag & CPUFLAGS)) \ | |
| 208 | + return; \ | |
| 209 | + } \ | |
| 210 | + ENFORCE_STACK_ALIGN_1D (uint8_t, dst_c, 50000, 16); \ | |
| 211 | + ENFORCE_STACK_ALIGN_1D (uint8_t, src_c, 50000, 16); \ | |
| 212 | + int dst_stride_c; \ | |
| 213 | + int src_stride_c; \ | |
| 214 | + int src_width_c; \ | |
| 215 | + int src_height_c; \ | |
| 216 | + ENFORCE_STACK_ALIGN_1D (uint8_t, dst_a, 50000, 16); \ | |
| 217 | + ENFORCE_STACK_ALIGN_1D (uint8_t, src_a, 50000, 16); \ | |
| 218 | + int dst_stride_a; \ | |
| 219 | + int src_stride_a; \ | |
| 220 | + int src_width_a; \ | |
| 221 | + int src_height_a; \ | |
| 222 | + dst_stride_c = dst_stride_a = 560; \ | |
| 223 | + src_stride_c = src_stride_a = 560; \ | |
| 224 | + src_width_c = src_width_a = 480; \ | |
| 225 | + src_height_c = src_height_a = 30; \ | |
| 226 | + for (int j = 0; j < 50000; j++) { \ | |
| 227 | + dst_c[j] = dst_a[j] = rand() % 256; \ | |
| 228 | + src_c[j] = src_a[j] = rand() % 256; \ | |
| 229 | + } \ | |
| 230 | + DyadicBilinearOneThirdDownsampler_c (dst_c, dst_stride_c, src_c, src_stride_c, src_width_c, src_height_c/3); \ | |
| 231 | + func (dst_a, dst_stride_a, src_a, src_stride_a, src_width_a, src_height_a/3); \ | |
| 232 | + for (int j = 0; j < (src_height_c /3 ); j++) { \ | |
| 233 | + for (int m = 0; m < (src_width_c /3); m++) { \ | |
| 234 | + ASSERT_EQ (dst_c[m + j * dst_stride_c], dst_a[m + j * dst_stride_a]); \ | |
| 235 | + } \ | |
| 236 | + } \ | |
| 237 | +} | |
| 238 | + | |
| 239 | +#define GENERATE_DyadicBilinearQuarterDownsampler_UT(func, ASM, CPUFLAGS) \ | |
| 240 | +TEST (DownSampleTest, func) { \ | |
| 241 | + if (ASM) {\ | |
| 242 | + int32_t iCpuCores = 0; \ | |
| 243 | + uint32_t m_uiCpuFeatureFlag = WelsCPUFeatureDetect (&iCpuCores); \ | |
| 244 | + if (0 == (m_uiCpuFeatureFlag & CPUFLAGS)) \ | |
| 245 | + return; \ | |
| 246 | + } \ | |
| 247 | + ENFORCE_STACK_ALIGN_1D (uint8_t, dst_c, 50000, 16); \ | |
| 248 | + ENFORCE_STACK_ALIGN_1D (uint8_t, src_c, 50000, 16); \ | |
| 249 | + int dst_stride_c; \ | |
| 250 | + int src_stride_c; \ | |
| 251 | + int src_width_c; \ | |
| 252 | + int src_height_c; \ | |
| 253 | + ENFORCE_STACK_ALIGN_1D (uint8_t, dst_a, 50000, 16); \ | |
| 254 | + ENFORCE_STACK_ALIGN_1D (uint8_t, src_a, 50000, 16); \ | |
| 255 | + int dst_stride_a; \ | |
| 256 | + int src_stride_a; \ | |
| 257 | + int src_width_a; \ | |
| 258 | + int src_height_a; \ | |
| 259 | + dst_stride_c = dst_stride_a = 560; \ | |
| 260 | + src_stride_c = src_stride_a = 560; \ | |
| 261 | + src_width_c = src_width_a = 640; \ | |
| 262 | + src_height_c = src_height_a = 80; \ | |
| 263 | + for (int j = 0; j < 50000; j++) { \ | |
| 264 | + dst_c[j] = dst_a[j] = rand() % 256; \ | |
| 265 | + src_c[j] = src_a[j] = rand() % 256; \ | |
| 266 | + } \ | |
| 267 | + DyadicBilinearQuarterDownsampler_c (dst_c, dst_stride_c, src_c, src_stride_c, src_width_c, src_height_c); \ | |
| 268 | + func (dst_a, dst_stride_a, src_a, src_stride_a, src_width_a, src_height_a); \ | |
| 269 | + for (int j = 0; j < (src_height_c >> 2); j++) { \ | |
| 270 | + for (int m = 0; m < (src_width_c >> 2); m++) { \ | |
| 271 | + ASSERT_EQ (dst_c[m + j * dst_stride_c], dst_a[m + j * dst_stride_a]); \ | |
| 272 | + } \ | |
| 273 | + } \ | |
| 274 | +} | |
| 202 | 275 | #define GENERATE_GeneralBilinearDownsampler_UT(func, ref, ASM, CPUFLAGS) \ |
| 203 | 276 | TEST (DownSampleTest, func) { \ |
| 204 | 277 | if (ASM) {\ |
| @@ -259,6 +332,13 @@ GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx16_ssse3, · 54 unmodified lines | ||
| 259 | 332 | GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx32_sse4, 1, WELS_CPU_SSE41) |
| 260 | 333 | GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx16_sse4, 1, WELS_CPU_SSE41) |
| 261 | 334 | |
| 335 | +GENERATE_DyadicBilinearOneThirdDownsampler_UT (DyadicBilinearOneThirdDownsampler_ssse3, 1, WELS_CPU_SSSE3) | |
| 336 | +GENERATE_DyadicBilinearOneThirdDownsampler_UT (DyadicBilinearOneThirdDownsampler_sse4, 1, WELS_CPU_SSE41) | |
| 337 | + | |
| 338 | +GENERATE_DyadicBilinearQuarterDownsampler_UT (DyadicBilinearQuarterDownsampler_sse, 1, WELS_CPU_SSE) | |
| 339 | +GENERATE_DyadicBilinearQuarterDownsampler_UT (DyadicBilinearQuarterDownsampler_ssse3, 1, WELS_CPU_SSSE3) | |
| 340 | +GENERATE_DyadicBilinearQuarterDownsampler_UT (DyadicBilinearQuarterDownsampler_sse4, 1, WELS_CPU_SSE41) | |
| 341 | + | |
| 262 | 342 | GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearFastDownsamplerWrap_sse2, GeneralBilinearFastDownsampler_ref, 1, |
| 263 | 343 | WELS_CPU_SSE2) |
| 264 | 344 | GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_sse2, |
| @@ -269,6 +349,10 @@ GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_s · 4 unmodified lines | ||
| 269 | 349 | GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx32_neon, 1, WELS_CPU_NEON) |
| 270 | 350 | GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsampler_neon, 1, WELS_CPU_NEON) |
| 271 | 351 | |
| 352 | +GENERATE_DyadicBilinearOneThirdDownsampler_UT (DyadicBilinearOneThirdDownsampler_neon, 1, WELS_CPU_NEON) | |
| 353 | + | |
| 354 | +GENERATE_DyadicBilinearQuarterDownsampler_UT (DyadicBilinearQuarterDownsampler_neon, 1, WELS_CPU_NEON) | |
| 355 | + | |
| 272 | 356 | GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_neon, |
| 273 | 357 | GeneralBilinearAccurateDownsampler_ref, 1, WELS_CPU_NEON) |
| 274 | 358 | #endif |
| @@ -277,6 +361,10 @@ GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_n · 2 unmodified lines | ||
| 277 | 361 | GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsamplerWidthx32_AArch64_neon, 1, WELS_CPU_NEON) |
| 278 | 362 | GENERATE_DyadicBilinearDownsampler_UT (DyadicBilinearDownsampler_AArch64_neon, 1, WELS_CPU_NEON) |
| 279 | 363 | |
| 364 | +GENERATE_DyadicBilinearOneThirdDownsampler_UT (DyadicBilinearOneThirdDownsampler_AArch64_neon, 1, WELS_CPU_NEON) | |
| 365 | + | |
| 366 | +GENERATE_DyadicBilinearQuarterDownsampler_UT (DyadicBilinearQuarterDownsampler_AArch64_neon, 1, WELS_CPU_NEON) | |
| 367 | + | |
| 280 | 368 | GENERATE_GeneralBilinearDownsampler_UT (GeneralBilinearAccurateDownsamplerWrap_AArch64_neon, |
| 281 | 369 | GeneralBilinearAccurateDownsampler_ref, 1, WELS_CPU_NEON) |
| 282 | 370 | #endif |