@@ -1540,6 +1540,220 @@ int64_t video_get_csi_link_freq(const struct device *dev, uint8_t bpp, uint8_t l
15401540 */
15411541#define VIDEO_PIX_FMT_XYUV32 VIDEO_FOURCC('X', 'Y', 'U', 'V')
15421542
1543+ /**
1544+ * Planar formats
1545+ */
1546+ /**
1547+ * Chroma (U/V) are subsampled horizontaly and vertically
1548+ *
1549+ * @code{.unparsed}
1550+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1551+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1552+ * | ... |
1553+ * | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | ...
1554+ * | ... |
1555+ * @endcode
1556+ *
1557+ * Below diagram show how luma and chroma relate to each others
1558+ *
1559+ * @code{.unparsed}
1560+ * Y0 Y1 Y2 Y3 ...
1561+ * Y6 Y7 Y8 Y9 ...
1562+ * ...
1563+ *
1564+ * U0/1/6/7 V0/1/6/7 U2/3/8/9 V2/3/8/9 ...
1565+ * ...
1566+ * @endcode
1567+ */
1568+ #define VIDEO_PIX_FMT_NV12 VIDEO_FOURCC('N', 'V', '1', '2')
1569+
1570+ /**
1571+ * Chroma (U/V) are subsampled horizontaly and vertically
1572+ *
1573+ * @code{.unparsed}
1574+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1575+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1576+ * | ... |
1577+ * | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | ...
1578+ * | ... |
1579+ * @endcode
1580+ *
1581+ * Below diagram show how luma and chroma relate to each others
1582+ *
1583+ * @code{.unparsed}
1584+ * Y0 Y1 Y2 Y3 ...
1585+ * Y6 Y7 Y8 Y9 ...
1586+ * ...
1587+ *
1588+ * V0/1/6/7 U0/1/6/7 V2/3/8/9 U2/3/8/9 ...
1589+ * ...
1590+ * @endcode
1591+ */
1592+ #define VIDEO_PIX_FMT_NV21 VIDEO_FOURCC('N', 'V', '2', '1')
1593+
1594+ /**
1595+ * Chroma (U/V) are subsampled horizontaly
1596+ *
1597+ * @code{.unparsed}
1598+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1599+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1600+ * | ... |
1601+ * | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | ...
1602+ * | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | ...
1603+ * | ... |
1604+ * @endcode
1605+ *
1606+ * Below diagram show how luma and chroma relate to each others
1607+ *
1608+ * @code{.unparsed}
1609+ * Y0 Y1 Y2 Y3 ...
1610+ * Y6 Y7 Y8 Y9 ...
1611+ * ...
1612+ *
1613+ * U0/1 V0/1 U2/3 V2/3 ...
1614+ * U6/7 V6/7 U8/9 V8/9 ...
1615+ * ...
1616+ * @endcode
1617+ */
1618+ #define VIDEO_PIX_FMT_NV16 VIDEO_FOURCC('N', 'V', '1', '6')
1619+
1620+ /**
1621+ * Chroma (U/V) are subsampled horizontaly
1622+ *
1623+ * @code{.unparsed}
1624+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1625+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1626+ * | ... |
1627+ * | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | ...
1628+ * | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | ...
1629+ * | ... |
1630+ * @endcode
1631+ *
1632+ * Below diagram show how luma and chroma relate to each others
1633+ *
1634+ * @code{.unparsed}
1635+ * Y0 Y1 Y2 Y3 ...
1636+ * Y6 Y7 Y8 Y9 ...
1637+ * ...
1638+ *
1639+ * V0/1 U0/1 V2/3 U2/3 ...
1640+ * V6/7 U6/7 V8/9 U8/9 ...
1641+ * ...
1642+ * @endcode
1643+ */
1644+
1645+ #define VIDEO_PIX_FMT_NV61 VIDEO_FOURCC('N', 'V', '6', '1')
1646+
1647+ /**
1648+ * Chroma (U/V) are not subsampled
1649+ *
1650+ * @code{.unparsed}
1651+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1652+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1653+ * | ... |
1654+ * | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv |
1655+ * | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv |
1656+ * | ... |
1657+ * @endcode
1658+ *
1659+ * Below diagram show how luma and chroma relate to each others
1660+ *
1661+ * @code{.unparsed}
1662+ * Y0 Y1 Y2 Y3 ...
1663+ * Y6 Y7 Y8 Y9 ...
1664+ * ...
1665+ *
1666+ * U0 V0 U1 V1 U2 V2 U3 V3 ...
1667+ * U6 V6 U7 V7 U8 V8 U9 V9 ...
1668+ * ...
1669+ * @endcode
1670+ */
1671+ #define VIDEO_PIX_FMT_NV24 VIDEO_FOURCC('N', 'V', '2', '4')
1672+
1673+ /**
1674+ * Chroma (U/V) are not subsampled
1675+ *
1676+ * @code{.unparsed}
1677+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1678+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1679+ * | ... |
1680+ * | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu |
1681+ * | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu |
1682+ * | ... |
1683+ * @endcode
1684+ *
1685+ * Below diagram show how luma and chroma relate to each others
1686+ *
1687+ * @code{.unparsed}
1688+ * Y0 Y1 Y2 Y3 ...
1689+ * Y6 Y7 Y8 Y9 ...
1690+ * ...
1691+ *
1692+ * V0 U0 V1 U1 V2 U2 V3 U3 ...
1693+ * V6 U6 V7 U7 V8 U8 V9 U9 ...
1694+ * ...
1695+ * @endcode
1696+ */
1697+ #define VIDEO_PIX_FMT_NV42 VIDEO_FOURCC('N', 'V', '4', '2')
1698+
1699+ /**
1700+ * Chroma (U/V) are subsampled horizontaly and vertically
1701+ *
1702+ * @code{.unparsed}
1703+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1704+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1705+ * | ... |
1706+ * | Uuuuuuuu | Uuuuuuuu |
1707+ * | ... |
1708+ * | Vvvvvvvv | Vvvvvvvv |
1709+ * | ... |
1710+ * @endcode
1711+ *
1712+ * Below diagram show how luma and chroma relate to each others
1713+ *
1714+ * @code{.unparsed}
1715+ * Y0 Y1 Y2 Y3 ...
1716+ * Y6 Y7 Y8 Y9 ...
1717+ * ...
1718+ *
1719+ * U0/1/6/7 U2/3/8/9 ...
1720+ * ...
1721+ *
1722+ * V0/1/6/7 V2/3/8/9 ...
1723+ * ...
1724+ * @endcode
1725+ */
1726+ #define VIDEO_PIX_FMT_YUV420 VIDEO_FOURCC('Y', 'U', '1', '2')
1727+
1728+ /**
1729+ * Chroma (U/V) are subsampled horizontaly and vertically
1730+ *
1731+ * @code{.unparsed}
1732+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1733+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1734+ * | ... |
1735+ * | Vvvvvvvv | Vvvvvvvv |
1736+ * | ... |
1737+ * | Uuuuuuuu | Uuuuuuuu |
1738+ * | ... |
1739+ * @endcode
1740+ *
1741+ * Below diagram show how luma and chroma relate to each others
1742+ *
1743+ * @code{.unparsed}
1744+ * Y0 Y1 Y2 Y3 ...
1745+ * Y6 Y7 Y8 Y9 ...
1746+ * ...
1747+ *
1748+ * V0/1/6/7 V2/3/8/9 ...
1749+ * ...
1750+ *
1751+ * U0/1/6/7 U2/3/8/9 ...
1752+ * ...
1753+ * @endcode
1754+ */
1755+ #define VIDEO_PIX_FMT_YVU420 VIDEO_FOURCC('Y', 'V', '1', '2')
1756+
15431757/**
15441758 * @}
15451759 */
@@ -1586,6 +1800,10 @@ static inline unsigned int video_bits_per_pixel(uint32_t pixfmt)
15861800 case VIDEO_PIX_FMT_SGRBG12P :
15871801 case VIDEO_PIX_FMT_SRGGB12P :
15881802 case VIDEO_PIX_FMT_Y12P :
1803+ case VIDEO_PIX_FMT_NV12 :
1804+ case VIDEO_PIX_FMT_NV21 :
1805+ case VIDEO_PIX_FMT_YUV420 :
1806+ case VIDEO_PIX_FMT_YVU420 :
15891807 return 12 ;
15901808 case VIDEO_PIX_FMT_SBGGR14P :
15911809 case VIDEO_PIX_FMT_SGBRG14P :
@@ -1618,9 +1836,13 @@ static inline unsigned int video_bits_per_pixel(uint32_t pixfmt)
16181836 case VIDEO_PIX_FMT_Y12 :
16191837 case VIDEO_PIX_FMT_Y14 :
16201838 case VIDEO_PIX_FMT_Y16 :
1839+ case VIDEO_PIX_FMT_NV16 :
1840+ case VIDEO_PIX_FMT_NV61 :
16211841 return 16 ;
16221842 case VIDEO_PIX_FMT_BGR24 :
16231843 case VIDEO_PIX_FMT_RGB24 :
1844+ case VIDEO_PIX_FMT_NV24 :
1845+ case VIDEO_PIX_FMT_NV42 :
16241846 return 24 ;
16251847 case VIDEO_PIX_FMT_XRGB32 :
16261848 case VIDEO_PIX_FMT_XYUV32 :
0 commit comments