Skip to content

Commit 29197ac

Browse files
Alain Volmatkartben
Alain Volmat
authored andcommitted
drivers: video: add more RGB 24/32 bits and YUV 16 bit variants formats
Add several more RGB formats: (RGB24/BGR24,ARGB32,ABGR32,RGBA32,BGRA32) as well as more YUV formats: YVYU, VYVU, UYVY Signed-off-by: Alain Volmat <[email protected]>
1 parent d8ad66c commit 29197ac

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

include/zephyr/drivers/video.h

+81
Original file line numberDiff line numberDiff line change
@@ -1233,6 +1233,56 @@ void video_closest_frmival(const struct device *dev, enum video_endpoint_id ep,
12331233
*/
12341234
#define VIDEO_PIX_FMT_RGB565 VIDEO_FOURCC('R', 'G', 'B', 'P')
12351235

1236+
/**
1237+
* 24 bit RGB format with 8 bit per component
1238+
*
1239+
* @code{.unparsed}
1240+
* | Bbbbbbbb Gggggggg Rggggggg | ...
1241+
* @endcode
1242+
*/
1243+
#define VIDEO_PIX_FMT_BGR24 VIDEO_FOURCC('B', 'G', 'R', '3')
1244+
1245+
/**
1246+
* 24 bit RGB format with 8 bit per component
1247+
*
1248+
* @code{.unparsed}
1249+
* | Rggggggg Gggggggg Bbbbbbbb | ...
1250+
* @endcode
1251+
*/
1252+
#define VIDEO_PIX_FMT_RGB24 VIDEO_FOURCC('R', 'G', 'B', '3')
1253+
1254+
/**
1255+
* @code{.unparsed}
1256+
* | Aaaaaaaa Rrrrrrrr Gggggggg Bbbbbbbb | ...
1257+
* @endcode
1258+
*/
1259+
1260+
#define VIDEO_PIX_FMT_ARGB32 VIDEO_FOURCC('B', 'A', '2', '4')
1261+
1262+
/**
1263+
* @code{.unparsed}
1264+
* | Bbbbbbbb Gggggggg Rrrrrrrr Aaaaaaaa | ...
1265+
* @endcode
1266+
*/
1267+
1268+
#define VIDEO_PIX_FMT_ABGR32 VIDEO_FOURCC('A', 'R', '2', '4')
1269+
1270+
/**
1271+
* @code{.unparsed}
1272+
* | Rrrrrrrr Gggggggg Bbbbbbbb Aaaaaaaa | ...
1273+
* @endcode
1274+
*/
1275+
1276+
#define VIDEO_PIX_FMT_RGBA32 VIDEO_FOURCC('A', 'B', '2', '4')
1277+
1278+
/**
1279+
* @code{.unparsed}
1280+
* | Aaaaaaaa Bbbbbbbb Gggggggg Rrrrrrrr | ...
1281+
* @endcode
1282+
*/
1283+
1284+
#define VIDEO_PIX_FMT_BGRA32 VIDEO_FOURCC('R', 'A', '2', '4')
1285+
12361286
/**
12371287
* The first byte is empty (X) for each pixel.
12381288
*
@@ -1262,6 +1312,27 @@ void video_closest_frmival(const struct device *dev, enum video_endpoint_id ep,
12621312
*/
12631313
#define VIDEO_PIX_FMT_YUYV VIDEO_FOURCC('Y', 'U', 'Y', 'V')
12641314

1315+
/**
1316+
* @code{.unparsed}
1317+
* | Yyyyyyyy Vvvvvvvv | Yyyyyyyy Uuuuuuuu | ...
1318+
* @endcode
1319+
*/
1320+
#define VIDEO_PIX_FMT_YVYU VIDEO_FOURCC('Y', 'V', 'Y', 'U')
1321+
1322+
/**
1323+
* @code{.unparsed}
1324+
* | Vvvvvvvv Yyyyyyyy | Uuuuuuuu Yyyyyyyy | ...
1325+
* @endcode
1326+
*/
1327+
#define VIDEO_PIX_FMT_VYUY VIDEO_FOURCC('V', 'Y', 'U', 'Y')
1328+
1329+
/**
1330+
* @code{.unparsed}
1331+
* | Uuuuuuuu Yyyyyyyy | Vvvvvvvv Yyyyyyyy | ...
1332+
* @endcode
1333+
*/
1334+
#define VIDEO_PIX_FMT_UYVY VIDEO_FOURCC('U', 'Y', 'V', 'Y')
1335+
12651336
/**
12661337
* The first byte is empty (X) for each pixel.
12671338
*
@@ -1326,6 +1397,9 @@ static inline unsigned int video_bits_per_pixel(uint32_t pixfmt)
13261397
return 14;
13271398
case VIDEO_PIX_FMT_RGB565:
13281399
case VIDEO_PIX_FMT_YUYV:
1400+
case VIDEO_PIX_FMT_YVYU:
1401+
case VIDEO_PIX_FMT_UYVY:
1402+
case VIDEO_PIX_FMT_VYUY:
13291403
case VIDEO_PIX_FMT_SBGGR10:
13301404
case VIDEO_PIX_FMT_SGBRG10:
13311405
case VIDEO_PIX_FMT_SGRBG10:
@@ -1343,8 +1417,15 @@ static inline unsigned int video_bits_per_pixel(uint32_t pixfmt)
13431417
case VIDEO_PIX_FMT_SGRBG16:
13441418
case VIDEO_PIX_FMT_SRGGB16:
13451419
return 16;
1420+
case VIDEO_PIX_FMT_BGR24:
1421+
case VIDEO_PIX_FMT_RGB24:
1422+
return 24;
13461423
case VIDEO_PIX_FMT_XRGB32:
13471424
case VIDEO_PIX_FMT_XYUV32:
1425+
case VIDEO_PIX_FMT_ARGB32:
1426+
case VIDEO_PIX_FMT_ABGR32:
1427+
case VIDEO_PIX_FMT_RGBA32:
1428+
case VIDEO_PIX_FMT_BGRA32:
13481429
return 32;
13491430
default:
13501431
/* Variable number of bits per pixel or unknown format */

0 commit comments

Comments
 (0)