Ocean
Loading...
Searching...
No Matches
TestSSE.h
Go to the documentation of this file.
1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7
8#ifndef META_OCEAN_TEST_TESTCV_TEST_SSE_H
9#define META_OCEAN_TEST_TESTCV_TEST_SSE_H
10
12
14
15#if defined(OCEAN_HARDWARE_SSE_VERSION) && OCEAN_HARDWARE_SSE_VERSION >= 41
16
17namespace Ocean
18{
19
20namespace Test
21{
22
23namespace TestCV
24{
25
26/**
27 * This class implements a Computer Vision SSE test.
28 * @ingroup testcv
29 */
30class OCEAN_TEST_CV_EXPORT TestSSE
31{
32 public:
33
34 /**
35 * Tests the entire SSE class.
36 * @param testDuration Number of seconds for each test, with range (0, infinity)
37 * @param selector Test selector for filtering sub-tests; default runs all tests
38 * @return True, if succeeded
39 */
40 static bool test(const double testDuration, const TestSelector& selector = TestSelector());
41
42 /*
43 * Tests the SSE averaging functions for 1 channel 8 bit.
44 * @param testDuration Number of seconds for each test, with range (0, infinity)
45 * @return True, if all result are valid
46 */
47 static bool testAveraging1Channel8Bit2x2(const double testDuration);
48
49 /*
50 * Tests the SSE averaging functions for 1 channel 8 bit.
51 * @param testDuration Number of seconds for each test, with range (0, infinity)
52 * @return True, if all result are valid
53 */
54 static bool testAveraging1Channel32Bit2x2(const double testDuration);
55
56 /*
57 * Tests the SSE averaging functions for 2 channel 16 bit.
58 * @param testDuration Number of seconds for each test, with range (0, infinity)
59 * @return True, if all result are valid
60 */
61 static bool testAveraging2Channel16Bit2x2(const double testDuration);
62
63 /*
64 * Tests the SSE averaging functions for 2 channel 66 bit.
65 * @param testDuration Number of seconds for each test, with range (0, infinity)
66 * @return True, if all result are valid
67 */
68 static bool testAveraging2Channel64Bit2x2(const double testDuration);
69
70 /*
71 * Tests the SSE averaging functions for 3 channel 24 bit.
72 * @param testDuration Number of seconds for each test, with range (0, infinity)
73 * @return True, if all result are valid
74 */
75 static bool testAveraging3Channel24Bit2x2(const double testDuration);
76
77 /*
78 * Tests the SSE averaging functions for 3 channel 96 bit.
79 * @param testDuration Number of seconds for each test, with range (0, infinity)
80 * @return True, if all result are valid
81 */
82 static bool testAveraging3Channel96Bit2x2(const double testDuration);
83
84 /*
85 * Tests the SSE averaging functions for 4 channel 32 bit.
86 * @param testDuration Number of seconds for each test, with range (0, infinity)
87 * @return True, if all result are valid
88 */
89 static bool testAveraging4Channel32Bit2x2(const double testDuration);
90
91 /*
92 * Tests the SSE averaging functions for 4 channel 32 bit.
93 * @param testDuration Number of seconds for each test, with range (0, infinity)
94 * @return True, if all result are valid
95 */
96 static bool testAveraging4Channel128Bit2x2(const double testDuration);
97
98 /*
99 * Tests the binary SSE averaging functions for 1 channel 8 bit.
100 * @param testDuration Number of seconds for each test, with range (0, infinity)
101 * @return True, if all result are valid
102 */
103 static bool testBinaryAveraging1Channel8Bit2x2(const double testDuration);
104
105 /*
106 * Tests the SSE averaging functions for 1 channel 8 bit.
107 * @param testDuration Number of seconds for each test, with range (0, infinity)
108 * @return True, if all result are valid
109 */
110 static bool testAveraging1Channel8Bit3x3(const double testDuration);
111
112 /**
113 * De-interleave test for 8 bit 3 channels data with 15 elements.
114 * @param testDuration Number of seconds for each test, with range (0, infinity)
115 * @return True, if succeeded
116 */
117 static bool testDeInterleave3Channel8Bit15Elements(const double testDuration);
118
119 /**
120 * De-interleave test for 8 bit 3 channels data with 24 elements.
121 * @param testDuration Number of seconds for each test, with range (0, infinity)
122 * @return True, if succeeded
123 */
124 static bool testDeInterleave3Channel8Bit24Elements(const double testDuration);
125
126 /**
127 * De-interleave test for 8 bit 3 channels data with 48 elements.
128 * @param testDuration Number of seconds for each test, with range (0, infinity)
129 * @return True, if succeeded
130 */
131 static bool testDeInterleave3Channel8Bit48Elements(const double testDuration);
132
133 /**
134 * De-interleave test for 8 bit 3 channels data with 45 elements.
135 * @param testDuration Number of seconds for each test, with range (0, infinity)
136 * @return True, if succeeded
137 */
138 static bool testDeInterleave3Channel8Bit45Elements(const double testDuration);
139
140 /**
141 * Interleave test for 8 bit 3 channels data with 48 elements.
142 * @param testDuration Number of seconds for each test, with range (0, infinity)
143 * @return True, if succeeded
144 */
145 static bool testInterleave3Channel8Bit48Elements(const double testDuration);
146
147 /**
148 * Reverse channel order test for 8 bit 2 channels data with 32 elements.
149 * @param testDuration Number of seconds for each test, with range (0, infinity)
150 * @return True, if succeeded
151 */
152 static bool testReverseChannelOrder2Channel8Bit32Elements(const double testDuration);
153
154 /**
155 * Reverse channel order test for 8 bit 3 channels data with 48 elements.
156 * @param testDuration Number of seconds for each test, with range (0, infinity)
157 * @return True, if succeeded
158 */
159 static bool testReverseChannelOrder3Channel8Bit48Elements(const double testDuration);
160
161 /**
162 * Reverse channel order test for 8 bit 4 channels data with 64 elements.
163 * @param testDuration Number of seconds for each test, with range (0, infinity)
164 * @return True, if succeeded
165 */
166 static bool testReverseChannelOrder4Channel8Bit64Elements(const double testDuration);
167
168 /**
169 * Reverse channel order and swap test for 8 bit 3 channels data with 48 elements.
170 * @return True, if succeeded
171 */
173
174 /**
175 * Reverse element order test for 48 elements with 8 bit per element.
176 * @return True, if succeeded
177 */
179
180 /**
181 * Reverse element order and swap test for 48 elements with 8 bit per element.
182 * @return True, if succeeded
183 */
185
186 /**
187 * Sum of 1x16 elements of an interleaved image with 1 channels and 8 bit per channel.
188 * @return True, if succeeded
189 */
191
192 /**
193 * Sum of 1x15 elements of an interleaved image with 1 channels and 8 bit per channel.
194 * @param testDuration Number of seconds for each test, with range (0, infinity)
195 * @return True, if succeeded
196 */
197 static bool testSumInterleave1Channel8Bit15Elements(const double testDuration);
198
199 /**
200 * Sum of 3x16 elements of an interleaved image with 3 channels and 8 bit per channel.
201 * @return True, if succeeded
202 */
204
205 /**
206 * Sum of 3x15 elements of an interleaved image with 3 channels and 8 bit per channel.
207 * @return True, if succeeded
208 */
210
211 /**
212 * Tests the interpolation function for 3 channels and 24 bit per pixel image data.
213 * @param testDuration Number of seconds for each test, with range (0, infinity)
214 * @return True, if succeeded
215 */
216 static bool testInterpolation1Channel8Bit15Elements(const double testDuration);
217
218 /**
219 * Tests the interpolation function for 3 channels and 24 bit per pixel image data.
220 * @param testDuration Number of seconds for each test, with range (0, infinity)
221 * @return True, if succeeded
222 */
223 static bool testInterpolation3Channel24Bit12Elements(const double testDuration);
224
225 /**
226 * Tests the function adding an offset for 16 bit signed integer right shifts to perform a division by 2.
227 * @param testDuration Number of seconds for each test, with range (0, infinity)
228 * @return True, if succeeded
229 */
230 static bool testAddOffsetBeforeRightShiftDivisionByTwoSigned16Bit(const double testDuration);
231
232 /**
233 * Tests the function adding an offset for 16 bit signed integer right shifts to perform a division.
234 * @param testDuration Number of seconds for each test, with range (0, infinity)
235 * @return True, if succeeded
236 */
237 static bool testAddOffsetBeforeRightShiftDivisionSigned16Bit(const double testDuration);
238
239 /**
240 * Tests the function dividing eight int16_t value by right shifts with rounding.
241 * @param testDuration Number of seconds for each test, with range (0, infinity)
242 * @return True, if succeeded
243 */
244 static bool testRoundedDivideByRightShiftSigned16Bit(const double testDuration);
245
246 /**
247 * Tests the function adding an offset for 32 bit signed integer right shifts to perform a division by 2.
248 * @param testDuration Number of seconds for each test, with range (0, infinity)
249 * @return True, if succeeded
250 */
251 static bool testAddOffsetBeforeRightShiftDivisionByTwoSigned32Bit(const double testDuration);
252
253 /**
254 * Tests the function adding an offset for 32 bit signed integer right shifts to perform a division.
255 * @param testDuration Number of seconds for each test, with range (0, infinity)
256 * @return True, if succeeded
257 */
258 static bool testAddOffsetBeforeRightShiftDivisionSigned32Bit(const double testDuration);
259
260 /**
261 * Tests the function multiplying eight 16 bit integer values.
262 * @param testDuration Number of seconds for each test, with range (0, infinity)
263 * @return True, if succeeded
264 */
265 static bool testMultiplyInt8x16ToInt32x8(const double testDuration);
266
267 /**
268 * Tests the function multiplying and accumulating eight 16 bit integer values.
269 * @param testDuration Number of seconds for each test, with range (0, infinity)
270 * @return True, if succeeded
271 */
272 static bool testMultiplyInt8x16ToInt32x8AndAccumulate(const double testDuration);
273
274 private:
275
276 /**
277 * Average of 2x elements pixel of a gray scale image with 8 bit using SSE function.
278 * @param testDuration Number of seconds for each test, with range (0, infinity)
279 * @param elements element size of SSE function {8, 16, 32}
280 * @return True, if all result are valid
281 */
282 static bool testAverageElements1Channel8Bit2x2(const double testDuration, const unsigned int elements);
283
284 /**
285 * Average of 2x elements pixel of a binary image with 8 bit using SSE function.
286 * @param testDuration Number of seconds for each test, with range (0, infinity)
287 * @param elements element size of SSE function {16}
288 * @param sumThreshold Minimal sum threshold of four pixels to result in a pixel with value 255
289 * @return True, if all result are valid
290 */
291 static bool testAverageElementsBinary1Channel8Bit2x2(const double testDuration, const unsigned int elements, const unsigned int sumThreshold = 640u);
292
293 /**
294 * Average of 2x elements pixel of a gray scale image with 32 bit using SSE function.
295 * @param testDuration Number of seconds for each test, with range (0, infinity)
296 * @param elements element size of SSE function {8}
297 * @return True, if all result are valid
298 */
299 static bool testAverageElements1Channel32Bit2x2(const double testDuration, const unsigned int elements);
300
301 /**
302 * Average of 3x elements pixel of a gray scale image with 8 bit using SSE function.
303 * @param testDuration Number of seconds for each test, with range (0, infinity)
304 * @param elements element size of SSE function {30}
305 * @return True, if all result are valid
306 */
307 static bool testAverageElements1Channel8Bit3x3(const double testDuration, const unsigned int elements);
308
309 /**
310 * Average of 2x 'elements/2' pixel of a gray scale image with alpha channel and 8 bit per channel using SSE function.
311 * @param testDuration Number of seconds for each test, with range (0, infinity)
312 * @param elements element size of SSE function {8}
313 * @return True, if all result are valid
314 */
315 static bool testAverageElements2Channel16Bit2x2(const double testDuration, const unsigned int elements);
316
317 /**
318 * Average of 2x 'elements/2' pixel of a gray scale image with alpha channel and 32 bit per channel using SSE function.
319 * @param testDuration Number of seconds for each test, with range (0, infinity)
320 * @param elements element size of SSE function {8, 16, 32}
321 * @return True, if all result are valid
322 */
323 static bool testAverageElements2Channel64Bit2x2(const double testDuration, const unsigned int elements);
324
325 /**
326 * Average of 2x 'elements/3' pixel of a 3 channel image and 8 bit per channel using SSE function.
327 * @param testDuration Number of seconds for each test, with range (0, infinity)
328 * @param elements element size of SSE function {12, 24}
329 * @return True, if all result are valid
330 */
331 static bool testAverageElements3Channel24Bit2x2(const double testDuration, const unsigned int elements);
332
333 /**
334 * Average of 2x 'elements/3' pixel of a 3 channel image and 32 bit per channel using SSE function.
335 * @param testDuration Number of seconds for each test, with range (0, infinity)
336 * @param elements element size of SSE function {6}
337 * @return True, if all result are valid
338 */
339 static bool testAverageElements3Channel96Bit2x2(const double testDuration, const unsigned int elements);
340
341 /**
342 * Average of 2x 'elements/4' pixel of a 4 channel image and 8 bit per channel using SSE function.
343 * @param testDuration Number of seconds for each test, with range (0, infinity)
344 * @param elements element size of SSE function {16, 32}
345 * @return True, if all result are valid
346 */
347 static bool testAverageElements4Channel32Bit2x2(const double testDuration, const unsigned int elements);
348
349 /**
350 * Average of 2x 'elements/4' pixel of a 4 channel image and 32 bit per channel using SSE function.
351 * @param testDuration Number of seconds for each test, with range (0, infinity)
352 * @param elements element size of SSE function {8}
353 * @return True, if all result are valid
354 */
355 static bool testAverageElements4Channel128Bit2x2(const double testDuration, const unsigned int elements);
356
357 /**
358 * Average of 2x2 pixel block of a gray scale image with 8 bit.
359 * @param elements length of averageLine buffer
360 * @param imageLine0Buffer8Bit buffer of even gray image lines
361 * @param imageLine1Buffer8Bit buffer of odd gray image lines
362 * @param averageLine resulting average image line
363 * @return True, if succeeded
364 */
365 static bool referenceAverageElements1Channel8Bit2x2(const unsigned int elements, const uint8_t* const imageLine0Buffer8Bit, const uint8_t* const imageLine1Buffer8Bit, uint8_t* const averageLine);
366
367 /**
368 * Average of 2x2 pixel block of an binary image with 8 bit.
369 * @param elements length of averageLine buffer
370 * @param imageLine0Buffer8Bit buffer of even binary image lines
371 * @param imageLine1Buffer8Bit buffer of odd binary image lines
372 * @param averageLine resulting average image line
373 * @param sumThreshold Minimal sum threshold of four pixels to result in a pixel with value 255
374 * @return True, if succeeded
375 */
376 static bool referenceAverageElementsBinary1Channel8Bit2x2(const unsigned int elements, const uint8_t* const imageLine0Buffer8Bit, const uint8_t* const imageLine1Buffer8Bit, uint8_t* const averageLine, const unsigned int sumThreshold = 766u);
377
378 /**
379 * Average of 3x3 pixel block of a gray scale image with 8 bit.
380 * @param elements length of averageLine buffer
381 * @param imageLine0Buffer8Bit buffer of even gray image lines
382 * @param imageLine1Buffer8Bit buffer of odd gray image lines
383 * @param imageLine2Buffer8Bit buffer of odd gray image lines
384 * @param averageLine resulting average image line
385 * @return True, if succeeded
386 */
387 static bool referenceAverageElements1Channel8Bit3x3(const unsigned int elements, const uint8_t* const imageLine0Buffer8Bit, const uint8_t* const imageLine1Buffer8Bit, const uint8_t* const imageLine2Buffer8Bit, uint8_t* const averageLine);
388
389 /**
390 * Average of 2x2 pixel block of a gray scale image with 32 bit.
391 * @param elements length of averageLine buffer
392 * @param imageLine0Buffer32Bit buffer of even gray image lines
393 * @param imageLine1Buffer32Bit buffer of odd gray image lines
394 * @param averageLine resulting average image line
395 * @return True, if succeeded
396 */
397 static bool referenceAverageElements1Channel32Bit2x2(const unsigned int elements, const float* const imageLine0Buffer32Bit, const float* const imageLine1Buffer32Bit, float* const averageLine);
398
399 /**
400 * Average of 2x2 pixel block of a gray scale image with alpha channel and 8 bit per channel.
401 * @param elements length of averageLine buffer
402 * @param imageLine0Buffer8Bit buffer of even image lines
403 * @param imageLine1Buffer8Bit buffer of odd image lines
404 * @param averageLine resulting average image line
405 * @return True, if succeeded
406 */
407 static bool referenceAverageElements2Channel16Bit2x2(const unsigned int elements, const uint8_t* const imageLine0Buffer8Bit, const uint8_t* const imageLine1Buffer8Bit, uint8_t* const averageLine);
408
409 /**
410 * Average of 2x2 pixel block of a gray scale image with alpha channel and 32 bit per channel.
411 * @param elements length of averageLine buffer
412 * @param imageLine0Buffer32Bit buffer of even image lines
413 * @param imageLine1Buffer32Bit buffer of odd image lines
414 * @param averageLine resulting average image line
415 * @return True, if succeeded
416 */
417 static bool referenceAverageElements2Channel64Bit2x2(const unsigned int elements, const float* const imageLine0Buffer32Bit, const float* const imageLine1Buffer32Bit, float* const averageLine);
418
419 /**
420 * Average of 2x2 pixel block of an 3 channel image and 8 bit per channel.
421 * @param elements length of averageLine buffer
422 * @param imageLine0Buffer8Bit buffer of even image lines
423 * @param imageLine1Buffer8Bit buffer of odd image lines
424 * @param averageLine resulting average image line
425 * @return True, if succeeded
426 */
427 static bool referenceAverageElements3Channel24Bit2x2(const unsigned int elements, const uint8_t* const imageLine0Buffer8Bit, const uint8_t* const imageLine1Buffer8Bit, uint8_t* const averageLine);
428
429 /**
430 * Average of 2x2 pixel block of an 3 channel image and 32 bit per channel.
431 * @param elements length of averageLine buffer
432 * @param imageLine0Buffer32Bit buffer of even image lines
433 * @param imageLine1Buffer32Bit buffer of odd image lines
434 * @param averageLine resulting average image line
435 * @return True, if succeeded
436 */
437 static bool referenceAverageElements3Channel96Bit2x2(const unsigned int elements, const float* const imageLine0Buffer32Bit, const float* const imageLine1Buffer32Bit, float* const averageLine);
438
439 /**
440 * Average of 2x2 pixel block of an 4 channel image and 8 bit per channel.
441 * @param elements length of averageLine buffer
442 * @param imageLine0Buffer8Bit buffer of even image lines
443 * @param imageLine1Buffer8Bit buffer of odd image lines
444 * @param averageLine resulting average image line
445 * @return True, if succeeded
446 */
447 static bool referenceAverageElements4Channel32Bit2x2(const unsigned int elements, const uint8_t* const imageLine0Buffer8Bit, const uint8_t* const imageLine1Buffer8Bit, uint8_t* const averageLine);
448
449 /**
450 * Average of 2x2 pixel block of an 4 channel image and 32 bit per channel.
451 * @param elements length of averageLine buffer
452 * @param imageLine0Buffer32Bit buffer of even image lines
453 * @param imageLine1Buffer32Bit buffer of odd image lines
454 * @param averageLine resulting average image line
455 * @return True, if succeeded
456 */
457 static bool referenceAverageElements4Channel128Bit2x2(const unsigned int elements, const float* const imageLine0Buffer32Bit, const float* const imageLine1Buffer32Bit, float* const averageLine);
458
459 /**
460 * Tests the SSE store 1 channel 8-bit 8 elements to 3 channels 24 elements function.
461 * @param testDuration Number of seconds for each test, with range (0, infinity)
462 * @return True, if succeeded
463 */
464 static bool testStore1Channel8Bit8ElementsTo3Channels24Elements(const double testDuration);
465
466 /**
467 * Tests the SSE store 1 channel 8-bit 8 elements to 4 channels 32 elements with constant last channel function.
468 * @param testDuration Number of seconds for each test, with range (0, infinity)
469 * @return True, if succeeded
470 */
472};
473
474}
475
476}
477
478}
479
480#endif // OCEAN_HARDWARE_SSE_VERSION >= 41
481
482#endif // META_OCEAN_TEST_TESTCV_TEST_SSE_H
This class implements a Computer Vision SSE test.
Definition TestSSE.h:31
static bool testAverageElements4Channel32Bit2x2(const double testDuration, const unsigned int elements)
Average of 2x 'elements/4' pixel of a 4 channel image and 8 bit per channel using SSE function.
static bool testAverageElements1Channel32Bit2x2(const double testDuration, const unsigned int elements)
Average of 2x elements pixel of a gray scale image with 32 bit using SSE function.
static bool testDeInterleave3Channel8Bit45Elements(const double testDuration)
De-interleave test for 8 bit 3 channels data with 45 elements.
static bool referenceAverageElements3Channel96Bit2x2(const unsigned int elements, const float *const imageLine0Buffer32Bit, const float *const imageLine1Buffer32Bit, float *const averageLine)
Average of 2x2 pixel block of an 3 channel image and 32 bit per channel.
static bool testAveraging1Channel8Bit2x2(const double testDuration)
static bool testAverageElementsBinary1Channel8Bit2x2(const double testDuration, const unsigned int elements, const unsigned int sumThreshold=640u)
Average of 2x elements pixel of a binary image with 8 bit using SSE function.
static bool testAveraging4Channel128Bit2x2(const double testDuration)
static bool referenceAverageElementsBinary1Channel8Bit2x2(const unsigned int elements, const uint8_t *const imageLine0Buffer8Bit, const uint8_t *const imageLine1Buffer8Bit, uint8_t *const averageLine, const unsigned int sumThreshold=766u)
Average of 2x2 pixel block of an binary image with 8 bit.
static bool testAverageElements4Channel128Bit2x2(const double testDuration, const unsigned int elements)
Average of 2x 'elements/4' pixel of a 4 channel image and 32 bit per channel using SSE function.
static bool testSumInterleave3Channel8Bit45Elements()
Sum of 3x15 elements of an interleaved image with 3 channels and 8 bit per channel.
static bool referenceAverageElements2Channel64Bit2x2(const unsigned int elements, const float *const imageLine0Buffer32Bit, const float *const imageLine1Buffer32Bit, float *const averageLine)
Average of 2x2 pixel block of a gray scale image with alpha channel and 32 bit per channel.
static bool testAverageElements2Channel64Bit2x2(const double testDuration, const unsigned int elements)
Average of 2x 'elements/2' pixel of a gray scale image with alpha channel and 32 bit per channel usin...
static bool testStore1Channel8Bit8ElementsTo3Channels24Elements(const double testDuration)
Tests the SSE store 1 channel 8-bit 8 elements to 3 channels 24 elements function.
static bool testInterpolation3Channel24Bit12Elements(const double testDuration)
Tests the interpolation function for 3 channels and 24 bit per pixel image data.
static bool testReverseChannelOrder2Channel8Bit32Elements(const double testDuration)
Reverse channel order test for 8 bit 2 channels data with 32 elements.
static bool referenceAverageElements1Channel8Bit3x3(const unsigned int elements, const uint8_t *const imageLine0Buffer8Bit, const uint8_t *const imageLine1Buffer8Bit, const uint8_t *const imageLine2Buffer8Bit, uint8_t *const averageLine)
Average of 3x3 pixel block of a gray scale image with 8 bit.
static bool testDeInterleave3Channel8Bit48Elements(const double testDuration)
De-interleave test for 8 bit 3 channels data with 48 elements.
static bool testMultiplyInt8x16ToInt32x8(const double testDuration)
Tests the function multiplying eight 16 bit integer values.
static bool testAddOffsetBeforeRightShiftDivisionByTwoSigned32Bit(const double testDuration)
Tests the function adding an offset for 32 bit signed integer right shifts to perform a division by 2...
static bool testAveraging4Channel32Bit2x2(const double testDuration)
static bool testAddOffsetBeforeRightShiftDivisionSigned16Bit(const double testDuration)
Tests the function adding an offset for 16 bit signed integer right shifts to perform a division.
static bool testSumInterleave3Channel8Bit48Elements()
Sum of 3x16 elements of an interleaved image with 3 channels and 8 bit per channel.
static bool test(const double testDuration, const TestSelector &selector=TestSelector())
Tests the entire SSE class.
static bool testSwapReversedElements8Bit48Elements()
Reverse element order and swap test for 48 elements with 8 bit per element.
static bool referenceAverageElements3Channel24Bit2x2(const unsigned int elements, const uint8_t *const imageLine0Buffer8Bit, const uint8_t *const imageLine1Buffer8Bit, uint8_t *const averageLine)
Average of 2x2 pixel block of an 3 channel image and 8 bit per channel.
static bool testReverseChannelOrder4Channel8Bit64Elements(const double testDuration)
Reverse channel order test for 8 bit 4 channels data with 64 elements.
static bool testInterleave3Channel8Bit48Elements(const double testDuration)
Interleave test for 8 bit 3 channels data with 48 elements.
static bool referenceAverageElements1Channel8Bit2x2(const unsigned int elements, const uint8_t *const imageLine0Buffer8Bit, const uint8_t *const imageLine1Buffer8Bit, uint8_t *const averageLine)
Average of 2x2 pixel block of a gray scale image with 8 bit.
static bool testDeInterleave3Channel8Bit15Elements(const double testDuration)
De-interleave test for 8 bit 3 channels data with 15 elements.
static bool testReverseElements8Bit48Elements()
Reverse element order test for 48 elements with 8 bit per element.
static bool testReverseChannelOrder3Channel8Bit48Elements(const double testDuration)
Reverse channel order test for 8 bit 3 channels data with 48 elements.
static bool testAveraging2Channel64Bit2x2(const double testDuration)
static bool referenceAverageElements1Channel32Bit2x2(const unsigned int elements, const float *const imageLine0Buffer32Bit, const float *const imageLine1Buffer32Bit, float *const averageLine)
Average of 2x2 pixel block of a gray scale image with 32 bit.
static bool testAveraging1Channel8Bit3x3(const double testDuration)
static bool testAverageElements1Channel8Bit2x2(const double testDuration, const unsigned int elements)
Average of 2x elements pixel of a gray scale image with 8 bit using SSE function.
static bool testAveraging2Channel16Bit2x2(const double testDuration)
static bool testDeInterleave3Channel8Bit24Elements(const double testDuration)
De-interleave test for 8 bit 3 channels data with 24 elements.
static bool testStore1Channel8Bit8ElementsTo4Channels32ElementsWithConstantLastChannel(const double testDuration)
Tests the SSE store 1 channel 8-bit 8 elements to 4 channels 32 elements with constant last channel f...
static bool testAverageElements1Channel8Bit3x3(const double testDuration, const unsigned int elements)
Average of 3x elements pixel of a gray scale image with 8 bit using SSE function.
static bool testSumInterleave1Channel8Bit16Elements()
Sum of 1x16 elements of an interleaved image with 1 channels and 8 bit per channel.
static bool testSwapReversedChannelOrder3Channel8Bit48Elements()
Reverse channel order and swap test for 8 bit 3 channels data with 48 elements.
static bool testAveraging3Channel24Bit2x2(const double testDuration)
static bool testRoundedDivideByRightShiftSigned16Bit(const double testDuration)
Tests the function dividing eight int16_t value by right shifts with rounding.
static bool testAverageElements2Channel16Bit2x2(const double testDuration, const unsigned int elements)
Average of 2x 'elements/2' pixel of a gray scale image with alpha channel and 8 bit per channel using...
static bool testAveraging3Channel96Bit2x2(const double testDuration)
static bool testAverageElements3Channel96Bit2x2(const double testDuration, const unsigned int elements)
Average of 2x 'elements/3' pixel of a 3 channel image and 32 bit per channel using SSE function.
static bool testAveraging1Channel32Bit2x2(const double testDuration)
static bool referenceAverageElements4Channel32Bit2x2(const unsigned int elements, const uint8_t *const imageLine0Buffer8Bit, const uint8_t *const imageLine1Buffer8Bit, uint8_t *const averageLine)
Average of 2x2 pixel block of an 4 channel image and 8 bit per channel.
static bool testAverageElements3Channel24Bit2x2(const double testDuration, const unsigned int elements)
Average of 2x 'elements/3' pixel of a 3 channel image and 8 bit per channel using SSE function.
static bool testAddOffsetBeforeRightShiftDivisionSigned32Bit(const double testDuration)
Tests the function adding an offset for 32 bit signed integer right shifts to perform a division.
static bool referenceAverageElements4Channel128Bit2x2(const unsigned int elements, const float *const imageLine0Buffer32Bit, const float *const imageLine1Buffer32Bit, float *const averageLine)
Average of 2x2 pixel block of an 4 channel image and 32 bit per channel.
static bool referenceAverageElements2Channel16Bit2x2(const unsigned int elements, const uint8_t *const imageLine0Buffer8Bit, const uint8_t *const imageLine1Buffer8Bit, uint8_t *const averageLine)
Average of 2x2 pixel block of a gray scale image with alpha channel and 8 bit per channel.
static bool testMultiplyInt8x16ToInt32x8AndAccumulate(const double testDuration)
Tests the function multiplying and accumulating eight 16 bit integer values.
static bool testSumInterleave1Channel8Bit15Elements(const double testDuration)
Sum of 1x15 elements of an interleaved image with 1 channels and 8 bit per channel.
static bool testAddOffsetBeforeRightShiftDivisionByTwoSigned16Bit(const double testDuration)
Tests the function adding an offset for 16 bit signed integer right shifts to perform a division by 2...
static bool testInterpolation1Channel8Bit15Elements(const double testDuration)
Tests the interpolation function for 3 channels and 24 bit per pixel image data.
static bool testBinaryAveraging1Channel8Bit2x2(const double testDuration)
This class implements a test selector that parses test function strings and determines which tests sh...
Definition TestSelector.h:51
The namespace covering the entire Ocean framework.
Definition Accessor.h:15