Skip to content

Commit 37594a2

Browse files
author
Alain Volmat
committed
video: add planar formats (NV12/NV21/NV16/NV61/YUV420/YVU420)
Add description and fourcc define for some of the 2 and 3 planes pixel formats. Signed-off-by: Alain Volmat <[email protected]>
1 parent a8ecd94 commit 37594a2

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed

include/zephyr/drivers/video.h

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1551,6 +1551,100 @@ int64_t video_get_csi_link_freq(const struct device *dev, uint8_t bpp, uint8_t l
15511551
*/
15521552
#define VIDEO_PIX_FMT_XYUV32 VIDEO_FOURCC('X', 'Y', 'U', 'V')
15531553

1554+
/**
1555+
* Planar formats
1556+
*/
1557+
/**
1558+
* CbCr(UV) plane has same width as Y plane however half height
1559+
*
1560+
* @code{.unparsed}
1561+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1562+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1563+
* | ... |
1564+
* | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv |
1565+
* | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv |
1566+
* | ... |
1567+
* @endcode
1568+
*/
1569+
#define VIDEO_PIX_FMT_NV12 VIDEO_FOURCC('N', 'V', '1', '2')
1570+
1571+
/**
1572+
* CrCb(VU) plane has same width as Y plane however half height
1573+
*
1574+
* @code{.unparsed}
1575+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1576+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1577+
* | ... |
1578+
* | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu |
1579+
* | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu |
1580+
* | ... |
1581+
* @endcode
1582+
*/
1583+
#define VIDEO_PIX_FMT_NV21 VIDEO_FOURCC('N', 'V', '2', '1')
1584+
1585+
/**
1586+
* CbCr(UV) plane has same width and height as Y plane
1587+
*
1588+
* @code{.unparsed}
1589+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1590+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1591+
* | ... |
1592+
* | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv |
1593+
* | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv |
1594+
* | ... |
1595+
* @endcode
1596+
*/
1597+
#define VIDEO_PIX_FMT_NV16 VIDEO_FOURCC('N', 'V', '1', '6')
1598+
1599+
/**
1600+
* CrCb(VU) plane has same width and height as Y plane
1601+
*
1602+
* @code{.unparsed}
1603+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1604+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1605+
* | ... |
1606+
* | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu |
1607+
* | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu |
1608+
* | ... |
1609+
* @endcode
1610+
*/
1611+
1612+
#define VIDEO_PIX_FMT_NV61 VIDEO_FOURCC('N', 'V', '6', '1')
1613+
1614+
/**
1615+
* Cb(U) and Cr(V) planes have half width and half height as Y plane
1616+
*
1617+
* @code{.unparsed}
1618+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1619+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1620+
* | ... |
1621+
* | Uuuuuuuu Uuuuuuuu | Uuuuuuuu Uuuuuuuu |
1622+
* | Uuuuuuuu Uuuuuuuu | Uuuuuuuu Uuuuuuuu |
1623+
* | ... |
1624+
* | Vvvvvvvv Vvvvvvvv | Vvvvvvvv Vvvvvvvv |
1625+
* | Vvvvvvvv Vvvvvvvv | Vvvvvvvv Vvvvvvvv |
1626+
* | ... |
1627+
* @endcode
1628+
*/
1629+
#define VIDEO_PIX_FMT_YUV420 VIDEO_FOURCC('Y', 'U', '1', '2')
1630+
1631+
/**
1632+
* Cb(U) and Cr(V) planes have half width and half height as Y plane
1633+
*
1634+
* @code{.unparsed}
1635+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1636+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1637+
* | ... |
1638+
* | Vvvvvvvv Vvvvvvvv | Vvvvvvvv Vvvvvvvv |
1639+
* | Vvvvvvvv Vvvvvvvv | Vvvvvvvv Vvvvvvvv |
1640+
* | ... |
1641+
* | Uuuuuuuu Uuuuuuuu | Uuuuuuuu Uuuuuuuu |
1642+
* | Uuuuuuuu Uuuuuuuu | Uuuuuuuu Uuuuuuuu |
1643+
* | ... |
1644+
* @endcode
1645+
*/
1646+
#define VIDEO_PIX_FMT_YVU420 VIDEO_FOURCC('Y', 'V', '1', '2')
1647+
15541648
/**
15551649
* @}
15561650
*/
@@ -1597,6 +1691,10 @@ static inline unsigned int video_bits_per_pixel(uint32_t pixfmt)
15971691
case VIDEO_PIX_FMT_SGRBG12P:
15981692
case VIDEO_PIX_FMT_SRGGB12P:
15991693
case VIDEO_PIX_FMT_Y12P:
1694+
case VIDEO_PIX_FMT_NV12:
1695+
case VIDEO_PIX_FMT_NV21:
1696+
case VIDEO_PIX_FMT_YUV420:
1697+
case VIDEO_PIX_FMT_YVU420:
16001698
return 12;
16011699
case VIDEO_PIX_FMT_SBGGR14P:
16021700
case VIDEO_PIX_FMT_SGBRG14P:
@@ -1629,6 +1727,8 @@ static inline unsigned int video_bits_per_pixel(uint32_t pixfmt)
16291727
case VIDEO_PIX_FMT_Y12:
16301728
case VIDEO_PIX_FMT_Y14:
16311729
case VIDEO_PIX_FMT_Y16:
1730+
case VIDEO_PIX_FMT_NV16:
1731+
case VIDEO_PIX_FMT_NV61:
16321732
return 16;
16331733
case VIDEO_PIX_FMT_BGR24:
16341734
case VIDEO_PIX_FMT_RGB24:

0 commit comments

Comments
 (0)