Skip to content

Commit 9445f31

Browse files
author
Alain Volmat
committed
video: add planar formats (NV12/NV21/NV16/NV61/NV24/NV42/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 9445f31

File tree

1 file changed

+130
-0
lines changed

1 file changed

+130
-0
lines changed

include/zephyr/drivers/video.h

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1551,6 +1551,128 @@ 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+
* CbCr(UV) plane has same width and height as Y plane
1616+
*
1617+
* @code{.unparsed}
1618+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1619+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1620+
* | ... |
1621+
* | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv |
1622+
* | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv |
1623+
* | ... |
1624+
* @endcode
1625+
*/
1626+
#define VIDEO_PIX_FMT_NV24 VIDEO_FOURCC('N', 'V', '2', '4')
1627+
1628+
/**
1629+
* CrCb(VU) plane has same width and height as Y plane
1630+
*
1631+
* @code{.unparsed}
1632+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1633+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1634+
* | ... |
1635+
* | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu |
1636+
* | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu |
1637+
* | ... |
1638+
* @endcode
1639+
*/
1640+
#define VIDEO_PIX_FMT_NV42 VIDEO_FOURCC('N', 'V', '4', '2')
1641+
1642+
/**
1643+
* Cb(U) and Cr(V) planes have half width and half height as Y plane
1644+
*
1645+
* @code{.unparsed}
1646+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1647+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1648+
* | ... |
1649+
* | Uuuuuuuu Uuuuuuuu | Uuuuuuuu Uuuuuuuu |
1650+
* | Uuuuuuuu Uuuuuuuu | Uuuuuuuu Uuuuuuuu |
1651+
* | ... |
1652+
* | Vvvvvvvv Vvvvvvvv | Vvvvvvvv Vvvvvvvv |
1653+
* | Vvvvvvvv Vvvvvvvv | Vvvvvvvv Vvvvvvvv |
1654+
* | ... |
1655+
* @endcode
1656+
*/
1657+
#define VIDEO_PIX_FMT_YUV420 VIDEO_FOURCC('Y', 'U', '1', '2')
1658+
1659+
/**
1660+
* Cb(U) and Cr(V) planes have half width and half height as Y plane
1661+
*
1662+
* @code{.unparsed}
1663+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1664+
* | Yyyyyyyy Yyyyyyyy | Yyyyyyyy Yyyyyyyy |
1665+
* | ... |
1666+
* | Vvvvvvvv Vvvvvvvv | Vvvvvvvv Vvvvvvvv |
1667+
* | Vvvvvvvv Vvvvvvvv | Vvvvvvvv Vvvvvvvv |
1668+
* | ... |
1669+
* | Uuuuuuuu Uuuuuuuu | Uuuuuuuu Uuuuuuuu |
1670+
* | Uuuuuuuu Uuuuuuuu | Uuuuuuuu Uuuuuuuu |
1671+
* | ... |
1672+
* @endcode
1673+
*/
1674+
#define VIDEO_PIX_FMT_YVU420 VIDEO_FOURCC('Y', 'V', '1', '2')
1675+
15541676
/**
15551677
* @}
15561678
*/
@@ -1597,6 +1719,10 @@ static inline unsigned int video_bits_per_pixel(uint32_t pixfmt)
15971719
case VIDEO_PIX_FMT_SGRBG12P:
15981720
case VIDEO_PIX_FMT_SRGGB12P:
15991721
case VIDEO_PIX_FMT_Y12P:
1722+
case VIDEO_PIX_FMT_NV12:
1723+
case VIDEO_PIX_FMT_NV21:
1724+
case VIDEO_PIX_FMT_YUV420:
1725+
case VIDEO_PIX_FMT_YVU420:
16001726
return 12;
16011727
case VIDEO_PIX_FMT_SBGGR14P:
16021728
case VIDEO_PIX_FMT_SGBRG14P:
@@ -1629,9 +1755,13 @@ static inline unsigned int video_bits_per_pixel(uint32_t pixfmt)
16291755
case VIDEO_PIX_FMT_Y12:
16301756
case VIDEO_PIX_FMT_Y14:
16311757
case VIDEO_PIX_FMT_Y16:
1758+
case VIDEO_PIX_FMT_NV16:
1759+
case VIDEO_PIX_FMT_NV61:
16321760
return 16;
16331761
case VIDEO_PIX_FMT_BGR24:
16341762
case VIDEO_PIX_FMT_RGB24:
1763+
case VIDEO_PIX_FMT_NV24:
1764+
case VIDEO_PIX_FMT_NV42:
16351765
return 24;
16361766
case VIDEO_PIX_FMT_XRGB32:
16371767
case VIDEO_PIX_FMT_XYUV32:

0 commit comments

Comments
 (0)