@@ -1551,6 +1551,220 @@ int64_t video_get_csi_link_freq(const struct device *dev, uint8_t bpp, uint8_t l
1551
1551
*/
1552
1552
#define VIDEO_PIX_FMT_XYUV32 VIDEO_FOURCC('X', 'Y', 'U', 'V')
1553
1553
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
+ *
1570
+ * @code{.unparsed}
1571
+ * Y0 Y1 Y2 Y3 ...
1572
+ * Y6 Y7 Y8 Y9 ...
1573
+ * ...
1574
+ *
1575
+ * U0/1/6/7 V0/1/6/7 U2/3/8/9 V2/3/8/9 ...
1576
+ * ...
1577
+ * @endcode
1578
+ */
1579
+ #define VIDEO_PIX_FMT_NV12 VIDEO_FOURCC('N', 'V', '1', '2')
1580
+
1581
+ /**
1582
+ * Chroma (U/V) are subsampled horizontaly and vertically
1583
+ *
1584
+ * @code{.unparsed}
1585
+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1586
+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1587
+ * | ... |
1588
+ * | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | ...
1589
+ * | ... |
1590
+ * @endcode
1591
+ *
1592
+ * Below diagram show how luma and chroma relate to each others
1593
+ *
1594
+ * @code{.unparsed}
1595
+ * Y0 Y1 Y2 Y3 ...
1596
+ * Y6 Y7 Y8 Y9 ...
1597
+ * ...
1598
+ *
1599
+ * V0/1/6/7 U0/1/6/7 V2/3/8/9 U2/3/8/9 ...
1600
+ * ...
1601
+ * @endcode
1602
+ */
1603
+ #define VIDEO_PIX_FMT_NV21 VIDEO_FOURCC('N', 'V', '2', '1')
1604
+
1605
+ /**
1606
+ * Chroma (U/V) are subsampled horizontaly
1607
+ *
1608
+ * @code{.unparsed}
1609
+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1610
+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1611
+ * | ... |
1612
+ * | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | ...
1613
+ * | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | ...
1614
+ * | ... |
1615
+ * @endcode
1616
+ *
1617
+ * Below diagram show how luma and chroma relate to each others
1618
+ *
1619
+ * @code{.unparsed}
1620
+ * Y0 Y1 Y2 Y3 ...
1621
+ * Y6 Y7 Y8 Y9 ...
1622
+ * ...
1623
+ *
1624
+ * U0/1 V0/1 U2/3 V2/3 ...
1625
+ * U6/7 V6/7 U8/9 V8/9 ...
1626
+ * ...
1627
+ * @endcode
1628
+ */
1629
+ #define VIDEO_PIX_FMT_NV16 VIDEO_FOURCC('N', 'V', '1', '6')
1630
+
1631
+ /**
1632
+ * Chroma (U/V) are subsampled horizontaly
1633
+ *
1634
+ * @code{.unparsed}
1635
+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1636
+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
1637
+ * | ... |
1638
+ * | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | ...
1639
+ * | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | ...
1640
+ * | ... |
1641
+ * @endcode
1642
+ *
1643
+ * Below diagram show how luma and chroma relate to each others
1644
+ *
1645
+ * @code{.unparsed}
1646
+ * Y0 Y1 Y2 Y3 ...
1647
+ * Y6 Y7 Y8 Y9 ...
1648
+ * ...
1649
+ *
1650
+ * V0/1 U0/1 V2/3 U2/3 ...
1651
+ * V6/7 U6/7 V8/9 U8/9 ...
1652
+ * ...
1653
+ * @endcode
1654
+ */
1655
+
1656
+ #define VIDEO_PIX_FMT_NV61 VIDEO_FOURCC('N', 'V', '6', '1')
1657
+
1658
+ /**
1659
+ * Chroma (U/V) are not subsampled
1660
+ *
1661
+ * @code{.unparsed}
1662
+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1663
+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1664
+ * | ... |
1665
+ * | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv |
1666
+ * | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv |
1667
+ * | ... |
1668
+ * @endcode
1669
+ *
1670
+ * Below diagram show how luma and chroma relate to each others
1671
+ *
1672
+ * @code{.unparsed}
1673
+ * Y0 Y1 Y2 Y3 ...
1674
+ * Y6 Y7 Y8 Y9 ...
1675
+ * ...
1676
+ *
1677
+ * U0 V0 U1 V1 U2 V2 U3 V3 ...
1678
+ * U6 V6 U7 V7 U8 V8 U9 V9 ...
1679
+ * ...
1680
+ * @endcode
1681
+ */
1682
+ #define VIDEO_PIX_FMT_NV24 VIDEO_FOURCC('N', 'V', '2', '4')
1683
+
1684
+ /**
1685
+ * Chroma (U/V) are not subsampled
1686
+ *
1687
+ * @code{.unparsed}
1688
+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1689
+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1690
+ * | ... |
1691
+ * | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu |
1692
+ * | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu |
1693
+ * | ... |
1694
+ * @endcode
1695
+ *
1696
+ * Below diagram show how luma and chroma relate to each others
1697
+ *
1698
+ * @code{.unparsed}
1699
+ * Y0 Y1 Y2 Y3 ...
1700
+ * Y6 Y7 Y8 Y9 ...
1701
+ * ...
1702
+ *
1703
+ * V0 U0 V1 U1 V2 U2 V3 U3 ...
1704
+ * V6 U6 V7 U7 V8 U8 V9 U9 ...
1705
+ * ...
1706
+ * @endcode
1707
+ */
1708
+ #define VIDEO_PIX_FMT_NV42 VIDEO_FOURCC('N', 'V', '4', '2')
1709
+
1710
+ /**
1711
+ * Chroma (U/V) are subsampled horizontaly and vertically
1712
+ *
1713
+ * @code{.unparsed}
1714
+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1715
+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1716
+ * | ... |
1717
+ * | Uuuuuuuu | Uuuuuuuu |
1718
+ * | ... |
1719
+ * | Vvvvvvvv | Vvvvvvvv |
1720
+ * | ... |
1721
+ * @endcode
1722
+ *
1723
+ * Below diagram show how luma and chroma relate to each others
1724
+ *
1725
+ * @code{.unparsed}
1726
+ * Y0 Y1 Y2 Y3 ...
1727
+ * Y6 Y7 Y8 Y9 ...
1728
+ * ...
1729
+ *
1730
+ * U0/1/6/7 U2/3/8/9 ...
1731
+ * ...
1732
+ *
1733
+ * V0/1/6/7 V2/3/8/9 ...
1734
+ * ...
1735
+ * @endcode
1736
+ */
1737
+ #define VIDEO_PIX_FMT_YUV420 VIDEO_FOURCC('Y', 'U', '1', '2')
1738
+
1739
+ /**
1740
+ * Chroma (U/V) are subsampled horizontaly and vertically
1741
+ *
1742
+ * @code{.unparsed}
1743
+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1744
+ * | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
1745
+ * | ... |
1746
+ * | Vvvvvvvv | Vvvvvvvv |
1747
+ * | ... |
1748
+ * | Uuuuuuuu | Uuuuuuuu |
1749
+ * | ... |
1750
+ * @endcode
1751
+ *
1752
+ * Below diagram show how luma and chroma relate to each others
1753
+ *
1754
+ * @code{.unparsed}
1755
+ * Y0 Y1 Y2 Y3 ...
1756
+ * Y6 Y7 Y8 Y9 ...
1757
+ * ...
1758
+ *
1759
+ * V0/1/6/7 V2/3/8/9 ...
1760
+ * ...
1761
+ *
1762
+ * U0/1/6/7 U2/3/8/9 ...
1763
+ * ...
1764
+ * @endcode
1765
+ */
1766
+ #define VIDEO_PIX_FMT_YVU420 VIDEO_FOURCC('Y', 'V', '1', '2')
1767
+
1554
1768
/**
1555
1769
* @}
1556
1770
*/
@@ -1597,6 +1811,10 @@ static inline unsigned int video_bits_per_pixel(uint32_t pixfmt)
1597
1811
case VIDEO_PIX_FMT_SGRBG12P :
1598
1812
case VIDEO_PIX_FMT_SRGGB12P :
1599
1813
case VIDEO_PIX_FMT_Y12P :
1814
+ case VIDEO_PIX_FMT_NV12 :
1815
+ case VIDEO_PIX_FMT_NV21 :
1816
+ case VIDEO_PIX_FMT_YUV420 :
1817
+ case VIDEO_PIX_FMT_YVU420 :
1600
1818
return 12 ;
1601
1819
case VIDEO_PIX_FMT_SBGGR14P :
1602
1820
case VIDEO_PIX_FMT_SGBRG14P :
@@ -1629,9 +1847,13 @@ static inline unsigned int video_bits_per_pixel(uint32_t pixfmt)
1629
1847
case VIDEO_PIX_FMT_Y12 :
1630
1848
case VIDEO_PIX_FMT_Y14 :
1631
1849
case VIDEO_PIX_FMT_Y16 :
1850
+ case VIDEO_PIX_FMT_NV16 :
1851
+ case VIDEO_PIX_FMT_NV61 :
1632
1852
return 16 ;
1633
1853
case VIDEO_PIX_FMT_BGR24 :
1634
1854
case VIDEO_PIX_FMT_RGB24 :
1855
+ case VIDEO_PIX_FMT_NV24 :
1856
+ case VIDEO_PIX_FMT_NV42 :
1635
1857
return 24 ;
1636
1858
case VIDEO_PIX_FMT_XRGB32 :
1637
1859
case VIDEO_PIX_FMT_XYUV32 :
0 commit comments