8#ifndef META_OCEAN_CV_FRAME_CONVERTER_Y_V_U_12_H
9#define META_OCEAN_CV_FRAME_CONVERTER_Y_V_U_12_H
50 static inline void convertY_V_U12LimitedRangeToY8LimitedRange(
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);
67 static inline void convertY_V_U12LimitedRangeToY8FullRange(
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);
84 static inline void convertY_V_U12FullRangeToY8FullRange(
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);
101 static inline void convertY_V_U12FullRangeToY8LimitedRange(
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);
122 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);
143 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);
164 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);
185 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);
202 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);
219 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);
222inline void FrameConverterY_V_U12::convertY_V_U12LimitedRangeToY8LimitedRange(
const uint8_t* ySource,
const uint8_t* ,
const uint8_t* , uint8_t* target,
const unsigned int width,
const unsigned int height,
const ConversionFlag flag,
const unsigned int ySourcePaddingElements,
const unsigned int ,
const unsigned int ,
const unsigned int targetPaddingElements,
Worker* worker)
224 ocean_assert(ySource !=
nullptr && target !=
nullptr);
225 ocean_assert(width >= 1u && height >= 1u);
227 FrameChannels::transformGeneric<uint8_t, 1u>(ySource, target, width, height, flag, ySourcePaddingElements, targetPaddingElements, worker);
230inline void FrameConverterY_V_U12::convertY_V_U12LimitedRangeToY8FullRange(
const uint8_t* ySource,
const uint8_t* ,
const uint8_t* , uint8_t* target,
const unsigned int width,
const unsigned int height,
const ConversionFlag flag,
const unsigned int ySourcePaddingElements,
const unsigned int ,
const unsigned int ,
const unsigned int targetPaddingElements,
Worker* worker)
232 ocean_assert(ySource !=
nullptr && target !=
nullptr);
233 ocean_assert(width >= 1u && height >= 1u);
238inline void FrameConverterY_V_U12::convertY_V_U12FullRangeToY8FullRange(
const uint8_t* ySource,
const uint8_t* ,
const uint8_t* , uint8_t* target,
const unsigned int width,
const unsigned int height,
const ConversionFlag flag,
const unsigned int ySourcePaddingElements,
const unsigned int ,
const unsigned int ,
const unsigned int targetPaddingElements,
Worker* worker)
240 ocean_assert(ySource !=
nullptr && target !=
nullptr);
241 ocean_assert(width >= 1u && height >= 1u);
243 FrameChannels::transformGeneric<uint8_t, 1u>(ySource, target, width, height, flag, ySourcePaddingElements, targetPaddingElements, worker);
246inline void FrameConverterY_V_U12::convertY_V_U12FullRangeToY8LimitedRange(
const uint8_t* ySource,
const uint8_t* ,
const uint8_t* , uint8_t* target,
const unsigned int width,
const unsigned int height,
const ConversionFlag flag,
const unsigned int ySourcePaddingElements,
const unsigned int ,
const unsigned int ,
const unsigned int targetPaddingElements,
Worker* worker)
248 ocean_assert(ySource !=
nullptr && target !=
nullptr);
249 ocean_assert(width >= 1u && height >= 1u);
254inline 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)
256 ocean_assert(ySource !=
nullptr && vSource !=
nullptr && uSource !=
nullptr && target !=
nullptr);
258 ocean_assert(width >= 2u && width % 2u == 0u);
259 ocean_assert(height >= 2u && height % 2u == 0u);
261 if (width < 2u || height < 2u || width % 2u != 0u || height % 2u != 0u)
278 const int options[4 + 12] =
281 int(ySourcePaddingElements), int(vSourcePaddingElements), int(uSourcePaddingElements), int(targetPaddingElements),
284 1192, 1192, 1192, 0, -833, 1634, 2066, -400, 0,
290 const void* sources[3] =
300inline 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)
302 ocean_assert(ySource !=
nullptr && vSource !=
nullptr && uSource !=
nullptr && target !=
nullptr);
304 ocean_assert(width >= 2u && width % 2u == 0u);
305 ocean_assert(height >= 2u && height % 2u == 0u);
307 if (width < 2u || height < 2u || width % 2u != 0u || height % 2u != 0u)
324 const int options[4 + 12] =
327 int(ySourcePaddingElements), int(vSourcePaddingElements), int(uSourcePaddingElements), int(targetPaddingElements),
330 1192, 1192, 1192, 1634, -833, 0, 0, -400, 2066,
336 const void* sources[3] =
346inline 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)
348 FrameConverterY_U_V12::convertY_U_V12FullRangeToBGR24FullRangePrecision6Bit(ySource, uSource, vSource, target, width, height, flag, ySourcePaddingElements, uSourcePaddingElements, vSourcePaddingElements, targetPaddingElements, worker);
351inline 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)
353 FrameConverterY_U_V12::convertY_U_V12FullRangeToRGB24FullRangePrecision6Bit(ySource, uSource, vSource, target, width, height, flag, ySourcePaddingElements, uSourcePaddingElements, vSourcePaddingElements, targetPaddingElements, worker);
356inline 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)
358 FrameConverterY_U_V12::convertY_U_V12ToYUV24(ySource, vSource, uSource, target, width, height, flag, ySourcePaddingElements, vSourcePaddingElements, uSourcePaddingElements, targetPaddingElements, worker);
361inline 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)
363 ocean_assert(ySource !=
nullptr && vSource !=
nullptr && uSource !=
nullptr && target !=
nullptr);
365 ocean_assert(width >= 2u && width % 2u == 0u);
366 ocean_assert(height >= 2u && height % 2u == 0u);
368 if (width < 2u || height < 2u || width % 2u != 0u || height % 2u != 0u)
373 const unsigned int options[4] = {ySourcePaddingElements, vSourcePaddingElements, uSourcePaddingElements, targetPaddingElements};
375 const void* sources[3] =
382 FrameConverter::convertArbitraryPixelFormat(sources, (
void**)(&target), width, height, flag, 2u, FrameConverter::mapTwoRows_1Plane1ChannelAnd2Planes1ChannelDownsampled2x2_To_1Plane3Channels_8BitPerChannel<0u, 2u, 1u>, options, worker);
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:3506
static void convertY8FullRangeToY8LimitedRange(const uint8_t *source, uint8_t *target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int sourcePaddingElements, const unsigned int targetPaddingElements, Worker *worker=nullptr)
Converts a Y8 full range frame [0, 255] to a Y8 limited range frame [16, 235].
Definition FrameConverterY8.h:320
static void convertY8LimitedRangeToY8FullRange(const uint8_t *source, uint8_t *target, const unsigned int width, const unsigned int height, const ConversionFlag flag, const unsigned int sourcePaddingElements, const unsigned int targetPaddingElements, Worker *worker=nullptr)
Converts a Y8 limited range frame [16, 235] to a Y8 full range frame [0, 255].
Definition FrameConverterY8.h:288
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:761
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:649
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:469
This class provides functions to convert frames with Y_V_U12 pixel format.
Definition FrameConverterY_V_U12.h:32
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:361
static void convertY_V_U12FullRangeToY8LimitedRange(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_FULL_RANGE frame to a Y8_LIMITED_RANGE frame into a second image buffer.
Definition FrameConverterY_V_U12.h:246
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:351
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:300
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:356
static void convertY_V_U12FullRangeToY8FullRange(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_FULL_RANGE frame to a Y8_FULL_RANGE frame into a second image buffer.
Definition FrameConverterY_V_U12.h:238
static void convertY_V_U12LimitedRangeToY8FullRange(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_LIMITED_RANGE frame to a Y8_FULL_RANGE frame into a second image buffer.
Definition FrameConverterY_V_U12.h:230
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:346
static void convertY_V_U12LimitedRangeToY8LimitedRange(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_LIMITED_RANGE frame to a Y8_LIMITED_RANGE frame into a second image buffer.
Definition FrameConverterY_V_U12.h:222
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:254
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