Skip to content

Commit 5be89f6

Browse files
author
Alain Volmat
committed
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 31bb919 commit 5be89f6

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
@@ -1222,6 +1222,56 @@ void video_closest_frmival(const struct device *dev, enum video_endpoint_id ep,
12221222
*/
12231223
#define VIDEO_PIX_FMT_RGB565 VIDEO_FOURCC('R', 'G', 'B', 'P')
12241224

1225+
/**
1226+
* 24 bit RGB format with 8 bit per component
1227+
*
1228+
* @code{.unparsed}
1229+
* | Bbbbbbbb Gggggggg Rggggggg | ...
1230+
* @endcode
1231+
*/
1232+
#define VIDEO_PIX_FMT_BGR24 VIDEO_FOURCC('B', 'G', 'R', '3')
1233+
1234+
/**
1235+
* 24 bit RGB format with 8 bit per component
1236+
*
1237+
* @code{.unparsed}
1238+
* | Rggggggg Gggggggg Bbbbbbbb | ...
1239+
* @endcode
1240+
*/
1241+
#define VIDEO_PIX_FMT_RGB24 VIDEO_FOURCC('R', 'G', 'B', '3')
1242+
1243+
/**
1244+
* @code{.unparsed}
1245+
* | Aaaaaaaa Rrrrrrrr Gggggggg Bbbbbbbb | ...
1246+
* @endcode
1247+
*/
1248+
1249+
#define VIDEO_PIX_FMT_ARGB32 VIDEO_FOURCC('B', 'A', '2', '4')
1250+
1251+
/**
1252+
* @code{.unparsed}
1253+
* | Bbbbbbbb Gggggggg Rrrrrrrr Aaaaaaaa | ...
1254+
* @endcode
1255+
*/
1256+
1257+
#define VIDEO_PIX_FMT_ABGR32 VIDEO_FOURCC('A', 'R', '2', '4')
1258+
1259+
/**
1260+
* @code{.unparsed}
1261+
* | Rrrrrrrr Gggggggg Bbbbbbbb Aaaaaaaa | ...
1262+
* @endcode
1263+
*/
1264+
1265+
#define VIDEO_PIX_FMT_RGBA32 VIDEO_FOURCC('A', 'B', '2', '4')
1266+
1267+
/**
1268+
* @code{.unparsed}
1269+
* | Aaaaaaaa Bbbbbbbb Gggggggg Rrrrrrrr | ...
1270+
* @endcode
1271+
*/
1272+
1273+
#define VIDEO_PIX_FMT_BGRA32 VIDEO_FOURCC('R', 'A', '2', '4')
1274+
12251275
/**
12261276
* The first byte is empty (X) for each pixel.
12271277
*
@@ -1251,6 +1301,27 @@ void video_closest_frmival(const struct device *dev, enum video_endpoint_id ep,
12511301
*/
12521302
#define VIDEO_PIX_FMT_YUYV VIDEO_FOURCC('Y', 'U', 'Y', 'V')
12531303

1304+
/**
1305+
* @code{.unparsed}
1306+
* | Yyyyyyyy Vvvvvvvv | Yyyyyyyy Uuuuuuuu | ...
1307+
* @endcode
1308+
*/
1309+
#define VIDEO_PIX_FMT_YVYU VIDEO_FOURCC('Y', 'V', 'Y', 'U')
1310+
1311+
/**
1312+
* @code{.unparsed}
1313+
* | Vvvvvvvv Yyyyyyyy | Uuuuuuuu Yyyyyyyy | ...
1314+
* @endcode
1315+
*/
1316+
#define VIDEO_PIX_FMT_VYUY VIDEO_FOURCC('V', 'Y', 'U', 'Y')
1317+
1318+
/**
1319+
* @code{.unparsed}
1320+
* | Uuuuuuuu Yyyyyyyy | Vvvvvvvv Yyyyyyyy | ...
1321+
* @endcode
1322+
*/
1323+
#define VIDEO_PIX_FMT_UYVY VIDEO_FOURCC('U', 'Y', 'V', 'Y')
1324+
12541325
/**
12551326
* The first byte is empty (X) for each pixel.
12561327
*
@@ -1315,6 +1386,9 @@ static inline unsigned int video_bits_per_pixel(uint32_t pixfmt)
13151386
return 14;
13161387
case VIDEO_PIX_FMT_RGB565:
13171388
case VIDEO_PIX_FMT_YUYV:
1389+
case VIDEO_PIX_FMT_YVYU:
1390+
case VIDEO_PIX_FMT_UYVY:
1391+
case VIDEO_PIX_FMT_VYUY:
13181392
case VIDEO_PIX_FMT_SBGGR10:
13191393
case VIDEO_PIX_FMT_SGBRG10:
13201394
case VIDEO_PIX_FMT_SGRBG10:
@@ -1332,8 +1406,15 @@ static inline unsigned int video_bits_per_pixel(uint32_t pixfmt)
13321406
case VIDEO_PIX_FMT_SGRBG16:
13331407
case VIDEO_PIX_FMT_SRGGB16:
13341408
return 16;
1409+
case VIDEO_PIX_FMT_BGR24:
1410+
case VIDEO_PIX_FMT_RGB24:
1411+
return 24;
13351412
case VIDEO_PIX_FMT_XRGB32:
13361413
case VIDEO_PIX_FMT_XYUV32:
1414+
case VIDEO_PIX_FMT_ARGB32:
1415+
case VIDEO_PIX_FMT_ABGR32:
1416+
case VIDEO_PIX_FMT_RGBA32:
1417+
case VIDEO_PIX_FMT_BGRA32:
13371418
return 32;
13381419
default:
13391420
/* Variable number of bits per pixel or unknown format */

0 commit comments

Comments
 (0)