@@ -1540,6 +1540,220 @@ int64_t video_get_csi_link_freq(const struct device *dev, uint8_t bpp, uint8_t l
1540
1540
*/
1541
1541
#define VIDEO_PIX_FMT_XYUV32 VIDEO_FOURCC('X', 'Y', 'U', 'V')
1542
1542
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
+
1543
1757
/**
1544
1758
* @}
1545
1759
*/
@@ -1586,6 +1800,10 @@ static inline unsigned int video_bits_per_pixel(uint32_t pixfmt)
1586
1800
case VIDEO_PIX_FMT_SGRBG12P :
1587
1801
case VIDEO_PIX_FMT_SRGGB12P :
1588
1802
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 :
1589
1807
return 12 ;
1590
1808
case VIDEO_PIX_FMT_SBGGR14P :
1591
1809
case VIDEO_PIX_FMT_SGBRG14P :
@@ -1618,9 +1836,13 @@ static inline unsigned int video_bits_per_pixel(uint32_t pixfmt)
1618
1836
case VIDEO_PIX_FMT_Y12 :
1619
1837
case VIDEO_PIX_FMT_Y14 :
1620
1838
case VIDEO_PIX_FMT_Y16 :
1839
+ case VIDEO_PIX_FMT_NV16 :
1840
+ case VIDEO_PIX_FMT_NV61 :
1621
1841
return 16 ;
1622
1842
case VIDEO_PIX_FMT_BGR24 :
1623
1843
case VIDEO_PIX_FMT_RGB24 :
1844
+ case VIDEO_PIX_FMT_NV24 :
1845
+ case VIDEO_PIX_FMT_NV42 :
1624
1846
return 24 ;
1625
1847
case VIDEO_PIX_FMT_XRGB32 :
1626
1848
case VIDEO_PIX_FMT_XYUV32 :
0 commit comments