Ocean
Loading...
Searching...
No Matches
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"
14
15#include "ocean/base/Worker.h"
16
17namespace Ocean
18{
19
20namespace 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
172inline 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
192inline 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
223inline 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
254inline 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
288inline 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
322inline 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