Ocean
Loading...
Searching...
No Matches
TestFrameConverter.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_FRAME_CONVERTER_H
9#define META_OCEAN_TEST_TESTCV_TEST_FRAME_CONVERTER_H
10
12
13#include "ocean/base/Frame.h"
15#include "ocean/base/Memory.h"
16#include "ocean/base/RandomI.h"
18#include "ocean/base/Worker.h"
19
22
23#include <numeric>
24
25namespace Ocean
26{
27
28namespace Test
29{
30
31namespace TestCV
32{
33
34/**
35 * This class implements a frame converter test for the function of the basic frame converter.
36 * @ingroup testcv
37 */
38class OCEAN_TEST_CV_EXPORT TestFrameConverter : protected CV::FrameConverter
39{
40 public:
41
42 /**
43 * Tests all frame converter functions.
44 * @param testDuration Number of seconds for each test, with range (0, infinity)
45 * @param worker The worker object to distribute the computation
46 * @return True, if all tests succeeded
47 */
48 static bool test(const double testDuration, Worker& worker);
49
50 /**
51 * Tests the comfort convert function for a Frame.
52 * @param testDuration Number of seconds for each test, with range (0, infinity)
53 * @return True, if succeeded
54 */
55 static bool testComfortConvert(const double testDuration);
56
57 /**
58 * Tests the comfort convert and copy function for a Frame.
59 * @param testDuration Number of seconds for each test, with range (0, infinity)
60 * @return True, if succeeded
61 */
62 static bool testComfortConvertAndCopy(const double testDuration);
63
64 /**
65 * Tests the comfort change function for a Frame.
66 * @param testDuration Number of seconds for each test, with range (0, infinity)
67 * @return True, if succeeded
68 */
69 static bool testComfortChange(const double testDuration);
70
71 /**
72 * Tests the cast function.
73 * @param testDuration Number of seconds for each test, with range (0, infinity)
74 * @return True, if succeeded
75 */
76 static bool testCast(const double testDuration);
77
78 /**
79 * Tests the normalized cast function.
80 * @param testDuration Number of seconds for each test, with range (0, infinity)
81 * @return True, if succeeded
82 */
83 static bool testNormalizedCast(const double testDuration);
84
85 /**
86 * Tests the sub frame function.
87 * @param testDuration Number of seconds for each test, with range (0, infinity)
88 * @return True, if succeeded
89 */
90 static bool testSubFrame(const double testDuration);
91
92 /**
93 * Tests the sub frame function.
94 * @param testDuration Number of seconds for each test, with range (0, infinity)
95 * @return True, if succeeded
96 */
97 static bool testSubFrameMask(const double testDuration);
98
99 /**
100 * Tests the patch creator.
101 * @param testDuration Number of seconds for each test, with range (0, infinity)
102 * @return True, if succeeded
103 */
104 static bool testPatchFrame(const double testDuration);
105
106 /**
107 * Tests the patch creator with mirrored border.
108 * @param testDuration Number of seconds for each test, with range (0, infinity)
109 * @return True, if succeeded
110 */
111 static bool testPatchFrameMirroredBorder(const double testDuration);
112
113 /**
114 * Test the 1-row-based converter for pixel formats with 3 channels, 2 planes and a 2x2 downsampling of channel 2 and 3, with 6 bit precision.
115 * @param testDuration Number of seconds for each test, with range (0, infinity)
116 * @return True, if the test was successful, otherwise false
117 */
119
120 /**
121 * Test the 1-row-based converter for pixel formats with 3 channels, 2 planes and a 2x2 downsampling of channel 2 and 3, with 10 bit precision.
122 * @param testDuration Number of seconds for each test, with range (0, infinity)
123 * @return True, if the test was successful, otherwise false
124 */
126
127 /**
128 * Test the 2-row-based converter for pixel formats with 3 channels, 2 planes and a 2x2 downsampling of channel 2 and 3, with 10 bit precision.
129 * @param testDuration Number of seconds for each test, with range (0, infinity)
130 * @return True, if the test was successful, otherwise false
131 */
133
134 /**
135 * Test the 2-row-based converter for pixel formats with 3 channels, 2 planes and a 2x2 downsampling of channel 2 and 3, with 10 bit precision.
136 * @param testDuration Number of seconds for each test, with range (0, infinity)
137 * @return True, if the test was successful, otherwise false
138 */
140
141 /**
142 * Test the 2-row-based converter for pixel formats with 3 channels, 2 planes and a 2x2 downsampling of channel 2 and 3, with 7 bit precision.
143 * @param testDuration Number of seconds for each test, with range (0, infinity)
144 * @return True, if the test was successful, otherwise false
145 */
147
148 /**
149 * Test the 2-row-based converter for pixel formats with 3 channels, 3 planes and a 2x2 downsampling of channel 2 and 3, with 7 bit precision.
150 * @param testDuration Number of seconds for each test, with range (0, infinity)
151 * @return True, if the test was successful, otherwise false
152 */
154
155 /**
156 * Test the 1-row-based mapper for pixel formats with 3 planes and 1 channel to 1 plane and 3 channels.
157 * @param testDuration Number of seconds for each test, with range (0, infinity)
158 * @return True, if the test was successful, otherwise false
159 */
161
162 /**
163 * Test the 1-row-based mapper for pixel formats with 1 plane and 3 channels to 3 planes and 1 channel.
164 * @param testDuration Number of seconds for each test, with range (0, infinity)
165 * @return True, if the test was successful, otherwise false
166 */
168
169 /**
170 * Test the 1-row-based mapper for pixel formats with 3 channels, 1 planes and a 2x1 downsampling of channel 2 and 3.
171 * @param testDuration Number of seconds for each test, with range (0, infinity)
172 * @return True, if the test was successful, otherwise false
173 */
175
176 /**
177 * Test the 1-row-based mapper for pixel formats with 3 channels, 1 planes and a 2x1 downsampling of channel 1 and 3.
178 * @param testDuration Number of seconds for each test, with range (0, infinity)
179 * @return True, if the test was successful, otherwise false
180 */
182
183 /**
184 * Test the 1-row-based mapper for pixel formats with 3 channels, 2 planes and a 2x2 downsampling of channel 2 and 3.
185 * @param testDuration Number of seconds for each test, with range (0, infinity)
186 * @return True, if the test was successful, otherwise false
187 */
189
190 /**
191 * Test the 2-row-based mapper for pixel formats with 3 channels, 2 planes and a 2x2 downsampling of channel 2 and 3.
192 * @param testDuration Number of seconds for each test, with range (0, infinity)
193 * @return True, if the test was successful, otherwise false
194 */
196
197 /**
198 * Test the 1-row-based converter for pixel formats with 3 channels, 3 planes and a 2x2 downsampling of channel 2 and 3.
199 * @param testDuration Number of seconds for each test, with range (0, infinity)
200 * @return True, if the test was successful, otherwise false
201 */
203
204 /**
205 * Test the 2-row-based converter for pixel formats with 3 channels, 3 planes and a 2x2 downsampling of channel 2 and 3.
206 * @param testDuration Number of seconds for each test, with range (0, infinity)
207 * @return True, if the test was successful, otherwise false
208 */
210
211 /**
212 * Test the 2-row-based converter for pixel formats with 3 channels, 3 planes and a 2x2 downsampling of channel 2 and 3 adding a new target channel.
213 * @param testDuration Number of seconds for each test, with range (0, infinity)
214 * @return True, if the test was successful, otherwise false
215 */
217
218 /**
219 * Test the 2-row-based converter for pixel formats with 3 channels, 3 planes and a 2x2 downsampling of channel 2 and 3.
220 * @param testDuration Number of seconds for each test, with range (0, infinity)
221 * @return True, if the test was successful, otherwise false
222 */
224
225 /**
226 * Test the 1-row-based mapper for pixel formats with 3 channels, 2 planes and a 2x2 downsampling of channel 2 and 3.
227 * @param testDuration Number of seconds for each test, with range (0, infinity)
228 * @return True, if the test was successful, otherwise false
229 */
231
232 /**
233 * Test the 2-row-based mapper for pixel formats with 3 channels, 2 planes and a 2x2 downsampling of channel 2 and 3.
234 * @param testDuration Number of seconds for each test, with range (0, infinity)
235 * @return True, if the test was successful, otherwise false
236 */
238
239 /**
240 * Test the 1-row-based convert 3-plane to zipped 3-channel function, with 6 bit precision.
241 * @param testDuration Number of seconds for each test, with range (0, infinity)
242 * @return True, if the test was successful, otherwise false
243 */
245
246 /**
247 * Test the 1-row-based convert zipped 3-channel with 2x1 downsampling to 3-channel function, with 10 bit precision.
248 * @param testDuration Number of seconds for each test, with range (0, infinity)
249 * @return True, if the test was successful, otherwise false
250 */
252
253 /**
254 * Test the 1-row-based convert zipped 3-channel with 2x1 downsampling to 3-channel function, with 10 bit precision.
255 * @param testDuration Number of seconds for each test, with range (0, infinity)
256 * @return True, if the test was successful, otherwise false
257 */
259
260 /**
261 * Tests the color space conversion matrices.
262 * @param testDuration Number of seconds for each test, with range (0, infinity)
263 * @return True, if succeeded
264 */
265 static bool testConversionMatrices(const double testDuration);
266
267 protected:
268
269 /**
270 * Tests the sub frame function.
271 * @param testDuration Number of seconds for each test, with range (0, infinity)
272 * @return True, if succeeded
273 * @tparam T The data type of the elements to be used
274 */
275 template <typename T>
276 static bool testSubFrame(const double testDuration);
277
278 /**
279 * Tests the cast function for from 'unsigned char' to a specified data type.
280 * @param width The width of the frame to be tested, with range [1, infinity)
281 * @param height The height of the frame to be tested, with range [1, infinity)
282 * @param channels The number of channels the frame has, with range [1, infinity)
283 * @return True, if succeeded
284 * @tparam T The data type of the target frame
285 */
286 template <typename T>
287 static bool testCast(const unsigned int width, const unsigned int height, const unsigned int channels);
288
289 /**
290 * Tests the cast function for from 'unsigned char' to a specified data type.
291 * @param width The width of the frame to be tested, with range [1, infinity)
292 * @param height The height of the frame to be tested, with range [1, infinity)
293 * @param channels The number of channels the frame has, with range [1, infinity)
294 * @param normalization The normalization parameter that is applied
295 * @param offset The offset that is added to all values
296 * @return True, if succeeded
297 * @tparam T The data type of the target frame
298 */
299 template <typename T>
300 static bool testNormalizedCast(const unsigned int width, const unsigned int height, const unsigned int channels, const T normalization, const T offset);
301
302 /**
303 * Tests the patch creator.
304 * @param testDuration Number of seconds for each test, with range (0, infinity)
305 * @return True, if succeeded
306 * @tparam T The element type to be used
307 */
308 template <typename T>
309 static bool testPatchFrame(const double testDuration);
310
311 /**
312 * Tests the patch creator with mirrored border.
313 * @param testDuration Number of seconds for each test, with range (0, infinity)
314 * @return True, if succeeded
315 * @tparam T The element type to be used
316 * @tparam tChannels The number of frame channels, with range [1, infinity)
317 */
318 template <typename T, unsigned int tChannels>
319 static bool testPatchFrameMirroredBorder(const double testDuration);
320
321 /**
322 * Validates the sub-frame function.
323 * @param channels Number of data channels of both frames, with range [1, infinity)
324 * @param source The source frame from which the image content has been copied, must be valid
325 * @param sourceWidth Width of the source frame in pixel, with range [1, infinity)
326 * @param sourceHeight Height of the source frame in pixel, with range [1, infinity)
327 * @param target The target frame to which the image content has been copied, must be valid
328 * @param targetWidth Width of the target frame in pixel, with range [1, infinity)
329 * @param targetHeight Height of the target frame in pixel, with range [1, infinity)
330 * @param sourceLeft Horizontal start position of the sub-frame within the source frame, with range [0, sourceWidth - 1]
331 * @param sourceTop Vertical start position of the sub-frame within the source frame, with range [0, sourceHeight - 1]
332 * @param targetLeft Horizontal start position of the sub-frame within the target frame, with range [0, targetWidth - 1]
333 * @param targetTop Vertical start position of the sub-frame within the target frame, with range [0, targetHeight - 1]
334 * @param width The width of the sub-frame in pixel, with range [1, min(sourceWidth - sourceLeft, targetWidth - targetLeft)]
335 * @param height The height of the sub-frame in pixel, with range [1, min(sourceHeight - sourceTop, targetHeight - targetTop)]
336 * @param sourcePaddingElements Optional number of padding elements at the end of each source row, with range [0, infinity)
337 * @param targetPaddingElements Optional number of padding elements at the end of each target row, with range [0, infinity)
338 * @return True, if succeeded
339 * @tparam T The data type of each element
340 */
341 template <typename T>
342 static bool validateSubFrame(const unsigned int channels, const T* source, const unsigned int sourceWidth, const unsigned int sourceHeight, const T* target, const unsigned int targetWidth, const unsigned int targetHeight, const unsigned int sourceLeft, const unsigned int sourceTop, const unsigned int targetLeft, const unsigned int targetTop, const unsigned int width, const unsigned int height, const unsigned int sourcePaddingElements, const unsigned int targetPaddingElements);
343
344 /**
345 * Validates the sub-frame function supporting a mask.
346 * @param channels Number of data channels of both frames, with range [1, infinity)
347 * @param source The source frame from which the image content has been copied, must be valid
348 * @param sourceWidth Width of the source frame in pixel, with range [1, infinity)
349 * @param sourceHeight Height of the source frame in pixel, with range [1, infinity)
350 * @param originalTarget The copy of the target frame BEFORE the image content has been copied to it, must be valid
351 * @param target The target frame to which the image content has been copied, must be valid
352 * @param targetWidth Width of the target frame in pixel, with range [1, infinity)
353 * @param targetHeight Height of the target frame in pixel, with range [1, infinity)
354 * @param mask The binary mask that is used to indicate which source pixels to copy to the target frame, must be valid, have one channel, and have the same size as the source frame
355 * @param sourceLeft Horizontal start position of the sub-frame within the source frame, with range [0, sourceWidth - 1]
356 * @param sourceTop Vertical start position of the sub-frame within the source frame, with range [0, sourceHeight - 1]
357 * @param targetLeft Horizontal start position of the sub-frame within the target frame, with range [0, targetWidth - 1]
358 * @param targetTop Vertical start position of the sub-frame within the target frame, with range [0, targetHeight - 1]
359 * @param subFrameWidth Width of the sub-frame in pixel, with range [1, min(sourceWidth - sourceLeft, targetWidth - targetLeft)]
360 * @param subFrameHeight Height of the sub-frame in pixel, with range [1, min(sourceHeight - sourceTop, targetHeight - targetTop)]
361 * @param sourcePaddingElements Optional number of padding elements at the end of each source row, with range [0, infinity)
362 * @param targetPaddingElements Optional number of padding elements at the end of each target row, with range [0, infinity)
363 * @param maskPaddingElements Optional number of padding elements at the end of each source mask row, with range [0, infinity)
364 * @param maskValue Optional value which indicates which pixel value should be interpreted as the foreground (and copied)
365 * @return True, if succeeded
366 * @tparam T The data type of each element
367 */
368 template <typename T>
369 static bool validateSubFrameMask(const unsigned int channels, const T* source, const unsigned int sourceWidth, const unsigned int sourceHeight, const T* originalTarget, const T* target, const unsigned int targetWidth, const unsigned int targetHeight, const uint8_t* mask, const unsigned int sourceLeft, const unsigned int sourceTop, const unsigned int targetLeft, const unsigned int targetTop, const unsigned int subFrameWidth, const unsigned int subFrameHeight, const unsigned int sourcePaddingElements, const unsigned int targetPaddingElements, const unsigned int maskPaddingElements, const uint8_t maskValue);
370};
371
372} // namespace TestCV
373
374} // namespace Test
375
376} // namespace Ocean
377
378#endif // META_OCEAN_TEST_TESTCV_TEST_FRAME_CONVERTER_H
This is the base class for all frame converter classes.
Definition FrameConverter.h:32
This class implements a frame converter test for the function of the basic frame converter.
Definition TestFrameConverter.h:39
static bool testConvertOneRow_3Planes1Channel_To_1Plane3Channels_8BitPerChannel_Precision6Bit(const double testDuration)
Test the 1-row-based convert 3-plane to zipped 3-channel function, with 6 bit precision.
static bool testMapOneRow_1Plane1ChannelAnd2Planes1ChannelDownsampled2x2_To_1Plane3Channels_8BitPerChannel(const double testDuration)
Test the 1-row-based mapper for pixel formats with 3 channels, 2 planes and a 2x2 downsampling of cha...
static bool testConvertTwoRows_1Plane1ChannelAnd2Planes1ChannelDownsampled2x2_To_1Plane3Channels_8BitPerChannel_Precision10Bit(const double testDuration)
Test the 2-row-based converter for pixel formats with 3 channels, 3 planes and a 2x2 downsampling of ...
static bool testMapOneRow_1Plane3Channels_To_3Plane1Channel_8BitPerChannel(const double testDuration)
Test the 1-row-based mapper for pixel formats with 1 plane and 3 channels to 3 planes and 1 channel.
static bool testPatchFrame(const double testDuration)
Tests the patch creator.
static bool testCast(const unsigned int width, const unsigned int height, const unsigned int channels)
Tests the cast function for from 'unsigned char' to a specified data type.
static bool testNormalizedCast(const double testDuration)
Tests the normalized cast function.
static bool testMapOneRow_1Plane3ChannelsWith2ChannelsDownsampled2x1BackIsDownsampled_To_1Plane3Channels_8BitPerChannel(const double testDuration)
Test the 1-row-based mapper for pixel formats with 3 channels, 1 planes and a 2x1 downsampling of cha...
static bool testSubFrame(const double testDuration)
Tests the sub frame function.
static bool testMapOneRow_3Plane1Channel_To_1Plane3Channels_8BitPerChannel(const double testDuration)
Test the 1-row-based mapper for pixel formats with 3 planes and 1 channel to 1 plane and 3 channels.
static bool testMapOneRow_1Plane1ChannelAnd1Plane2ChannelsDownsampled2x2_To_1Plane3Channels_8BitPerChannel(const double testDuration)
Test the 1-row-based mapper for pixel formats with 3 channels, 2 planes and a 2x2 downsampling of cha...
static bool testConvertOneRow_1Plane1ChannelAnd2Planes1ChannelDownsampled2x2_To_1Plane3Channels_8BitPerChannel_Precision10Bit(const double testDuration)
Test the 1-row-based converter for pixel formats with 3 channels, 3 planes and a 2x2 downsampling of ...
static bool testComfortChange(const double testDuration)
Tests the comfort change function for a Frame.
static bool validateSubFrameMask(const unsigned int channels, const T *source, const unsigned int sourceWidth, const unsigned int sourceHeight, const T *originalTarget, const T *target, const unsigned int targetWidth, const unsigned int targetHeight, const uint8_t *mask, const unsigned int sourceLeft, const unsigned int sourceTop, const unsigned int targetLeft, const unsigned int targetTop, const unsigned int subFrameWidth, const unsigned int subFrameHeight, const unsigned int sourcePaddingElements, const unsigned int targetPaddingElements, const unsigned int maskPaddingElements, const uint8_t maskValue)
Validates the sub-frame function supporting a mask.
static bool testPatchFrame(const double testDuration)
Tests the patch creator.
static bool test(const double testDuration, Worker &worker)
Tests all frame converter functions.
static bool testPatchFrameMirroredBorder(const double testDuration)
Tests the patch creator with mirrored border.
static bool testConversionMatrices(const double testDuration)
Tests the color space conversion matrices.
static bool testConvertOneRow_1Plane3ChannelsWith2ChannelsDownsampled2x1BackIsDownsampled_To_1Plane3Channels_8BitPerChannel_Precision10Bit(const double testDuration)
Test the 1-row-based convert zipped 3-channel with 2x1 downsampling to 3-channel function,...
static bool testConvertTwoRows_1Plane1ChannelAnd2Planes1ChannelDownsampled2x2_To_1Plane3Channels_8BitPerChannel_Precision6Bit(const double testDuration)
Test the 2-row-based converter for pixel formats with 3 channels, 3 planes and a 2x2 downsampling of ...
static bool testConvertOneRow_1Plane1ChannelAnd1Plane2ChannelsDownsampled2x2_To_1Plane3Channels_8BitPerChannel_Precision10Bit(const double testDuration)
Test the 1-row-based converter for pixel formats with 3 channels, 2 planes and a 2x2 downsampling of ...
static bool testConvertOneRow_1Plane1ChannelAnd1Plane2ChannelsDownsampled2x2_To_1Plane3Channels_8BitPerChannel_Precision6Bit(const double testDuration)
Test the 1-row-based converter for pixel formats with 3 channels, 2 planes and a 2x2 downsampling of ...
static bool testMapTwoRows_1Plane1ChannelAnd2Planes1ChannelDownsampled2x2_To_1Plane3Channels_8BitPerChannel(const double testDuration)
Test the 2-row-based mapper for pixel formats with 3 channels, 2 planes and a 2x2 downsampling of cha...
static bool testMapTwoRows_1Plane1ChannelAnd1Plane2ChannelsDownsampled2x2_To_1Plane3Channels_8BitPerChannel(const double testDuration)
Test the 2-row-based mapper for pixel formats with 3 channels, 2 planes and a 2x2 downsampling of cha...
static bool testComfortConvert(const double testDuration)
Tests the comfort convert function for a Frame.
static bool testNormalizedCast(const unsigned int width, const unsigned int height, const unsigned int channels, const T normalization, const T offset)
Tests the cast function for from 'unsigned char' to a specified data type.
static bool testConvertTwoRows_1Plane1ChannelAnd2Planes1ChannelDownsampled2x2_To_1Plane4Channels_8BitPerChannel_Precision6Bit(const double testDuration)
Test the 2-row-based converter for pixel formats with 3 channels, 3 planes and a 2x2 downsampling of ...
static bool testSubFrame(const double testDuration)
Tests the sub frame function.
static bool testComfortConvertAndCopy(const double testDuration)
Tests the comfort convert and copy function for a Frame.
static bool testConvertOneRow_1Plane3ChannelsWith2ChannelsDownsampled2x1FrontIsDownsampled_To_1Plane3Channels_8BitPerChannel_Precision10Bit(const double testDuration)
Test the 1-row-based convert zipped 3-channel with 2x1 downsampling to 3-channel function,...
static bool testConvertTwoRows_1Plane1ChannelAnd1Plane2ChannelsDownsampled2x2_To_1Plane3Channels_8BitPerChannel_Precision6Bit(const double testDuration)
Test the 2-row-based converter for pixel formats with 3 channels, 2 planes and a 2x2 downsampling of ...
static bool testPatchFrameMirroredBorder(const double testDuration)
Tests the patch creator with mirrored border.
static bool testMapOneRow_1Plane3ChannelsWith2ChannelsDownsampled2x1FrontIsDownsampled_To_1Plane3Channels_8BitPerChannel(const double testDuration)
Test the 1-row-based mapper for pixel formats with 3 channels, 1 planes and a 2x1 downsampling of cha...
static bool testConvertTwoRows_1Plane3Channels_To_1Plane1ChannelAnd1Plane2ChannelsDownsampled2x2_8BitPerChannel_Precision7Bit(const double testDuration)
Test the 2-row-based converter for pixel formats with 3 channels, 2 planes and a 2x2 downsampling of ...
static bool testConvertTwoRows_1Plane1ChannelAnd1Plane2ChannelsDownsampled2x2_To_1Plane3Channels_8BitPerChannel_Precision10Bit(const double testDuration)
Test the 2-row-based converter for pixel formats with 3 channels, 2 planes and a 2x2 downsampling of ...
static bool testSubFrameMask(const double testDuration)
Tests the sub frame function.
static bool testCast(const double testDuration)
Tests the cast function.
static bool validateSubFrame(const unsigned int channels, const T *source, const unsigned int sourceWidth, const unsigned int sourceHeight, const T *target, const unsigned int targetWidth, const unsigned int targetHeight, const unsigned int sourceLeft, const unsigned int sourceTop, const unsigned int targetLeft, const unsigned int targetTop, const unsigned int width, const unsigned int height, const unsigned int sourcePaddingElements, const unsigned int targetPaddingElements)
Validates the sub-frame function.
static bool testConvertTwoRows_1Plane3Channels_To_1Plane1ChannelAnd2Planes1ChannelsDownsampled2x2_8BitPerChannel_Precision7Bit(const double testDuration)
Test the 2-row-based converter for pixel formats with 3 channels, 3 planes and a 2x2 downsampling of ...
This class implements a worker able to distribute function calls over different threads.
Definition Worker.h:33
The namespace covering the entire Ocean framework.
Definition Accessor.h:15