@@ -1551,6 +1551,196 @@ 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+ * Chroma (U/V) are subsampled horizontaly and vertically
1559+ *
1560+ * @code{.unparsed}
1561+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1562+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1563+ * | ... |
1564+ * | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | ...
1565+ * | ... |
1566+ * @endcode
1567+ *
1568+ * Below diagram show how luma and chroma relate to each others
1569+ * Y0 Y1 Y2 Y3 ...
1570+ * Y6 Y7 Y8 Y9 ...
1571+ * ...
1572+ *
1573+ * U0/1/6/7 V0/1/6/7 U2/3/8/9 V2/3/8/9 ...
1574+ * ...
1575+ */
1576+ #define VIDEO_PIX_FMT_NV12 VIDEO_FOURCC('N', 'V', '1', '2')
1577+
1578+ /**
1579+ * Chroma (U/V) are subsampled horizontaly and vertically
1580+ *
1581+ * @code{.unparsed}
1582+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1583+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1584+ * | ... |
1585+ * | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | ...
1586+ * | ... |
1587+ * @endcode
1588+ *
1589+ * Below diagram show how luma and chroma relate to each others
1590+ * Y0 Y1 Y2 Y3 ...
1591+ * Y6 Y7 Y8 Y9 ...
1592+ * ...
1593+ *
1594+ * V0/1/6/7 U0/1/6/7 V2/3/8/9 U2/3/8/9 ...
1595+ * ...
1596+ */
1597+ #define VIDEO_PIX_FMT_NV21 VIDEO_FOURCC('N', 'V', '2', '1')
1598+
1599+ /**
1600+ * Chroma (U/V) are subsampled horizontaly
1601+ *
1602+ * @code{.unparsed}
1603+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1604+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1605+ * | ... |
1606+ * | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | ...
1607+ * | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | ...
1608+ * | ... |
1609+ * @endcode
1610+ *
1611+ * Below diagram show how luma and chroma relate to each others
1612+ * Y0 Y1 Y2 Y3 ...
1613+ * Y6 Y7 Y8 Y9 ...
1614+ * ...
1615+ *
1616+ * U0/1 V0/1 U2/3 V2/3 ...
1617+ * U6/7 V6/7 U8/9 V8/9 ...
1618+ * ...
1619+ */
1620+ #define VIDEO_PIX_FMT_NV16 VIDEO_FOURCC('N', 'V', '1', '6')
1621+
1622+ /**
1623+ * Chroma (U/V) are subsampled horizontaly
1624+ *
1625+ * @code{.unparsed}
1626+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1627+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1628+ * | ... |
1629+ * | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | ...
1630+ * | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | ...
1631+ * | ... |
1632+ *
1633+ * Below diagram show how luma and chroma relate to each others
1634+ * Y0 Y1 Y2 Y3 ...
1635+ * Y6 Y7 Y8 Y9 ...
1636+ * ...
1637+ *
1638+ * V0/1 U0/1 V2/3 U2/3 ...
1639+ * V6/7 U6/7 V8/9 U8/9 ...
1640+ * ...
1641+ * @endcode
1642+ */
1643+
1644+ #define VIDEO_PIX_FMT_NV61 VIDEO_FOURCC('N', 'V', '6', '1')
1645+
1646+ /**
1647+ * Chroma (U/V) are not subsampled
1648+ *
1649+ * @code{.unparsed}
1650+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1651+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1652+ * | ... |
1653+ * | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv |
1654+ * | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv |
1655+ * | ... |
1656+ * @endcode
1657+ *
1658+ * Below diagram show how luma and chroma relate to each others
1659+ * Y0 Y1 Y2 Y3 ...
1660+ * Y6 Y7 Y8 Y9 ...
1661+ * ...
1662+ *
1663+ * U0 V0 U1 V1 U2 V2 U3 V3 ...
1664+ * U6 V6 U7 V7 U8 V8 U9 V9 ...
1665+ * ...
1666+ */
1667+ #define VIDEO_PIX_FMT_NV24 VIDEO_FOURCC('N', 'V', '2', '4')
1668+
1669+ /**
1670+ * Chroma (U/V) are not subsampled
1671+ *
1672+ * @code{.unparsed}
1673+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1674+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1675+ * | ... |
1676+ * | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu |
1677+ * | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu |
1678+ * | ... |
1679+ * @endcode
1680+ *
1681+ * Below diagram show how luma and chroma relate to each others
1682+ * Y0 Y1 Y2 Y3 ...
1683+ * Y6 Y7 Y8 Y9 ...
1684+ * ...
1685+ *
1686+ * V0 U0 V1 U1 V2 U2 V3 U3 ...
1687+ * V6 U6 V7 U7 V8 U8 V9 U9 ...
1688+ * ...
1689+ */
1690+ #define VIDEO_PIX_FMT_NV42 VIDEO_FOURCC('N', 'V', '4', '2')
1691+
1692+ /**
1693+ * Chroma (U/V) are subsampled horizontaly and vertically
1694+ *
1695+ * @code{.unparsed}
1696+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1697+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1698+ * | ... |
1699+ * | Uuuuuuuu | Uuuuuuuu |
1700+ * | ... |
1701+ * | Vvvvvvvv | Vvvvvvvv |
1702+ * | ... |
1703+ * @endcode
1704+ *
1705+ * Below diagram show how luma and chroma relate to each others
1706+ * Y0 Y1 Y2 Y3 ...
1707+ * Y6 Y7 Y8 Y9 ...
1708+ * ...
1709+ *
1710+ * U0/1/6/7 U2/3/8/9 ...
1711+ * ...
1712+ *
1713+ * V0/1/6/7 V2/3/8/9 ...
1714+ * ...
1715+ */
1716+ #define VIDEO_PIX_FMT_YUV420 VIDEO_FOURCC('Y', 'U', '1', '2')
1717+
1718+ /**
1719+ * Chroma (U/V) are subsampled horizontaly and vertically
1720+ *
1721+ * @code{.unparsed}
1722+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1723+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1724+ * | ... |
1725+ * | Vvvvvvvv | Vvvvvvvv |
1726+ * | ... |
1727+ * | Uuuuuuuu | Uuuuuuuu |
1728+ * | ... |
1729+ * @endcode
1730+ *
1731+ * Below diagram show how luma and chroma relate to each others
1732+ * Y0 Y1 Y2 Y3 ...
1733+ * Y6 Y7 Y8 Y9 ...
1734+ * ...
1735+ *
1736+ * V0/1/6/7 V2/3/8/9 ...
1737+ * ...
1738+ *
1739+ * U0/1/6/7 U2/3/8/9 ...
1740+ * ...
1741+ */
1742+ #define VIDEO_PIX_FMT_YVU420 VIDEO_FOURCC('Y', 'V', '1', '2')
1743+
15541744/**
15551745 * @}
15561746 */
@@ -1597,6 +1787,10 @@ static inline unsigned int video_bits_per_pixel(uint32_t pixfmt)
15971787 case VIDEO_PIX_FMT_SGRBG12P :
15981788 case VIDEO_PIX_FMT_SRGGB12P :
15991789 case VIDEO_PIX_FMT_Y12P :
1790+ case VIDEO_PIX_FMT_NV12 :
1791+ case VIDEO_PIX_FMT_NV21 :
1792+ case VIDEO_PIX_FMT_YUV420 :
1793+ case VIDEO_PIX_FMT_YVU420 :
16001794 return 12 ;
16011795 case VIDEO_PIX_FMT_SBGGR14P :
16021796 case VIDEO_PIX_FMT_SGBRG14P :
@@ -1629,9 +1823,13 @@ static inline unsigned int video_bits_per_pixel(uint32_t pixfmt)
16291823 case VIDEO_PIX_FMT_Y12 :
16301824 case VIDEO_PIX_FMT_Y14 :
16311825 case VIDEO_PIX_FMT_Y16 :
1826+ case VIDEO_PIX_FMT_NV16 :
1827+ case VIDEO_PIX_FMT_NV61 :
16321828 return 16 ;
16331829 case VIDEO_PIX_FMT_BGR24 :
16341830 case VIDEO_PIX_FMT_RGB24 :
1831+ case VIDEO_PIX_FMT_NV24 :
1832+ case VIDEO_PIX_FMT_NV42 :
16351833 return 24 ;
16361834 case VIDEO_PIX_FMT_XRGB32 :
16371835 case VIDEO_PIX_FMT_XYUV32 :
0 commit comments