1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
8 .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
10 .. c:type:: v4l2_mbus_framefmt
12 .. flat-table:: struct v4l2_mbus_framefmt
19 - Image width in pixels.
22 - Image height in pixels. If ``field`` is one of ``V4L2_FIELD_TOP``,
23 ``V4L2_FIELD_BOTTOM`` or ``V4L2_FIELD_ALTERNATE`` then height
24 refers to the number of lines in the field, otherwise it refers to
25 the number of lines in the frame (which is twice the field height
26 for interlaced formats).
29 - Format code, from enum
30 :ref:`v4l2_mbus_pixelcode <v4l2-mbus-pixelcode>`.
33 - Field order, from enum :c:type:`v4l2_field`. See
34 :ref:`field-order` for details.
37 - Image colorspace, from enum :c:type:`v4l2_colorspace`.
38 Must be set by the driver for subdevices. If the application sets the
39 flag ``V4L2_MBUS_FRAMEFMT_SET_CSC`` then the application can set this
40 field on the source pad to request a specific colorspace for the media
41 bus data. If the driver cannot handle the requested conversion, it will
42 return another supported colorspace. The driver indicates that colorspace
43 conversion is supported by setting the flag
44 V4L2_SUBDEV_MBUS_CODE_CSC_COLORSPACE in the corresponding struct
45 :c:type:`v4l2_subdev_mbus_code_enum` during enumeration.
46 See :ref:`v4l2-subdev-mbus-code-flags`.
51 - Y'CbCr encoding, from enum :c:type:`v4l2_ycbcr_encoding`.
52 This information supplements the ``colorspace`` and must be set by
53 the driver for subdevices, see :ref:`colorspaces`. If the application
54 sets the flag ``V4L2_MBUS_FRAMEFMT_SET_CSC`` then the application can set
55 this field on a source pad to request a specific Y'CbCr encoding
56 for the media bus data. If the driver cannot handle the requested
57 conversion, it will return another supported encoding.
58 This field is ignored for HSV media bus formats. The driver indicates
59 that ycbcr_enc conversion is supported by setting the flag
60 V4L2_SUBDEV_MBUS_CODE_CSC_YCBCR_ENC in the corresponding struct
61 :c:type:`v4l2_subdev_mbus_code_enum` during enumeration.
62 See :ref:`v4l2-subdev-mbus-code-flags`.
65 - HSV encoding, from enum :c:type:`v4l2_hsv_encoding`.
66 This information supplements the ``colorspace`` and must be set by
67 the driver for subdevices, see :ref:`colorspaces`. If the application
68 sets the flag ``V4L2_MBUS_FRAMEFMT_SET_CSC`` then the application can set
69 this field on a source pad to request a specific HSV encoding
70 for the media bus data. If the driver cannot handle the requested
71 conversion, it will return another supported encoding.
72 This field is ignored for Y'CbCr media bus formats. The driver indicates
73 that hsv_enc conversion is supported by setting the flag
74 V4L2_SUBDEV_MBUS_CODE_CSC_HSV_ENC in the corresponding struct
75 :c:type:`v4l2_subdev_mbus_code_enum` during enumeration.
76 See :ref:`v4l2-subdev-mbus-code-flags`
81 - Quantization range, from enum :c:type:`v4l2_quantization`.
82 This information supplements the ``colorspace`` and must be set by
83 the driver for subdevices, see :ref:`colorspaces`. If the application
84 sets the flag ``V4L2_MBUS_FRAMEFMT_SET_CSC`` then the application can set
85 this field on a source pad to request a specific quantization
86 for the media bus data. If the driver cannot handle the requested
87 conversion, it will return another supported quantization.
88 The driver indicates that quantization conversion is supported by
89 setting the flag V4L2_SUBDEV_MBUS_CODE_CSC_QUANTIZATION in the
90 corresponding struct :c:type:`v4l2_subdev_mbus_code_enum`
91 during enumeration. See :ref:`v4l2-subdev-mbus-code-flags`.
95 - Transfer function, from enum :c:type:`v4l2_xfer_func`.
96 This information supplements the ``colorspace`` and must be set by
97 the driver for subdevices, see :ref:`colorspaces`. If the application
98 sets the flag ``V4L2_MBUS_FRAMEFMT_SET_CSC`` then the application can set
99 this field on a source pad to request a specific transfer
100 function for the media bus data. If the driver cannot handle the requested
101 conversion, it will return another supported transfer function.
102 The driver indicates that the transfer function conversion is supported by
103 setting the flag V4L2_SUBDEV_MBUS_CODE_CSC_XFER_FUNC in the
104 corresponding struct :c:type:`v4l2_subdev_mbus_code_enum`
105 during enumeration. See :ref:`v4l2-subdev-mbus-code-flags`.
108 - flags See: :ref:v4l2-mbus-framefmt-flags
111 - Reserved for future extensions. Applications and drivers must set
114 .. _v4l2-mbus-framefmt-flags:
116 .. flat-table:: v4l2_mbus_framefmt Flags
121 * .. _`mbus-framefmt-set-csc`:
123 - ``V4L2_MBUS_FRAMEFMT_SET_CSC``
125 - Set by the application. It is only used for source pads and is
126 ignored for sink pads. If set, then request the subdevice to do
127 colorspace conversion from the received colorspace to the requested
128 colorspace values. If the colorimetry field (``colorspace``, ``xfer_func``,
129 ``ycbcr_enc``, ``hsv_enc`` or ``quantization``) is set to ``*_DEFAULT``,
130 then that colorimetry setting will remain unchanged from what was received.
131 So in order to change the quantization, only the ``quantization`` field shall
132 be set to non default value (``V4L2_QUANTIZATION_FULL_RANGE`` or
133 ``V4L2_QUANTIZATION_LIM_RANGE``) and all other colorimetry fields shall
134 be set to ``*_DEFAULT``.
136 To check which conversions are supported by the hardware for the current
137 media bus frame format, see :ref:`v4l2-subdev-mbus-code-flags`.
140 .. _v4l2-mbus-pixelcode:
142 Media Bus Pixel Codes
143 ---------------------
145 The media bus pixel codes describe image formats as flowing over
146 physical buses (both between separate physical components and inside
147 SoC devices). This should not be confused with the V4L2 pixel formats
148 that describe, using four character codes, image formats as stored in
151 While there is a relationship between image formats on buses and image
152 formats in memory (a raw Bayer image won't be magically converted to
153 JPEG just by storing it to memory), there is no one-to-one
154 correspondence between them.
156 The media bus pixel codes document parallel formats. Should the pixel data be
157 transported over a serial bus, the media bus pixel code that describes a
158 parallel format that transfers a sample on a single clock cycle is used. For
159 instance, both MEDIA_BUS_FMT_BGR888_1X24 and MEDIA_BUS_FMT_BGR888_3X8 are used
160 on parallel busses for transferring an 8 bits per sample BGR data, whereas on
161 serial busses the data in this format is only referred to using
162 MEDIA_BUS_FMT_BGR888_1X24. This is because there is effectively only a single
163 way to transport that format on the serial busses.
168 Those formats transfer pixel data as red, green and blue components. The
169 format code is made of the following information.
171 - The red, green and blue components order code, as encoded in a pixel
172 sample. Possible values are RGB and BGR.
174 - The number of bits per component, for each component. The values can
175 be different for all components. Common values are 555 and 565.
177 - The number of bus samples per pixel. Pixels that are wider than the
178 bus width must be transferred in multiple samples. Common values are
183 - For formats where the total number of bits per pixel is smaller than
184 the number of bus samples per pixel times the bus width, a padding
185 value stating if the bytes are padded in their most high order bits
186 (PADHI) or low order bits (PADLO). A "C" prefix is used for
187 component-wise padding in the most high order bits (CPADHI) or low
188 order bits (CPADLO) of each separate component.
190 - For formats where the number of bus samples per pixel is larger than
191 1, an endianness value stating if the pixel is transferred MSB first
192 (BE) or LSB first (LE).
194 For instance, a format where pixels are encoded as 5-bits red, 5-bits
195 green and 5-bit blue values padded on the high bit, transferred as 2
196 8-bit samples per pixel with the most significant bits (padding, red and
197 half of the green value) transferred first will be named
198 ``MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE``.
200 The following tables list existing packed RGB formats.
202 .. HACK: ideally, we would be using adjustbox here. However, Sphinx
203 .. is a very bad behaviored guy: if the table has more than 30 cols,
204 .. it switches to long table, and there's no way to override it.
207 .. tabularcolumns:: |p{4.0cm}|p{0.7cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
209 .. _v4l2-mbus-pixelcode-rgb:
215 \setlength{\tabcolsep}{2pt}
217 .. flat-table:: RGB formats
220 :widths: 36 7 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
225 - :cspan:`31` Data organization
261 * .. _MEDIA-BUS-FMT-RGB444-1X12:
263 - MEDIA_BUS_FMT_RGB444_1X12
298 * .. _MEDIA-BUS-FMT-RGB444-2X8-PADHI-BE:
300 - MEDIA_BUS_FMT_RGB444_2X8_PADHI_BE
370 * .. _MEDIA-BUS-FMT-RGB444-2X8-PADHI-LE:
372 - MEDIA_BUS_FMT_RGB444_2X8_PADHI_LE
442 * .. _MEDIA-BUS-FMT-RGB555-2X8-PADHI-BE:
444 - MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE
514 * .. _MEDIA-BUS-FMT-RGB555-2X8-PADHI-LE:
516 - MEDIA_BUS_FMT_RGB555_2X8_PADHI_LE
586 * .. _MEDIA-BUS-FMT-RGB565-1X16:
588 - MEDIA_BUS_FMT_RGB565_1X16
623 * .. _MEDIA-BUS-FMT-BGR565-2X8-BE:
625 - MEDIA_BUS_FMT_BGR565_2X8_BE
695 * .. _MEDIA-BUS-FMT-BGR565-2X8-LE:
697 - MEDIA_BUS_FMT_BGR565_2X8_LE
767 * .. _MEDIA-BUS-FMT-RGB565-2X8-BE:
769 - MEDIA_BUS_FMT_RGB565_2X8_BE
839 * .. _MEDIA-BUS-FMT-RGB565-2X8-LE:
841 - MEDIA_BUS_FMT_RGB565_2X8_LE
911 * .. _MEDIA-BUS-FMT-RGB666-1X18:
913 - MEDIA_BUS_FMT_RGB666_1X18
948 * .. _MEDIA-BUS-FMT-RBG888-1X24:
950 - MEDIA_BUS_FMT_RBG888_1X24
985 * .. _MEDIA-BUS-FMT-RGB666-1X24_CPADHI:
987 - MEDIA_BUS_FMT_RGB666_1X24_CPADHI
1022 * .. _MEDIA-BUS-FMT-BGR888-1X24:
1024 - MEDIA_BUS_FMT_BGR888_1X24
1059 * .. _MEDIA-BUS-FMT-BGR888-3X8:
1061 - MEDIA_BUS_FMT_BGR888_3X8
1166 * .. _MEDIA-BUS-FMT-GBR888-1X24:
1168 - MEDIA_BUS_FMT_GBR888_1X24
1203 * .. _MEDIA-BUS-FMT-RGB888-1X24:
1205 - MEDIA_BUS_FMT_RGB888_1X24
1240 * .. _MEDIA-BUS-FMT-RGB888-2X12-BE:
1242 - MEDIA_BUS_FMT_RGB888_2X12_BE
1312 * .. _MEDIA-BUS-FMT-RGB888-2X12-LE:
1314 - MEDIA_BUS_FMT_RGB888_2X12_LE
1384 * .. _MEDIA-BUS-FMT-RGB888-3X8:
1386 - MEDIA_BUS_FMT_RGB888_3X8
1491 * .. _MEDIA-BUS-FMT-ARGB888-1X32:
1493 - MEDIA_BUS_FMT_ARGB888_1X32
1528 * .. _MEDIA-BUS-FMT-RGB888-1X32-PADHI:
1530 - MEDIA_BUS_FMT_RGB888_1X32_PADHI
1565 * .. _MEDIA-BUS-FMT-RGB101010-1X30:
1567 - MEDIA_BUS_FMT_RGB101010_1X30
1608 The following table list existing packed 36bit wide RGB formats.
1610 .. tabularcolumns:: |p{4.0cm}|p{0.7cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
1612 .. _v4l2-mbus-pixelcode-rgb-36:
1618 \setlength{\tabcolsep}{2pt}
1620 .. flat-table:: 36bit RGB formats
1623 :widths: 36 7 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
1628 - :cspan:`35` Data organization
1668 * .. _MEDIA-BUS-FMT-RGB121212-1X36:
1670 - MEDIA_BUS_FMT_RGB121212_1X36
1715 The following table list existing packed 48bit wide RGB formats.
1717 .. tabularcolumns:: |p{4.0cm}|p{0.7cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
1719 .. _v4l2-mbus-pixelcode-rgb-48:
1725 \setlength{\tabcolsep}{2pt}
1727 .. flat-table:: 48bit RGB formats
1730 :widths: 36 7 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
1735 - :cspan:`31` Data organization
1806 * .. _MEDIA-BUS-FMT-RGB161616-1X48:
1808 - MEDIA_BUS_FMT_RGB161616_1X48
1883 On LVDS buses, usually each sample is transferred serialized in seven
1884 time slots per pixel clock, on three (18-bit) or four (24-bit)
1885 differential data pairs at the same time. The remaining bits are used
1886 for control signals as defined by SPWG/PSWG/VESA or JEIDA standards. The
1887 24-bit RGB format serialized in seven time slots on four lanes using
1888 JEIDA defined bit mapping will be named
1889 ``MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA``, for example.
1895 .. _v4l2-mbus-pixelcode-rgb-lvds:
1897 .. flat-table:: LVDS RGB formats
1905 - :cspan:`3` Data organization
1914 * .. _MEDIA-BUS-FMT-RGB666-1X7X3-SPWG:
1916 - MEDIA_BUS_FMT_RGB666_1X7X3_SPWG
1972 * .. _MEDIA-BUS-FMT-RGB888-1X7X4-SPWG:
1974 - MEDIA_BUS_FMT_RGB888_1X7X4_SPWG
2030 * .. _MEDIA-BUS-FMT-RGB888-1X7X4-JEIDA:
2032 - MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA
2097 Those formats transfer pixel data as red, green and blue components. The
2098 format code is made of the following information.
2100 - The red, green and blue components order code, as encoded in a pixel
2101 sample. The possible values are shown in :ref:`bayer-patterns`.
2103 - The number of bits per pixel component. All components are
2104 transferred on the same number of bits. Common values are 8, 10 and
2107 - The compression (optional). If the pixel components are ALAW- or
2108 DPCM-compressed, a mention of the compression scheme and the number
2109 of bits per compressed pixel component.
2111 - The number of bus samples per pixel. Pixels that are wider than the
2112 bus width must be transferred in multiple samples. Common values are
2117 - For formats where the total number of bits per pixel is smaller than
2118 the number of bus samples per pixel times the bus width, a padding
2119 value stating if the bytes are padded in their most high order bits
2120 (PADHI) or low order bits (PADLO).
2122 - For formats where the number of bus samples per pixel is larger than
2123 1, an endianness value stating if the pixel is transferred MSB first
2124 (BE) or LSB first (LE).
2126 For instance, a format with uncompressed 10-bit Bayer components
2127 arranged in a red, green, green, blue pattern transferred as 2 8-bit
2128 samples per pixel with the least significant bits transferred first will
2129 be named ``MEDIA_BUS_FMT_SRGGB10_2X8_PADHI_LE``.
2134 .. kernel-figure:: bayer.svg
2138 **Figure 4.8 Bayer Patterns**
2140 The following table lists existing packed Bayer formats. The data
2141 organization is given as an example for the first pixel only.
2144 .. HACK: ideally, we would be using adjustbox here. However, Sphinx
2145 .. is a very bad behaviored guy: if the table has more than 30 cols,
2146 .. it switches to long table, and there's no way to override it.
2153 \setlength{\tabcolsep}{2pt}
2155 .. tabularcolumns:: |p{4.0cm}|p{0.7cm}|p{0.3cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
2157 .. _v4l2-mbus-pixelcode-bayer:
2159 .. cssclass: longtable
2161 .. flat-table:: Bayer Formats
2168 - :cspan:`15` Data organization
2188 * .. _MEDIA-BUS-FMT-SBGGR8-1X8:
2190 - MEDIA_BUS_FMT_SBGGR8_1X8
2209 * .. _MEDIA-BUS-FMT-SGBRG8-1X8:
2211 - MEDIA_BUS_FMT_SGBRG8_1X8
2230 * .. _MEDIA-BUS-FMT-SGRBG8-1X8:
2232 - MEDIA_BUS_FMT_SGRBG8_1X8
2251 * .. _MEDIA-BUS-FMT-SRGGB8-1X8:
2253 - MEDIA_BUS_FMT_SRGGB8_1X8
2272 * .. _MEDIA-BUS-FMT-SBGGR10-ALAW8-1X8:
2274 - MEDIA_BUS_FMT_SBGGR10_ALAW8_1X8
2293 * .. _MEDIA-BUS-FMT-SGBRG10-ALAW8-1X8:
2295 - MEDIA_BUS_FMT_SGBRG10_ALAW8_1X8
2314 * .. _MEDIA-BUS-FMT-SGRBG10-ALAW8-1X8:
2316 - MEDIA_BUS_FMT_SGRBG10_ALAW8_1X8
2335 * .. _MEDIA-BUS-FMT-SRGGB10-ALAW8-1X8:
2337 - MEDIA_BUS_FMT_SRGGB10_ALAW8_1X8
2356 * .. _MEDIA-BUS-FMT-SBGGR10-DPCM8-1X8:
2358 - MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8
2377 * .. _MEDIA-BUS-FMT-SGBRG10-DPCM8-1X8:
2379 - MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8
2398 * .. _MEDIA-BUS-FMT-SGRBG10-DPCM8-1X8:
2400 - MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8
2419 * .. _MEDIA-BUS-FMT-SRGGB10-DPCM8-1X8:
2421 - MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8
2440 * .. _MEDIA-BUS-FMT-SBGGR10-2X8-PADHI-BE:
2442 - MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_BE
2480 * .. _MEDIA-BUS-FMT-SBGGR10-2X8-PADHI-LE:
2482 - MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE
2520 * .. _MEDIA-BUS-FMT-SBGGR10-2X8-PADLO-BE:
2522 - MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_BE
2560 * .. _MEDIA-BUS-FMT-SBGGR10-2X8-PADLO-LE:
2562 - MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_LE
2600 * .. _MEDIA-BUS-FMT-SBGGR10-1X10:
2602 - MEDIA_BUS_FMT_SBGGR10_1X10
2621 * .. _MEDIA-BUS-FMT-SGBRG10-1X10:
2623 - MEDIA_BUS_FMT_SGBRG10_1X10
2642 * .. _MEDIA-BUS-FMT-SGRBG10-1X10:
2644 - MEDIA_BUS_FMT_SGRBG10_1X10
2663 * .. _MEDIA-BUS-FMT-SRGGB10-1X10:
2665 - MEDIA_BUS_FMT_SRGGB10_1X10
2684 * .. _MEDIA-BUS-FMT-SBGGR12-1X12:
2686 - MEDIA_BUS_FMT_SBGGR12_1X12
2705 * .. _MEDIA-BUS-FMT-SGBRG12-1X12:
2707 - MEDIA_BUS_FMT_SGBRG12_1X12
2726 * .. _MEDIA-BUS-FMT-SGRBG12-1X12:
2728 - MEDIA_BUS_FMT_SGRBG12_1X12
2747 * .. _MEDIA-BUS-FMT-SRGGB12-1X12:
2749 - MEDIA_BUS_FMT_SRGGB12_1X12
2768 * .. _MEDIA-BUS-FMT-SBGGR14-1X14:
2770 - MEDIA_BUS_FMT_SBGGR14_1X14
2789 * .. _MEDIA-BUS-FMT-SGBRG14-1X14:
2791 - MEDIA_BUS_FMT_SGBRG14_1X14
2810 * .. _MEDIA-BUS-FMT-SGRBG14-1X14:
2812 - MEDIA_BUS_FMT_SGRBG14_1X14
2831 * .. _MEDIA-BUS-FMT-SRGGB14-1X14:
2833 - MEDIA_BUS_FMT_SRGGB14_1X14
2852 * .. _MEDIA-BUS-FMT-SBGGR16-1X16:
2854 - MEDIA_BUS_FMT_SBGGR16_1X16
2873 * .. _MEDIA-BUS-FMT-SGBRG16-1X16:
2875 - MEDIA_BUS_FMT_SGBRG16_1X16
2894 * .. _MEDIA-BUS-FMT-SGRBG16-1X16:
2896 - MEDIA_BUS_FMT_SGRBG16_1X16
2915 * .. _MEDIA-BUS-FMT-SRGGB16-1X16:
2917 - MEDIA_BUS_FMT_SRGGB16_1X16
2945 Those data formats transfer pixel data as (possibly downsampled) Y, U
2946 and V components. Some formats include dummy bits in some of their
2947 samples and are collectively referred to as "YDYC" (Y-Dummy-Y-Chroma)
2948 formats. One cannot rely on the values of these dummy bits as those are
2951 The format code is made of the following information.
2953 - The Y, U and V components order code, as transferred on the bus.
2954 Possible values are YUYV, UYVY, YVYU and VYUY for formats with no
2955 dummy bit, and YDYUYDYV, YDYVYDYU, YUYDYVYD and YVYDYUYD for YDYC
2958 - The number of bits per pixel component. All components are
2959 transferred on the same number of bits. Common values are 8, 10 and
2962 - The number of bus samples per pixel. Pixels that are wider than the
2963 bus width must be transferred in multiple samples. Common values are
2964 0.5 (encoded as 0_5; in this case two pixels are transferred per bus
2965 sample), 1, 1.5 (encoded as 1_5) and 2.
2967 - The bus width. When the bus width is larger than the number of bits
2968 per pixel component, several components are packed in a single bus
2969 sample. The components are ordered as specified by the order code,
2970 with components on the left of the code transferred in the high order
2971 bits. Common values are 8 and 16.
2973 For instance, a format where pixels are encoded as 8-bit YUV values
2974 downsampled to 4:2:2 and transferred as 2 8-bit bus samples per pixel in
2975 the U, Y, V, Y order will be named ``MEDIA_BUS_FMT_UYVY8_2X8``.
2977 :ref:`v4l2-mbus-pixelcode-yuv8` lists existing packed YUV formats and
2978 describes the organization of each pixel data in each sample. When a
2979 format pattern is split across multiple samples each of the samples in
2980 the pattern is described.
2982 The role of each bit transferred over the bus is identified by one of
2983 the following codes.
2985 - y\ :sub:`x` for luma component bit number x
2987 - u\ :sub:`x` for blue chroma component bit number x
2989 - v\ :sub:`x` for red chroma component bit number x
2991 - a\ :sub:`x` for alpha component bit number x
2993 - for non-available bits (for positions higher than the bus width)
2997 .. HACK: ideally, we would be using adjustbox here. However, this
2998 .. will never work for this table, as, even with tiny font, it is
2999 .. to big for a single page. So, we need to manually adjust the
3006 \setlength{\tabcolsep}{2pt}
3008 .. tabularcolumns:: |p{4.0cm}|p{0.7cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
3010 .. _v4l2-mbus-pixelcode-yuv8:
3012 .. flat-table:: YUV Formats
3015 :widths: 36 7 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
3020 - :cspan:`31` Data organization
3056 * .. _MEDIA-BUS-FMT-Y8-1X8:
3058 - MEDIA_BUS_FMT_Y8_1X8
3093 * .. _MEDIA-BUS-FMT-UV8-1X8:
3095 - MEDIA_BUS_FMT_UV8_1X8
3165 * .. _MEDIA-BUS-FMT-UYVY8-1_5X8:
3167 - MEDIA_BUS_FMT_UYVY8_1_5X8
3377 * .. _MEDIA-BUS-FMT-VYUY8-1_5X8:
3379 - MEDIA_BUS_FMT_VYUY8_1_5X8
3589 * .. _MEDIA-BUS-FMT-YUYV8-1_5X8:
3591 - MEDIA_BUS_FMT_YUYV8_1_5X8
3801 * .. _MEDIA-BUS-FMT-YVYU8-1_5X8:
3803 - MEDIA_BUS_FMT_YVYU8_1_5X8
4013 * .. _MEDIA-BUS-FMT-UYVY8-2X8:
4015 - MEDIA_BUS_FMT_UYVY8_2X8
4155 * .. _MEDIA-BUS-FMT-VYUY8-2X8:
4157 - MEDIA_BUS_FMT_VYUY8_2X8
4297 * .. _MEDIA-BUS-FMT-YUYV8-2X8:
4299 - MEDIA_BUS_FMT_YUYV8_2X8
4439 * .. _MEDIA-BUS-FMT-YVYU8-2X8:
4441 - MEDIA_BUS_FMT_YVYU8_2X8
4581 * .. _MEDIA-BUS-FMT-Y10-1X10:
4583 - MEDIA_BUS_FMT_Y10_1X10
4618 * .. _MEDIA-BUS-FMT-Y10-2X8-PADHI_LE:
4620 - MEDIA_BUS_FMT_Y10_2X8_PADHI_LE
4690 * .. _MEDIA-BUS-FMT-UYVY10-2X10:
4692 - MEDIA_BUS_FMT_UYVY10_2X10
4832 * .. _MEDIA-BUS-FMT-VYUY10-2X10:
4834 - MEDIA_BUS_FMT_VYUY10_2X10
4974 * .. _MEDIA-BUS-FMT-YUYV10-2X10:
4976 - MEDIA_BUS_FMT_YUYV10_2X10
5116 * .. _MEDIA-BUS-FMT-YVYU10-2X10:
5118 - MEDIA_BUS_FMT_YVYU10_2X10
5258 * .. _MEDIA-BUS-FMT-Y12-1X12:
5260 - MEDIA_BUS_FMT_Y12_1X12
5295 * .. _MEDIA-BUS-FMT-UYVY12-2X12:
5297 - MEDIA_BUS_FMT_UYVY12_2X12
5437 * .. _MEDIA-BUS-FMT-VYUY12-2X12:
5439 - MEDIA_BUS_FMT_VYUY12_2X12
5579 * .. _MEDIA-BUS-FMT-YUYV12-2X12:
5581 - MEDIA_BUS_FMT_YUYV12_2X12
5721 * .. _MEDIA-BUS-FMT-YVYU12-2X12:
5723 - MEDIA_BUS_FMT_YVYU12_2X12
5863 * .. _MEDIA-BUS-FMT-Y14-1X14:
5865 - MEDIA_BUS_FMT_Y14_1X14
5900 * .. _MEDIA-BUS-FMT-UYVY8-1X16:
5902 - MEDIA_BUS_FMT_UYVY8_1X16
5972 * .. _MEDIA-BUS-FMT-VYUY8-1X16:
5974 - MEDIA_BUS_FMT_VYUY8_1X16
6044 * .. _MEDIA-BUS-FMT-YUYV8-1X16:
6046 - MEDIA_BUS_FMT_YUYV8_1X16
6116 * .. _MEDIA-BUS-FMT-YVYU8-1X16:
6118 - MEDIA_BUS_FMT_YVYU8_1X16
6188 * .. _MEDIA-BUS-FMT-YDYUYDYV8-1X16:
6190 - MEDIA_BUS_FMT_YDYUYDYV8_1X16
6330 * .. _MEDIA-BUS-FMT-UYVY10-1X20:
6332 - MEDIA_BUS_FMT_UYVY10_1X20
6402 * .. _MEDIA-BUS-FMT-VYUY10-1X20:
6404 - MEDIA_BUS_FMT_VYUY10_1X20
6474 * .. _MEDIA-BUS-FMT-YUYV10-1X20:
6476 - MEDIA_BUS_FMT_YUYV10_1X20
6546 * .. _MEDIA-BUS-FMT-YVYU10-1X20:
6548 - MEDIA_BUS_FMT_YVYU10_1X20
6618 * .. _MEDIA-BUS-FMT-VUY8-1X24:
6620 - MEDIA_BUS_FMT_VUY8_1X24
6655 * .. _MEDIA-BUS-FMT-YUV8-1X24:
6657 - MEDIA_BUS_FMT_YUV8_1X24
6692 * .. _MEDIA-BUS-FMT-UYYVYY8-0-5X24:
6694 - MEDIA_BUS_FMT_UYYVYY8_0_5X24
6764 * .. _MEDIA-BUS-FMT-UYVY12-1X24:
6766 - MEDIA_BUS_FMT_UYVY12_1X24
6836 * .. _MEDIA-BUS-FMT-VYUY12-1X24:
6838 - MEDIA_BUS_FMT_VYUY12_1X24
6908 * .. _MEDIA-BUS-FMT-YUYV12-1X24:
6910 - MEDIA_BUS_FMT_YUYV12_1X24
6980 * .. _MEDIA-BUS-FMT-YVYU12-1X24:
6982 - MEDIA_BUS_FMT_YVYU12_1X24
7052 * .. _MEDIA-BUS-FMT-YUV10-1X30:
7054 - MEDIA_BUS_FMT_YUV10_1X30
7089 * .. _MEDIA-BUS-FMT-UYYVYY10-0-5X30:
7091 - MEDIA_BUS_FMT_UYYVYY10_0_5X30
7161 * .. _MEDIA-BUS-FMT-AYUV8-1X32:
7163 - MEDIA_BUS_FMT_AYUV8_1X32
7205 The following table list existing packed 36bit wide YUV formats.
7211 \setlength{\tabcolsep}{2pt}
7213 .. tabularcolumns:: |p{4.0cm}|p{0.7cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
7215 .. _v4l2-mbus-pixelcode-yuv8-36bit:
7217 .. flat-table:: 36bit YUV Formats
7220 :widths: 36 7 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
7225 - :cspan:`35` Data organization
7265 * .. _MEDIA-BUS-FMT-UYYVYY12-0-5X36:
7267 - MEDIA_BUS_FMT_UYYVYY12_0_5X36
7345 * .. _MEDIA-BUS-FMT-YUV12-1X36:
7347 - MEDIA_BUS_FMT_YUV12_1X36
7393 The following table list existing packed 48bit wide YUV formats.
7399 \setlength{\tabcolsep}{2pt}
7401 .. tabularcolumns:: |p{4.0cm}|p{0.7cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
7403 .. _v4l2-mbus-pixelcode-yuv8-48bit:
7405 .. flat-table:: 48bit YUV Formats
7408 :widths: 36 7 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
7413 - :cspan:`31` Data organization
7484 * .. _MEDIA-BUS-FMT-YUV16-1X48:
7486 - MEDIA_BUS_FMT_YUV16_1X48
7556 * .. _MEDIA-BUS-FMT-UYYVYY16-0-5X48:
7558 - MEDIA_BUS_FMT_UYYVYY16_0_5X48
7707 Those formats transfer pixel data as RGB values in a
7708 cylindrical-coordinate system using Hue-Saturation-Value or
7709 Hue-Saturation-Lightness components. The format code is made of the
7710 following information.
7712 - The hue, saturation, value or lightness and optional alpha components
7713 order code, as encoded in a pixel sample. The only currently
7714 supported value is AHSV.
7716 - The number of bits per component, for each component. The values can
7717 be different for all components. The only currently supported value
7720 - The number of bus samples per pixel. Pixels that are wider than the
7721 bus width must be transferred in multiple samples. The only currently
7722 supported value is 1.
7726 - For formats where the total number of bits per pixel is smaller than
7727 the number of bus samples per pixel times the bus width, a padding
7728 value stating if the bytes are padded in their most high order bits
7729 (PADHI) or low order bits (PADLO).
7731 - For formats where the number of bus samples per pixel is larger than
7732 1, an endianness value stating if the pixel is transferred MSB first
7733 (BE) or LSB first (LE).
7735 The following table lists existing HSV/HSL formats.
7742 \setlength{\tabcolsep}{2pt}
7744 .. tabularcolumns:: |p{3.9cm}|p{0.73cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
7746 .. _v4l2-mbus-pixelcode-hsv:
7748 .. flat-table:: HSV/HSL formats
7751 :widths: 28 7 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
7756 - :cspan:`31` Data organization
7792 * .. _MEDIA-BUS-FMT-AHSV8888-1X32:
7794 - MEDIA_BUS_FMT_AHSV8888_1X32
7835 JPEG Compressed Formats
7836 ^^^^^^^^^^^^^^^^^^^^^^^
7838 Those data formats consist of an ordered sequence of 8-bit bytes
7839 obtained from JPEG compression process. Additionally to the ``_JPEG``
7840 postfix the format code is made of the following information.
7842 - The number of bus samples per entropy encoded byte.
7846 For instance, for a JPEG baseline process and an 8-bit bus width the
7847 format will be named ``MEDIA_BUS_FMT_JPEG_1X8``.
7849 The following table lists existing JPEG compressed formats.
7852 .. _v4l2-mbus-pixelcode-jpeg:
7854 .. tabularcolumns:: |p{6.0cm}|p{1.4cm}|p{10.1cm}|
7856 .. flat-table:: JPEG Formats
7863 * .. _MEDIA-BUS-FMT-JPEG-1X8:
7865 - MEDIA_BUS_FMT_JPEG_1X8
7867 - Besides of its usage for the parallel bus this format is
7868 recommended for transmission of JPEG data over MIPI CSI bus using
7869 the User Defined 8-bit Data types.
7873 .. _v4l2-mbus-vendor-spec-fmts:
7875 Vendor and Device Specific Formats
7876 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7878 This section lists complex data formats that are either vendor or device
7881 The following table lists the existing vendor and device specific
7885 .. _v4l2-mbus-pixelcode-vendor-specific:
7887 .. tabularcolumns:: |p{8.0cm}|p{1.4cm}|p{7.7cm}|
7889 .. flat-table:: Vendor and device specific formats
7896 * .. _MEDIA-BUS-FMT-S5C-UYVY-JPEG-1X8:
7898 - MEDIA_BUS_FMT_S5C_UYVY_JPEG_1X8
7900 - Interleaved raw UYVY and JPEG image format with embedded meta-data
7901 used by Samsung S3C73MX camera sensors.