Ocean
FrameConverterY_U_V24.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_CV_FRAME_CONVERTER_Y_U_V_24_H
9 #define META_OCEAN_CV_FRAME_CONVERTER_Y_U_V_24_H
10 
11 #include "ocean/cv/CV.h"
12 #include "ocean/cv/FrameChannels.h"
14 
15 #include "ocean/base/Worker.h"
16 
17 namespace Ocean
18 {
19 
20 namespace CV
21 {
22 
23 /**
24  * This class provides functions to convert frames with Y_U_V24 pixel format.
25  * The Y_U_V24 format holds the three planes/blocks of color channels.<br>
26  * The first block covers the Y channel and holds 8 bit per pixel.<br>
27  * The second block covers the U channel and holds 8 bit per pixel.<br>
28  * The third block covers the V channel and also holds 8 bit per pixel.
29  * The layout of a Y_U_V24 image looks like this:
30  * <pre>
31  * y-plane: u-plane: v-plane:
32  * --------- --------- ---------
33  * | Y Y Y Y | | U U U U | | V V V V |
34  * | Y Y Y Y | | U U U U | | V V V V |
35  * | Y Y Y Y | | U U U U | | V V V V |
36  * | Y Y Y Y | | U U U U | | V V V V |
37  * --------- --------- ---------
38  * </pre>
39  * @ingroup cv
40  */
42 {
43  public:
44 
45  /**
46  * Converts a Y_U_V24 frame to a 24 bit YUV frame into a second image buffer.
47  * @param ySource The y source frame buffer, must be valid
48  * @param uSource The u source frame buffer, must be valid
49  * @param vSource The v source frame buffer, must be valid
50  * @param target The target frame buffer, must be valid
51  * @param width The width of the frame in pixel, with range [1, infinity)
52  * @param height The height of the frame in pixel, with range [1, infinity)
53  * @param flag Determining the type of conversion
54  * @param ySourcePaddingElements The number of padding elements at the end of each y-source row, in (uint8_t) elements, with range [0, infinity)
55  * @param uSourcePaddingElements The number of padding elements at the end of each u-source row, in (uint8_t) elements, with range [0, infinity)
56  * @param vSourcePaddingElements The number of padding elements at the end of each v-source row, in (uint8_t) elements, with range [0, infinity)
57  * @param targetPaddingElements The number of padding elements at the end of each target row, in (uint8_t) elements, with range [0, infinity)
58  * @param worker Optional worker object to distribute the computational to several CPU cores
59  */
60  static inline void convertY_U_V24ToYUV24(const uint8_t* ySource, const uint8_t* uSource, const uint8_t* vSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker = nullptr);
61 
62  /**
63  * Converts a Y_U_V24 frame to a 24 bit BGR frame into a second image buffer.
64  * <pre>
65  * YUV input value range: [16, 235]x[16, 240]x[16, 240]
66  * BGR output value range: [ 0, 255]x[ 0, 255]x[ 0, 255]
67  * </pre>
68  * @param ySource The y source frame buffer, must be valid
69  * @param uSource The u source frame buffer, must be valid
70  * @param vSource The v source frame buffer, must be valid
71  * @param target The target frame buffer, must be valid
72  * @param width The width of the frame in pixel, with range [1, infinity)
73  * @param height The height of the frame in pixel, with range [1, infinity)
74  * @param flag Determining the type of conversion
75  * @param ySourcePaddingElements The number of padding elements at the end of each y-source row, in (uint8_t) elements, with range [0, infinity)
76  * @param uSourcePaddingElements The number of padding elements at the end of each u-source row, in (uint8_t) elements, with range [0, infinity)
77  * @param vSourcePaddingElements The number of padding elements at the end of each v-source row, in (uint8_t) elements, with range [0, infinity)
78  * @param targetPaddingElements The number of padding elements at the end of each target row, in (uint8_t) elements, with range [0, infinity)
79  * @param worker Optional worker object to distribute the computational to several CPU cores
80  */
81  static inline void convertY_U_V24LimitedRangeToBGR24(const uint8_t* ySource, const uint8_t* uSource, const uint8_t* vSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker = nullptr);
82 
83  /**
84  * Converts a Y_U_V24 frame to a 24 bit RGB frame into a second image buffer.
85  * <pre>
86  * YUV input value range: [16, 235]x[16, 240]x[16, 240]
87  * RGB output value range: [ 0, 255]x[ 0, 255]x[ 0, 255]
88  * </pre>
89  * @param ySource The y source frame buffer, must be valid
90  * @param uSource The u source frame buffer, must be valid
91  * @param vSource The v source frame buffer, must be valid
92  * @param target The target frame buffer, must be valid
93  * @param width The width of the frame in pixel, with range [1, infinity)
94  * @param height The height of the frame in pixel, with range [1, infinity)
95  * @param flag Determining the type of conversion
96  * @param ySourcePaddingElements The number of padding elements at the end of each y-source row, in (uint8_t) elements, with range [0, infinity)
97  * @param uSourcePaddingElements The number of padding elements at the end of each u-source row, in (uint8_t) elements, with range [0, infinity)
98  * @param vSourcePaddingElements The number of padding elements at the end of each v-source row, in (uint8_t) elements, with range [0, infinity)
99  * @param targetPaddingElements The number of padding elements at the end of each target row, in (uint8_t) elements, with range [0, infinity)
100  * @param worker Optional worker object to distribute the computational to several CPU cores
101  */
102  static inline void convertY_U_V24LimitedRangeToRGB24(const uint8_t* ySource, const uint8_t* uSource, const uint8_t* vSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker = nullptr);
103 
104  /**
105  * Converts a Y_U_V24 frame to a 32 bit BGRA frame into a second image buffer.
106  * <pre>
107  * YUV input value range: [16, 235]x[16, 240]x[16, 240]
108  * BGRA output value range: [ 0, 255]x[ 0, 255]x[ 0, 255]x[ 0, 255]
109  * </pre>
110  * @param ySource The y source frame buffer, must be valid
111  * @param uSource The u source frame buffer, must be valid
112  * @param vSource The v source frame buffer, must be valid
113  * @param target The target frame buffer, must be valid
114  * @param width The width of the frame in pixel, with range [1, infinity)
115  * @param height The height of the frame in pixel, with range [1, infinity)
116  * @param flag Determining the type of conversion
117  * @param ySourcePaddingElements The number of padding elements at the end of each y-source row, in (uint8_t) elements, with range [0, infinity)
118  * @param uSourcePaddingElements The number of padding elements at the end of each u-source row, in (uint8_t) elements, with range [0, infinity)
119  * @param vSourcePaddingElements The number of padding elements at the end of each v-source row, in (uint8_t) elements, with range [0, infinity)
120  * @param targetPaddingElements The number of padding elements at the end of each target row, in (uint8_t) elements, with range [0, infinity)
121  * @param alphaValue The value of the alpha channel to be set, with range [0, 255]
122  * @param worker Optional worker object to distribute the computational to several CPU cores
123  */
124  static inline void convertY_U_V24LimitedRangeToBGRA32(const uint8_t* ySource, const uint8_t* uSource, const uint8_t* vSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int targetPaddingElements, const uint8_t alphaValue = 0xFF, Worker* worker = nullptr);
125 
126  /**
127  * Converts a Y_U_V24 frame to a 32 bit RGBA frame into a second image buffer.
128  * <pre>
129  * YUV input value range: [16, 235]x[16, 240]x[16, 240]
130  * RGBA output value range: [ 0, 255]x[ 0, 255]x[ 0, 255]x[ 0, 255]
131  * </pre>
132  * @param ySource The y source frame buffer, must be valid
133  * @param uSource The u source frame buffer, must be valid
134  * @param vSource The v source frame buffer, must be valid
135  * @param target The target frame buffer, must be valid
136  * @param width The width of the frame in pixel, with range [1, infinity)
137  * @param height The height of the frame in pixel, with range [1, infinity)
138  * @param flag Determining the type of conversion
139  * @param ySourcePaddingElements The number of padding elements at the end of each y-source row, in (uint8_t) elements, with range [0, infinity)
140  * @param uSourcePaddingElements The number of padding elements at the end of each u-source row, in (uint8_t) elements, with range [0, infinity)
141  * @param vSourcePaddingElements The number of padding elements at the end of each v-source row, in (uint8_t) elements, with range [0, infinity)
142  * @param targetPaddingElements The number of padding elements at the end of each target row, in (uint8_t) elements, with range [0, infinity)
143  * @param alphaValue The value of the alpha channel to be set, with range [0, 255]
144  * @param worker Optional worker object to distribute the computational to several CPU cores
145  */
146  static inline void convertY_U_V24LimitedRangeToRGBA32(const uint8_t* ySource, const uint8_t* uSource, const uint8_t* vSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int targetPaddingElements, const uint8_t alphaValue = 0xFF, Worker* worker = nullptr);
147 
148  /**
149  * Converts a full range Y_U_V24 frame to a full range BGRA32 frame into a second image buffer applying a transformation similar to BT.601.
150  * The actual transformation is close to the official BT.601 standard and used on Android for conversion from Y'UV420sp (NV21).
151  * <pre>
152  * YUV input value range: [0, 255]x[0, 255]x[0, 255]
153  * BGRA output value range: [0, 255]x[0, 255]x[0, 255]x[0, 255]
154  * </pre>
155  * @param ySource The y source frame buffer, with (width + yPaddingElements) * height elements, must be valid
156  * @param uSource The u source frame buffer, with (width + uPaddingElements) * height elements, must be valid
157  * @param vSource The v source frame buffer, with (width + vPaddingElements) * height elements, must be valid
158  * @param target The target frame buffer, with (width + targetPaddingElements) * height elements, must be valid
159  * @param width The width of the frame in pixel, with range [1, infinity)
160  * @param height The height of the frame in pixel, with range [1, infinity)
161  * @param flag Determining the type of conversion
162  * @param ySourcePaddingElements The number of padding elements at the end of each y-source row, in (uint8_t) elements, with range [0, infinity)
163  * @param uSourcePaddingElements The number of padding elements at the end of each u-source row, in (uint8_t) elements, with range [0, infinity)
164  * @param vSourcePaddingElements The number of padding elements at the end of each v-source row, in (uint8_t) elements, with range [0, infinity)
165  * @param targetPaddingElements The number of padding elements at the end of each target row, in (uint8_t) elements, with range [0, infinity)
166  * @param alphaValue The alpha value to be set, with range [0, 255]
167  * @param worker Optional worker object to distribute the computational to several CPU cores
168  */
169  static inline void convertY_U_V24FullRangeToBGRA32FullRangeAndroid(const uint8_t* ySource, const uint8_t* uSource, const uint8_t* vSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int targetPaddingElements, const uint8_t alphaValue = 0xFF, Worker* worker = nullptr);
170 };
171 
172 inline void FrameConverterY_U_V24::convertY_U_V24ToYUV24(const uint8_t* ySource, const uint8_t* uSource, const uint8_t* vSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker)
173 {
174  ocean_assert(ySource != nullptr && uSource != nullptr && vSource != nullptr && target != nullptr);
175 
176  const int options[4] =
177  {
178  // padding parameters
179  int(ySourcePaddingElements), int(uSourcePaddingElements), int(vSourcePaddingElements), int(targetPaddingElements)
180  };
181 
182  const void* sources[3] =
183  {
184  ySource,
185  uSource,
186  vSource
187  };
188 
189  FrameConverter::convertArbitraryPixelFormat(sources, (void**)(&target), width, height, flag, 1u, FrameConverter::mapOneRow_3Plane1Channel_To_1Plane3Channels_8BitPerChannel<0u, 1u, 2u>, options, worker);
190 }
191 
192 inline void FrameConverterY_U_V24::convertY_U_V24LimitedRangeToBGR24(const uint8_t* ySource, const uint8_t* uSource, const uint8_t* vSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker)
193 {
194  ocean_assert(ySource != nullptr && uSource != nullptr && vSource != nullptr && target != nullptr);
195 
196  // Approximation with 6 bit precision:
197  // | B | | 75 128 0 | | Y - 16 |
198  // 64 * | G | = | 75 -25 -52 | * | U - 128 |
199  // | R | | 75 0 102 | | V - 128 |
200 
201  const int options[4 + 12] =
202  {
203  // padding parameters
204  int(ySourcePaddingElements), int(uSourcePaddingElements), int(vSourcePaddingElements), int(targetPaddingElements),
205 
206  // multiplication parameters (with denominator 64)
207  75, 75, 75, 128, -25, 0, 0, -52, 102,
208 
209  // bias/translation parameters (with denominator 1)
210  16, 128, 128
211  };
212 
213  const void* sources[3] =
214  {
215  ySource,
216  uSource,
217  vSource
218  };
219 
221 }
222 
223 inline void FrameConverterY_U_V24::convertY_U_V24LimitedRangeToRGB24(const uint8_t* ySource, const uint8_t* uSource, const uint8_t* vSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker)
224 {
225  ocean_assert(ySource != nullptr && uSource != nullptr && vSource != nullptr && target != nullptr);
226 
227  // Approximation with 6 bit precision:
228  // | R | | 75 0 102 | | Y - 16 |
229  // 64 * | G | = | 75 -25 -52 | * | U - 128 |
230  // | B | | 75 128 0 | | V - 128 |
231 
232  const int options[4 + 12] =
233  {
234  // padding parameters
235  int(ySourcePaddingElements), int(uSourcePaddingElements), int(vSourcePaddingElements), int(targetPaddingElements),
236 
237  // multiplication parameters (with denominator 64)
238  75, 75, 75, 0, -25, 128, 102, -52, 0,
239 
240  // bias/translation parameters (with denominator 1)
241  16, 128, 128
242  };
243 
244  const void* sources[3] =
245  {
246  ySource,
247  uSource,
248  vSource
249  };
250 
252 }
253 
254 inline void FrameConverterY_U_V24::convertY_U_V24LimitedRangeToBGRA32(const uint8_t* ySource, const uint8_t* uSource, const uint8_t* vSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int targetPaddingElements, const uint8_t alphaValue, Worker* worker)
255 {
256  ocean_assert(ySource != nullptr && uSource != nullptr && vSource != nullptr && target != nullptr);
257 
258  // Approximation with 6 bit precision:
259  // | B | | 75 128 0 | | Y - 16 |
260  // 64 * | G | = | 75 -25 -52 | * | U - 128 |
261  // | R | | 75 0 102 | | V - 128 |
262 
263  const int options[4 + 12 + 1] =
264  {
265  // padding parameters
266  int(ySourcePaddingElements), int(uSourcePaddingElements), int(vSourcePaddingElements), int(targetPaddingElements),
267 
268  // multiplication parameters (with denominator 64)
269  75, 75, 75, 128, -25, 0, 0, -52, 102,
270 
271  // bias/translation parameters (with denominator 1)
272  16, 128, 128,
273 
274  // alpha value
275  int(alphaValue)
276  };
277 
278  const void* sources[3] =
279  {
280  ySource,
281  uSource,
282  vSource
283  };
284 
286 }
287 
288 inline void FrameConverterY_U_V24::convertY_U_V24LimitedRangeToRGBA32(const uint8_t* ySource, const uint8_t* uSource, const uint8_t* vSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int targetPaddingElements, const uint8_t alphaValue, Worker* worker)
289 {
290  ocean_assert(ySource != nullptr && uSource != nullptr && vSource != nullptr && target != nullptr);
291 
292  // Approximation with 6 bit precision:
293  // | R | | 75 0 102 | | Y - 16 |
294  // 64 * | G | = | 75 -25 -52 | * | U - 128 |
295  // | B | | 75 128 0 | | V - 128 |
296 
297  const int options[4 + 12 + 1] =
298  {
299  // padding parameters
300  int(ySourcePaddingElements), int(uSourcePaddingElements), int(vSourcePaddingElements), int(targetPaddingElements),
301 
302  // multiplication parameters (with denominator 64)
303  75, 75, 75, 0, -25, 128, 102, -52, 0,
304 
305  // bias/translation parameters (with denominator 1)
306  16, 128, 128,
307 
308  // alpha value
309  int(alphaValue)
310  };
311 
312  const void* sources[3] =
313  {
314  ySource,
315  uSource,
316  vSource
317  };
318 
320 }
321 
322 inline void FrameConverterY_U_V24::convertY_U_V24FullRangeToBGRA32FullRangeAndroid(const uint8_t* ySource, const uint8_t* uSource, const uint8_t* vSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int targetPaddingElements, const uint8_t alphaValue, Worker* worker)
323 {
324  ocean_assert(ySource != nullptr && uSource != nullptr && vSource != nullptr && target != nullptr);
325 
326  ocean_assert(width != 0u && height != 0u);
327 
328  // | B | | 1.0 1.732446 0.0 -221.753088 | | Y |
329  // | G | | 1.0 -0.337633 -0.698001 132.561152 | | U |
330  // | R | = | 1.0 0.0 1.370705 -175.45024 | * | V |
331  // | | 1 |
332 
333  // B = Y + 1.732446 * (U - 128);
334  // G = Y - 0.337633 * (U - 128) - 0.698001 * (V - 128);
335  // R = Y + 1.370705 * (V - 128);
336 
337  // | B | | 64 111 0 | * | Y - 0 |
338  // | G | = | 64 -22 -45 | * | U - 128 |
339  // | R | | 64 0 88 | * | V - 128 |
340 
341  const int options[4 + 12 + 1] =
342  {
343  // padding parameters
344  int(ySourcePaddingElements), int(uSourcePaddingElements), int(vSourcePaddingElements), int(targetPaddingElements),
345 
346  // multiplication parameters (with denominator 64)
347  64, 64, 64, 111, -22, 0, 0, -45, 88,
348 
349  // bias/translation parameters (with denominator 1)
350  0, 128, 128,
351 
352  // alpha channel
353  int(alphaValue)
354  };
355 
356  const void* sources[3] =
357  {
358  ySource,
359  uSource,
360  vSource
361  };
362 
364 }
365 
366 }
367 
368 }
369 
370 #endif // META_OCEAN_CV_FRAME_CONVERTER_Y_U_V_24_H
This is the base class for all frame converter classes.
Definition: FrameConverter.h:32
ConversionFlag
Definition of individual conversion flags.
Definition: FrameConverter.h:39
static void convertOneRow_3Planes1Channel_To_1Plane3Channels_8BitPerChannel_Precision6Bit(const void **sources, void **targets, const unsigned int multipleRowIndex, const unsigned int width, const unsigned int height, const ConversionFlag conversionFlag, const void *options)
Converts one row of an image with e.g., a Y_U_V24 pixel format to one rows of an image with e....
static void convertOneRow_3Planes1Channel_To_1Plane4Channels_8BitPerChannel_Precision6Bit(const void **sources, void **targets, const unsigned int multipleRowIndex, const unsigned int width, const unsigned int height, const ConversionFlag conversionFlag, const void *options)
Converts one row of an image with e.g., a Y_U_V24 pixel format to one rows of an image with e....
static void convertArbitraryPixelFormat(const void **sources, void **targets, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int multipleRowsPerIteration, const MultipleRowsConversionFunction multipleRowsConversionFunction, const void *options, Worker *worker)
Converts a frame with arbitrary pixel format (e.g., Y_UV12, Y_VU12, YUYV16, ...) to a frame with arbi...
Definition: FrameConverter.h:3234
This class provides functions to convert frames with Y_U_V24 pixel format.
Definition: FrameConverterY_U_V24.h:42
static void convertY_U_V24FullRangeToBGRA32FullRangeAndroid(const uint8_t *ySource, const uint8_t *uSource, const uint8_t *vSource, uint8_t *target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int targetPaddingElements, const uint8_t alphaValue=0xFF, Worker *worker=nullptr)
Converts a full range Y_U_V24 frame to a full range BGRA32 frame into a second image buffer applying ...
Definition: FrameConverterY_U_V24.h:322
static void convertY_U_V24LimitedRangeToBGRA32(const uint8_t *ySource, const uint8_t *uSource, const uint8_t *vSource, uint8_t *target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int targetPaddingElements, const uint8_t alphaValue=0xFF, Worker *worker=nullptr)
Converts a Y_U_V24 frame to a 32 bit BGRA frame into a second image buffer.
Definition: FrameConverterY_U_V24.h:254
static void convertY_U_V24LimitedRangeToRGB24(const uint8_t *ySource, const uint8_t *uSource, const uint8_t *vSource, uint8_t *target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int targetPaddingElements, Worker *worker=nullptr)
Converts a Y_U_V24 frame to a 24 bit RGB frame into a second image buffer.
Definition: FrameConverterY_U_V24.h:223
static void convertY_U_V24ToYUV24(const uint8_t *ySource, const uint8_t *uSource, const uint8_t *vSource, uint8_t *target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int targetPaddingElements, Worker *worker=nullptr)
Converts a Y_U_V24 frame to a 24 bit YUV frame into a second image buffer.
Definition: FrameConverterY_U_V24.h:172
static void convertY_U_V24LimitedRangeToBGR24(const uint8_t *ySource, const uint8_t *uSource, const uint8_t *vSource, uint8_t *target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int targetPaddingElements, Worker *worker=nullptr)
Converts a Y_U_V24 frame to a 24 bit BGR frame into a second image buffer.
Definition: FrameConverterY_U_V24.h:192
static void convertY_U_V24LimitedRangeToRGBA32(const uint8_t *ySource, const uint8_t *uSource, const uint8_t *vSource, uint8_t *target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int targetPaddingElements, const uint8_t alphaValue=0xFF, Worker *worker=nullptr)
Converts a Y_U_V24 frame to a 32 bit RGBA frame into a second image buffer.
Definition: FrameConverterY_U_V24.h:288
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