Ocean
Loading...
Searching...
No Matches
FrameConverterY_V_U12.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_V_U_12_H
9#define META_OCEAN_CV_FRAME_CONVERTER_Y_V_U_12_H
10
11#include "ocean/cv/CV.h"
16
17namespace Ocean
18{
19
20namespace CV
21{
22
23/**
24 * This class provides functions to convert frames with Y_V_U12 pixel format.
25 * The Y_V_U12 format holds the three 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 V channel and holds 8 bit for four pixels in a 2x2 neighborhood.<br>
28 * The third block covers the U channel and also holds 8 bit for four pixels in a 2x2 neighborhood.
29 * @ingroup cv
30 */
31class OCEAN_CV_EXPORT FrameConverterY_V_U12 : public FrameConverter
32{
33 public:
34
35 /**
36 * Converts a Y_V_U12 frame to an 8 bit gray scale frame into a second image buffer.
37 * @param ySource The y source frame buffer, with (width + yPaddingElements) * height elements, must be valid
38 * @param vSource The v source frame buffer, with (2 * width/2 + vPaddingElements) * height/2 elements, can be invalid, as this parameter is not used
39 * @param uSource The u source frame buffer, with (2 * width/2 + uPaddingElements) * height/2 elements, can be invalid, as this parameter is not used
40 * @param target The target frame buffer, with (width + targetPaddingElements) * height elements, must be valid
41 * @param width The width of the frame in pixel, with range [2, infinity), must be a multiple of 2
42 * @param height The height of the frame in pixel, with range [2, infinity), must be a multiple of 2
43 * @param flag Determining the type of conversion
44 * @param ySourcePaddingElements The number of padding elements at the end of each y-source row, in (uint8_t) elements, with range [0, infinity)
45 * @param vSourcePaddingElements The number of padding elements at the end of each v-source row, in (uint8_t) elements, with range [0, infinity), actually this parameter is not used
46 * @param uSourcePaddingElements The number of padding elements at the end of each u-source row, in (uint8_t) elements, with range [0, infinity), actually this parameter is not used
47 * @param targetPaddingElements The number of padding elements at the end of each target row, in (uint8_t) elements, with range [0, infinity)
48 * @param worker Optional worker object to distribute the computational to several CPU cores
49 */
50 static inline void convertY_V_U12ToY8(const uint8_t* ySource, const uint8_t* vSource, const uint8_t* uSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker = nullptr);
51
52 /**
53 * Converts a Y_V_U12 frame to an 24 bit BGR frame into a second image buffer.
54 * <pre>
55 * YVU input value range: [16, 235]x[16, 240]x[16, 240]
56 * BGR output value range: [ 0, 255]x[ 0, 255]x[ 0, 255]
57 * </pre>
58 * @param ySource The y source frame buffer, with (width + yPaddingElements) * height elements, must be valid
59 * @param vSource The v source frame buffer, with (2 * width/2 + vPaddingElements) * height/2 elements, must be valid
60 * @param uSource The u source frame buffer, with (2 * width/2 + uPaddingElements) * height/2 elements, must be valid
61 * @param target The target frame buffer, with (width + targetPaddingElements) * height elements, must be valid
62 * @param width The width of the frame in pixel, with range [2, infinity), must be a multiple of 2
63 * @param height The height of the frame in pixel, with range [2, infinity), must be a multiple of 2
64 * @param flag Determining the type of conversion
65 * @param ySourcePaddingElements The number of padding elements at the end of each y-source row, in (uint8_t) elements, with range [0, infinity)
66 * @param vSourcePaddingElements The number of padding elements at the end of each v-source row, in (uint8_t) elements, with range [0, infinity)
67 * @param uSourcePaddingElements The number of padding elements at the end of each u-source row, in (uint8_t) elements, with range [0, infinity)
68 * @param targetPaddingElements The number of padding elements at the end of each target row, in (uint8_t) elements, with range [0, infinity)
69 * @param worker Optional worker object to distribute the computational to several CPU cores
70 */
71 static inline void convertY_V_U12LimitedRangeToBGR24FullRange(const uint8_t* ySource, const uint8_t* vSource, const uint8_t* uSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker = nullptr);
72
73 /**
74 * Converts a Y_V_U12 frame to an 24 bit RGB frame into a second image buffer.
75 * <pre>
76 * YVU input value range: [16, 235]x[16, 240]x[16, 240]
77 * RGB output value range: [ 0, 255]x[ 0, 255]x[ 0, 255]
78 * </pre>
79 * @param ySource The y source frame buffer, with (width + yPaddingElements) * height elements, must be valid
80 * @param vSource The v source frame buffer, with (2 * width/2 + vPaddingElements) * height/2 elements, must be valid
81 * @param uSource The u source frame buffer, with (2 * width/2 + uPaddingElements) * height/2 elements, must be valid
82 * @param target The target frame buffer, with (width + targetPaddingElements) * height elements, must be valid
83 * @param width The width of the frame in pixel, with range [2, infinity), must be a multiple of 2
84 * @param height The height of the frame in pixel, with range [2, infinity), must be a multiple of 2
85 * @param flag Determining the type of conversion
86 * @param ySourcePaddingElements The number of padding elements at the end of each y-source row, in (uint8_t) elements, with range [0, infinity)
87 * @param vSourcePaddingElements The number of padding elements at the end of each v-source row, in (uint8_t) elements, with range [0, infinity)
88 * @param uSourcePaddingElements The number of padding elements at the end of each u-source row, in (uint8_t) elements, with range [0, infinity)
89 * @param targetPaddingElements The number of padding elements at the end of each target row, in (uint8_t) elements, with range [0, infinity)
90 * @param worker Optional worker object to distribute the computational to several CPU cores
91 */
92 static inline void convertY_V_U12LimitedRangeToRGB24FullRange(const uint8_t* ySource, const uint8_t* vSource, const uint8_t* uSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker = nullptr);
93
94 /**
95 * Converts a Y_V_U12 frame to a 24 bit BGR frame into a second image buffer using BT.601 (analog).
96 * <pre>
97 * YVU input value range: [0, 255]x[0, 255]x[0, 255]
98 * BGR output value range: [0, 255]x[0, 255]x[0, 255]
99 * </pre>
100 * @param ySource The y source frame buffer, with (width + yPaddingElements) * height elements, must be valid
101 * @param vSource The v source frame buffer, with (width/2 + vPaddingElements) * height/2 elements, must be valid
102 * @param uSource The u source frame buffer, with (width/2 + uPaddingElements) * height/2 elements, must be valid
103 * @param target The target frame buffer, with (width + targetPaddingElements) * height elements, must be valid
104 * @param width The width of the frame in pixel, with range [2, infinity), must be a multiple of 2
105 * @param height The height of the frame in pixel, with range [2, infinity), must be a multiple of 2
106 * @param flag Determining the type of conversion
107 * @param ySourcePaddingElements The number of padding elements at the end of each y-source row, in (uint8_t) elements, with range [0, infinity)
108 * @param vSourcePaddingElements The number of padding elements at the end of each v-source row, in (uint8_t) elements, with range [0, infinity)
109 * @param uSourcePaddingElements The number of padding elements at the end of each u-source row, in (uint8_t) elements, with range [0, infinity)
110 * @param targetPaddingElements The number of padding elements at the end of each target row, in (uint8_t) elements, with range [0, infinity)
111 * @param worker Optional worker object to distribute the computational to several CPU cores
112 */
113 static inline void convertY_V_U12FullRangeToBGR24FullRangePrecision6Bit(const uint8_t* ySource, const uint8_t* vSource, const uint8_t* uSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker = nullptr);
114
115 /**
116 * Converts a Y_V_U12 frame to a 24 bit RGB frame into a second image buffer using BT.601 (analog).
117 * <pre>
118 * YVU input value range: [0, 255]x[0, 255]x[0, 255]
119 * RGB output value range: [0, 255]x[0, 255]x[0, 255]
120 * </pre>
121 * @param ySource The y source frame buffer, with (width + yPaddingElements) * height elements, must be valid
122 * @param vSource The v source frame buffer, with (width/2 + vPaddingElements) * height/2 elements, must be valid
123 * @param uSource The u source frame buffer, with (width/2 + uPaddingElements) * height/2 elements, must be valid
124 * @param target The target frame buffer, with (width + targetPaddingElements) * height elements, must be valid
125 * @param width The width of the frame in pixel, with range [2, infinity), must be a multiple of 2
126 * @param height The height of the frame in pixel, with range [2, infinity), must be a multiple of 2
127 * @param flag Determining the type of conversion
128 * @param ySourcePaddingElements The number of padding elements at the end of each y-source row, in (uint8_t) elements, with range [0, infinity)
129 * @param vSourcePaddingElements The number of padding elements at the end of each v-source row, in (uint8_t) elements, with range [0, infinity)
130 * @param uSourcePaddingElements The number of padding elements at the end of each u-source row, in (uint8_t) elements, with range [0, infinity)
131 * @param targetPaddingElements The number of padding elements at the end of each target row, in (uint8_t) elements, with range [0, infinity)
132 * @param worker Optional worker object to distribute the computational to several CPU cores
133 */
134 static inline void convertY_V_U12FullRangeToRGB24FullRangePrecision6Bit(const uint8_t* ySource, const uint8_t* vSource, const uint8_t* uSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker = nullptr);
135
136 /**
137 * Converts a Y_V_U12 frame to an 24 bit YVU frame into a second image buffer.
138 * @param ySource The y source frame buffer, with (width + yPaddingElements) * height elements, must be valid
139 * @param vSource The v source frame buffer, with (2 * width/2 + vPaddingElements) * height/2 elements, must be valid
140 * @param uSource The u source frame buffer, with (2 * width/2 + uPaddingElements) * height/2 elements, must be valid
141 * @param target The target frame buffer, with (width + targetPaddingElements) * height elements, must be valid
142 * @param width The width of the frame in pixel, with range [2, infinity), must be a multiple of 2
143 * @param height The height of the frame in pixel, with range [2, infinity), must be a multiple of 2
144 * @param flag Determining the type of conversion
145 * @param ySourcePaddingElements The number of padding elements at the end of each y-source row, in (uint8_t) elements, with range [0, infinity)
146 * @param vSourcePaddingElements The number of padding elements at the end of each v-source row, in (uint8_t) elements, with range [0, infinity)
147 * @param uSourcePaddingElements The number of padding elements at the end of each u-source row, in (uint8_t) elements, with range [0, infinity)
148 * @param targetPaddingElements The number of padding elements at the end of each target row, in (uint8_t) elements, with range [0, infinity)
149 * @param worker Optional worker object to distribute the computational to several CPU cores
150 */
151 static inline void convertY_V_U12ToYVU24(const uint8_t* ySource, const uint8_t* vSource, const uint8_t* uSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker = nullptr);
152
153 /**
154 * Converts a Y_V_U12 frame to an 24 bit YUV frame into a second image buffer.
155 * @param ySource The y source frame buffer, with (width + yPaddingElements) * height elements, must be valid
156 * @param vSource The v source frame buffer, with (2 * width/2 + vPaddingElements) * height/2 elements, must be valid
157 * @param uSource The u source frame buffer, with (2 * width/2 + uPaddingElements) * height/2 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 [2, infinity), must be a multiple of 2
160 * @param height The height of the frame in pixel, with range [2, infinity), must be a multiple of 2
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 vSourcePaddingElements The number of padding elements at the end of each v-source row, in (uint8_t) elements, with range [0, infinity)
164 * @param uSourcePaddingElements The number of padding elements at the end of each u-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 worker Optional worker object to distribute the computational to several CPU cores
167 */
168 static inline void convertY_V_U12ToYUV24(const uint8_t* ySource, const uint8_t* vSource, const uint8_t* uSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker = nullptr);
169};
170
171inline void FrameConverterY_V_U12::convertY_V_U12ToY8(const uint8_t* ySource, const uint8_t* /* vSource */, const uint8_t* /* uSource */, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int /* vSourcePaddingElements */, const unsigned int /* uSourcePaddingElements */, const unsigned int targetPaddingElements, Worker* worker)
172{
173 ocean_assert(ySource != nullptr && target != nullptr);
174 ocean_assert(width >= 1u && height >= 1u);
175
176 FrameChannels::transformGeneric<uint8_t, 1u>(ySource, target, width, height, flag, ySourcePaddingElements, targetPaddingElements, worker);
177}
178
179inline void FrameConverterY_V_U12::convertY_V_U12LimitedRangeToBGR24FullRange(const uint8_t* ySource, const uint8_t* vSource, const uint8_t* uSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker)
180{
181 ocean_assert(ySource != nullptr && vSource != nullptr && uSource != nullptr && target != nullptr);
182
183 ocean_assert(width >= 2u && width % 2u == 0u);
184 ocean_assert(height >= 2u && height % 2u == 0u);
185
186 if (width < 2u || height < 2u || width % 2u != 0u || height % 2u != 0u)
187 {
188 return;
189 }
190
191 // precise color space conversion:
192 // | B | | 1.1639404296875 0.0 2.0179443359375 -276.919921875 | | Y |
193 // | G | = | 1.1639404296875 -0.81298828125 -0.3909912109375 135.486328125 | * | V |
194 // | R | | 1.1639404296875 1.595947265625 0.0 -222.904296875 | | U |
195 // | 1 |
196
197 // approximation:
198 // | B | | 1192 0 2066 -277 | | Y |
199 // | G | = | 1192 -833 -400 135 | * | V |
200 // | R | | 1192 1634 0 -223 | | U |
201 // | 1 |
202
203 const int options[4 + 12] =
204 {
205 // padding parameters
206 int(ySourcePaddingElements), int(vSourcePaddingElements), int(uSourcePaddingElements), int(targetPaddingElements),
207
208 // multiplication parameters (with denominator 1024)
209 1192, 1192, 1192, 0, -833, 1634, 2066, -400, 0,
210
211 // bias/translation parameters (with denominator 1)
212 -277, 135, -223
213 };
214
215 const void* sources[3] =
216 {
217 ySource,
218 vSource,
219 uSource
220 };
221
223}
224
225inline void FrameConverterY_V_U12::convertY_V_U12LimitedRangeToRGB24FullRange(const uint8_t* ySource, const uint8_t* vSource, const uint8_t* uSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker)
226{
227 ocean_assert(ySource != nullptr && vSource != nullptr && uSource != nullptr && target != nullptr);
228
229 ocean_assert(width >= 2u && width % 2u == 0u);
230 ocean_assert(height >= 2u && height % 2u == 0u);
231
232 if (width < 2u || height < 2u || width % 2u != 0u || height % 2u != 0u)
233 {
234 return;
235 }
236
237 // precise color space conversion:
238 // | R | | 1.1639404296875 1.595947265625 0.0 -222.904296875 | | Y |
239 // | G | = | 1.1639404296875 -0.81298828125 -0.3909912109375 135.486328125 | * | V |
240 // | B | | 1.1639404296875 0.0 2.0179443359375 -276.919921875 | | U |
241 // | 1 |
242
243 // approximation:
244 // | R | | 1192 1634 0 -223 | | Y |
245 // | G | = | 1192 -833 -400 135 | * | V |
246 // | B | | 1192 0 2066 -277 | | U |
247 // | 1 |
248
249 const int options[4 + 12] =
250 {
251 // padding parameters
252 int(ySourcePaddingElements), int(vSourcePaddingElements), int(uSourcePaddingElements), int(targetPaddingElements),
253
254 // multiplication parameters (with denominator 1024)
255 1192, 1192, 1192, 1634, -833, 0, 0, -400, 2066,
256
257 // bias/translation parameters (with denominator 1)
258 -223, 135, -277
259 };
260
261 const void* sources[3] =
262 {
263 ySource,
264 vSource,
265 uSource
266 };
267
269}
270
271inline void FrameConverterY_V_U12::convertY_V_U12FullRangeToBGR24FullRangePrecision6Bit(const uint8_t* ySource, const uint8_t* vSource, const uint8_t* uSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker)
272{
273 FrameConverterY_U_V12::convertY_U_V12FullRangeToBGR24FullRangePrecision6Bit(ySource, uSource, vSource, target, width, height, flag, ySourcePaddingElements, uSourcePaddingElements, vSourcePaddingElements, targetPaddingElements, worker);
274}
275
276inline void FrameConverterY_V_U12::convertY_V_U12FullRangeToRGB24FullRangePrecision6Bit(const uint8_t* ySource, const uint8_t* vSource, const uint8_t* uSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker)
277{
278 FrameConverterY_U_V12::convertY_U_V12FullRangeToRGB24FullRangePrecision6Bit(ySource, uSource, vSource, target, width, height, flag, ySourcePaddingElements, uSourcePaddingElements, vSourcePaddingElements, targetPaddingElements, worker);
279}
280
281inline void FrameConverterY_V_U12::convertY_V_U12ToYVU24(const uint8_t* ySource, const uint8_t* vSource, const uint8_t* uSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker)
282{
283 FrameConverterY_U_V12::convertY_U_V12ToYUV24(ySource, vSource, uSource, target, width, height, flag, ySourcePaddingElements, vSourcePaddingElements, uSourcePaddingElements, targetPaddingElements, worker);
284}
285
286inline void FrameConverterY_V_U12::convertY_V_U12ToYUV24(const uint8_t* ySource, const uint8_t* vSource, const uint8_t* uSource, uint8_t* target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker* worker)
287{
288 ocean_assert(ySource != nullptr && vSource != nullptr && uSource != nullptr && target != nullptr);
289
290 ocean_assert(width >= 2u && width % 2u == 0u);
291 ocean_assert(height >= 2u && height % 2u == 0u);
292
293 if (width < 2u || height < 2u || width % 2u != 0u || height % 2u != 0u)
294 {
295 return;
296 }
297
298 const unsigned int options[4] = {ySourcePaddingElements, vSourcePaddingElements, uSourcePaddingElements, targetPaddingElements};
299
300 const void* sources[3] =
301 {
302 ySource,
303 vSource,
304 uSource
305 };
306
307 FrameConverter::convertArbitraryPixelFormat(sources, (void**)(&target), width, height, flag, 2u, FrameConverter::mapTwoRows_1Plane1ChannelAnd2Planes1ChannelDownsampled2x2_To_1Plane3Channels_8BitPerChannel<0u, 2u, 1u>, options, worker);
308}
309
310}
311
312}
313
314#endif // META_OCEAN_CV_FRAME_CONVERTER_Y_V_U_12_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 convertTwoRows_1Plane1ChannelAnd2Planes1ChannelDownsampled2x2_To_1Plane3Channels_8BitPerChannel_Precision10Bit(const void **sources, void **targets, const unsigned int multipleRowIndex, const unsigned int width, const unsigned int height, const ConversionFlag conversionFlag, const void *options)
Converts two rows of an image with e.g., a Y_U_V12 pixel format to two 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
static void convertY_U_V12ToYUV24(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_V12 frame to a 24 bit YUV frame into a second image buffer.
Definition FrameConverterY_U_V12.h:685
static void convertY_U_V12FullRangeToRGB24FullRangePrecision6Bit(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_V12 frame to a 24 bit RGB frame into a second image buffer.
Definition FrameConverterY_U_V12.h:573
static void convertY_U_V12FullRangeToBGR24FullRangePrecision6Bit(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_V12 frame to a 24 bit BGR frame into a second image buffer using BT....
Definition FrameConverterY_U_V12.h:393
This class provides functions to convert frames with Y_V_U12 pixel format.
Definition FrameConverterY_V_U12.h:32
static void convertY_V_U12ToY8(const uint8_t *ySource, const uint8_t *vSource, const uint8_t *uSource, uint8_t *target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker *worker=nullptr)
Converts a Y_V_U12 frame to an 8 bit gray scale frame into a second image buffer.
Definition FrameConverterY_V_U12.h:171
static void convertY_V_U12ToYUV24(const uint8_t *ySource, const uint8_t *vSource, const uint8_t *uSource, uint8_t *target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker *worker=nullptr)
Converts a Y_V_U12 frame to an 24 bit YUV frame into a second image buffer.
Definition FrameConverterY_V_U12.h:286
static void convertY_V_U12FullRangeToRGB24FullRangePrecision6Bit(const uint8_t *ySource, const uint8_t *vSource, const uint8_t *uSource, uint8_t *target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker *worker=nullptr)
Converts a Y_V_U12 frame to a 24 bit RGB frame into a second image buffer using BT....
Definition FrameConverterY_V_U12.h:276
static void convertY_V_U12LimitedRangeToRGB24FullRange(const uint8_t *ySource, const uint8_t *vSource, const uint8_t *uSource, uint8_t *target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker *worker=nullptr)
Converts a Y_V_U12 frame to an 24 bit RGB frame into a second image buffer.
Definition FrameConverterY_V_U12.h:225
static void convertY_V_U12ToYVU24(const uint8_t *ySource, const uint8_t *vSource, const uint8_t *uSource, uint8_t *target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker *worker=nullptr)
Converts a Y_V_U12 frame to an 24 bit YVU frame into a second image buffer.
Definition FrameConverterY_V_U12.h:281
static void convertY_V_U12FullRangeToBGR24FullRangePrecision6Bit(const uint8_t *ySource, const uint8_t *vSource, const uint8_t *uSource, uint8_t *target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker *worker=nullptr)
Converts a Y_V_U12 frame to a 24 bit BGR frame into a second image buffer using BT....
Definition FrameConverterY_V_U12.h:271
static void convertY_V_U12LimitedRangeToBGR24FullRange(const uint8_t *ySource, const uint8_t *vSource, const uint8_t *uSource, uint8_t *target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int ySourcePaddingElements, const unsigned int vSourcePaddingElements, const unsigned int uSourcePaddingElements, const unsigned int targetPaddingElements, Worker *worker=nullptr)
Converts a Y_V_U12 frame to an 24 bit BGR frame into a second image buffer.
Definition FrameConverterY_V_U12.h:179
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