@@ -1551,6 +1551,196 @@ 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
+ * 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
+
1554
1744
/**
1555
1745
* @}
1556
1746
*/
@@ -1597,6 +1787,10 @@ static inline unsigned int video_bits_per_pixel(uint32_t pixfmt)
1597
1787
case VIDEO_PIX_FMT_SGRBG12P :
1598
1788
case VIDEO_PIX_FMT_SRGGB12P :
1599
1789
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 :
1600
1794
return 12 ;
1601
1795
case VIDEO_PIX_FMT_SBGGR14P :
1602
1796
case VIDEO_PIX_FMT_SGBRG14P :
@@ -1629,9 +1823,13 @@ static inline unsigned int video_bits_per_pixel(uint32_t pixfmt)
1629
1823
case VIDEO_PIX_FMT_Y12 :
1630
1824
case VIDEO_PIX_FMT_Y14 :
1631
1825
case VIDEO_PIX_FMT_Y16 :
1826
+ case VIDEO_PIX_FMT_NV16 :
1827
+ case VIDEO_PIX_FMT_NV61 :
1632
1828
return 16 ;
1633
1829
case VIDEO_PIX_FMT_BGR24 :
1634
1830
case VIDEO_PIX_FMT_RGB24 :
1831
+ case VIDEO_PIX_FMT_NV24 :
1832
+ case VIDEO_PIX_FMT_NV42 :
1635
1833
return 24 ;
1636
1834
case VIDEO_PIX_FMT_XRGB32 :
1637
1835
case VIDEO_PIX_FMT_XYUV32 :
0 commit comments