1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
8 .. c:type:: v4l2_mbus_framefmt
10 .. tabularcolumns:: |p{2.0cm}|p{4.0cm}|p{11.3cm}|
12 .. cssclass:: longtable
14 .. flat-table:: struct v4l2_mbus_framefmt
21 - Image width in pixels.
24 - Image height in pixels. If ``field`` is one of ``V4L2_FIELD_TOP``,
25 ``V4L2_FIELD_BOTTOM`` or ``V4L2_FIELD_ALTERNATE`` then height
26 refers to the number of lines in the field, otherwise it refers to
27 the number of lines in the frame (which is twice the field height
28 for interlaced formats).
31 - Format code, from enum
32 :ref:`v4l2_mbus_pixelcode <v4l2-mbus-pixelcode>`.
35 - Field order, from enum :c:type:`v4l2_field`. See
36 :ref:`field-order` for details.
39 - Image colorspace, from enum :c:type:`v4l2_colorspace`.
40 Must be set by the driver for subdevices. If the application sets the
41 flag ``V4L2_MBUS_FRAMEFMT_SET_CSC`` then the application can set this
42 field on the source pad to request a specific colorspace for the media
43 bus data. If the driver cannot handle the requested conversion, it will
44 return another supported colorspace. The driver indicates that colorspace
45 conversion is supported by setting the flag
46 V4L2_SUBDEV_MBUS_CODE_CSC_COLORSPACE in the corresponding struct
47 :c:type:`v4l2_subdev_mbus_code_enum` during enumeration.
48 See :ref:`v4l2-subdev-mbus-code-flags`.
53 - Y'CbCr encoding, from enum :c:type:`v4l2_ycbcr_encoding`.
54 This information supplements the ``colorspace`` and must be set by
55 the driver for subdevices, see :ref:`colorspaces`. If the application
56 sets the flag ``V4L2_MBUS_FRAMEFMT_SET_CSC`` then the application can set
57 this field on a source pad to request a specific Y'CbCr encoding
58 for the media bus data. If the driver cannot handle the requested
59 conversion, it will return another supported encoding.
60 This field is ignored for HSV media bus formats. The driver indicates
61 that ycbcr_enc conversion is supported by setting the flag
62 V4L2_SUBDEV_MBUS_CODE_CSC_YCBCR_ENC in the corresponding struct
63 :c:type:`v4l2_subdev_mbus_code_enum` during enumeration.
64 See :ref:`v4l2-subdev-mbus-code-flags`.
67 - HSV encoding, from enum :c:type:`v4l2_hsv_encoding`.
68 This information supplements the ``colorspace`` and must be set by
69 the driver for subdevices, see :ref:`colorspaces`. If the application
70 sets the flag ``V4L2_MBUS_FRAMEFMT_SET_CSC`` then the application can set
71 this field on a source pad to request a specific HSV encoding
72 for the media bus data. If the driver cannot handle the requested
73 conversion, it will return another supported encoding.
74 This field is ignored for Y'CbCr media bus formats. The driver indicates
75 that hsv_enc conversion is supported by setting the flag
76 V4L2_SUBDEV_MBUS_CODE_CSC_HSV_ENC in the corresponding struct
77 :c:type:`v4l2_subdev_mbus_code_enum` during enumeration.
78 See :ref:`v4l2-subdev-mbus-code-flags`
83 - Quantization range, from enum :c:type:`v4l2_quantization`.
84 This information supplements the ``colorspace`` and must be set by
85 the driver for subdevices, see :ref:`colorspaces`. If the application
86 sets the flag ``V4L2_MBUS_FRAMEFMT_SET_CSC`` then the application can set
87 this field on a source pad to request a specific quantization
88 for the media bus data. If the driver cannot handle the requested
89 conversion, it will return another supported quantization.
90 The driver indicates that quantization conversion is supported by
91 setting the flag V4L2_SUBDEV_MBUS_CODE_CSC_QUANTIZATION in the
92 corresponding struct :c:type:`v4l2_subdev_mbus_code_enum`
93 during enumeration. See :ref:`v4l2-subdev-mbus-code-flags`.
97 - Transfer function, from enum :c:type:`v4l2_xfer_func`.
98 This information supplements the ``colorspace`` and must be set by
99 the driver for subdevices, see :ref:`colorspaces`. If the application
100 sets the flag ``V4L2_MBUS_FRAMEFMT_SET_CSC`` then the application can set
101 this field on a source pad to request a specific transfer
102 function for the media bus data. If the driver cannot handle the requested
103 conversion, it will return another supported transfer function.
104 The driver indicates that the transfer function conversion is supported by
105 setting the flag V4L2_SUBDEV_MBUS_CODE_CSC_XFER_FUNC in the
106 corresponding struct :c:type:`v4l2_subdev_mbus_code_enum`
107 during enumeration. See :ref:`v4l2-subdev-mbus-code-flags`.
110 - flags See: :ref:v4l2-mbus-framefmt-flags
113 - Reserved for future extensions. Applications and drivers must set
116 .. _v4l2-mbus-framefmt-flags:
118 .. tabularcolumns:: |p{6.5cm}|p{1.6cm}|p{9.2cm}|
120 .. flat-table:: v4l2_mbus_framefmt Flags
125 * .. _`mbus-framefmt-set-csc`:
127 - ``V4L2_MBUS_FRAMEFMT_SET_CSC``
129 - Set by the application. It is only used for source pads and is
130 ignored for sink pads. If set, then request the subdevice to do
131 colorspace conversion from the received colorspace to the requested
132 colorspace values. If the colorimetry field (``colorspace``, ``xfer_func``,
133 ``ycbcr_enc``, ``hsv_enc`` or ``quantization``) is set to ``*_DEFAULT``,
134 then that colorimetry setting will remain unchanged from what was received.
135 So in order to change the quantization, only the ``quantization`` field shall
136 be set to non default value (``V4L2_QUANTIZATION_FULL_RANGE`` or
137 ``V4L2_QUANTIZATION_LIM_RANGE``) and all other colorimetry fields shall
138 be set to ``*_DEFAULT``.
140 To check which conversions are supported by the hardware for the current
141 media bus frame format, see :ref:`v4l2-subdev-mbus-code-flags`.
144 .. _v4l2-mbus-pixelcode:
146 Media Bus Pixel Codes
147 ---------------------
149 The media bus pixel codes describe image formats as flowing over
150 physical buses (both between separate physical components and inside
151 SoC devices). This should not be confused with the V4L2 pixel formats
152 that describe, using four character codes, image formats as stored in
155 While there is a relationship between image formats on buses and image
156 formats in memory (a raw Bayer image won't be magically converted to
157 JPEG just by storing it to memory), there is no one-to-one
158 correspondence between them.
160 The media bus pixel codes document parallel formats. Should the pixel data be
161 transported over a serial bus, the media bus pixel code that describes a
162 parallel format that transfers a sample on a single clock cycle is used. For
163 instance, both MEDIA_BUS_FMT_BGR888_1X24 and MEDIA_BUS_FMT_BGR888_3X8 are used
164 on parallel busses for transferring an 8 bits per sample BGR data, whereas on
165 serial busses the data in this format is only referred to using
166 MEDIA_BUS_FMT_BGR888_1X24. This is because there is effectively only a single
167 way to transport that format on the serial busses.
172 Those formats transfer pixel data as red, green and blue components. The
173 format code is made of the following information.
175 - The red, green and blue components order code, as encoded in a pixel
176 sample. Possible values are RGB and BGR.
178 - The number of bits per component, for each component. The values can
179 be different for all components. Common values are 555 and 565.
181 - The number of bus samples per pixel. Pixels that are wider than the
182 bus width must be transferred in multiple samples. Common values are
187 - For formats where the total number of bits per pixel is smaller than
188 the number of bus samples per pixel times the bus width, a padding
189 value stating if the bytes are padded in their most high order bits
190 (PADHI) or low order bits (PADLO). A "C" prefix is used for
191 component-wise padding in the most high order bits (CPADHI) or low
192 order bits (CPADLO) of each separate component.
194 - For formats where the number of bus samples per pixel is larger than
195 1, an endianness value stating if the pixel is transferred MSB first
196 (BE) or LSB first (LE).
198 For instance, a format where pixels are encoded as 5-bits red, 5-bits
199 green and 5-bit blue values padded on the high bit, transferred as 2
200 8-bit samples per pixel with the most significant bits (padding, red and
201 half of the green value) transferred first will be named
202 ``MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE``.
204 The following tables list existing packed RGB formats.
206 .. HACK: ideally, we would be using adjustbox here. However, Sphinx
207 .. is a very bad behaviored guy: if the table has more than 30 cols,
208 .. it switches to long table, and there's no way to override it.
211 .. tabularcolumns:: |p{5.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}|
213 .. _v4l2-mbus-pixelcode-rgb:
219 \setlength{\tabcolsep}{2pt}
221 .. flat-table:: RGB formats
224 :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
229 - :cspan:`31` Data organization
265 * .. _MEDIA-BUS-FMT-RGB444-1X12:
267 - MEDIA_BUS_FMT_RGB444_1X12
302 * .. _MEDIA-BUS-FMT-RGB444-2X8-PADHI-BE:
304 - MEDIA_BUS_FMT_RGB444_2X8_PADHI_BE
374 * .. _MEDIA-BUS-FMT-RGB444-2X8-PADHI-LE:
376 - MEDIA_BUS_FMT_RGB444_2X8_PADHI_LE
446 * .. _MEDIA-BUS-FMT-RGB555-2X8-PADHI-BE:
448 - MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE
518 * .. _MEDIA-BUS-FMT-RGB555-2X8-PADHI-LE:
520 - MEDIA_BUS_FMT_RGB555_2X8_PADHI_LE
590 * .. _MEDIA-BUS-FMT-RGB565-1X16:
592 - MEDIA_BUS_FMT_RGB565_1X16
627 * .. _MEDIA-BUS-FMT-BGR565-2X8-BE:
629 - MEDIA_BUS_FMT_BGR565_2X8_BE
699 * .. _MEDIA-BUS-FMT-BGR565-2X8-LE:
701 - MEDIA_BUS_FMT_BGR565_2X8_LE
771 * .. _MEDIA-BUS-FMT-RGB565-2X8-BE:
773 - MEDIA_BUS_FMT_RGB565_2X8_BE
843 * .. _MEDIA-BUS-FMT-RGB565-2X8-LE:
845 - MEDIA_BUS_FMT_RGB565_2X8_LE
915 * .. _MEDIA-BUS-FMT-RGB666-1X18:
917 - MEDIA_BUS_FMT_RGB666_1X18
952 * .. _MEDIA-BUS-FMT-RBG888-1X24:
954 - MEDIA_BUS_FMT_RBG888_1X24
989 * .. _MEDIA-BUS-FMT-RGB666-1X24_CPADHI:
991 - MEDIA_BUS_FMT_RGB666_1X24_CPADHI
1026 * .. _MEDIA-BUS-FMT-BGR888-1X24:
1028 - MEDIA_BUS_FMT_BGR888_1X24
1063 * .. _MEDIA-BUS-FMT-BGR888-3X8:
1065 - MEDIA_BUS_FMT_BGR888_3X8
1170 * .. _MEDIA-BUS-FMT-GBR888-1X24:
1172 - MEDIA_BUS_FMT_GBR888_1X24
1207 * .. _MEDIA-BUS-FMT-RGB888-1X24:
1209 - MEDIA_BUS_FMT_RGB888_1X24
1244 * .. _MEDIA-BUS-FMT-RGB888-2X12-BE:
1246 - MEDIA_BUS_FMT_RGB888_2X12_BE
1316 * .. _MEDIA-BUS-FMT-RGB888-2X12-LE:
1318 - MEDIA_BUS_FMT_RGB888_2X12_LE
1388 * .. _MEDIA-BUS-FMT-RGB888-3X8:
1390 - MEDIA_BUS_FMT_RGB888_3X8
1495 * .. _MEDIA-BUS-FMT-RGB666-1X30-CPADLO:
1497 - MEDIA_BUS_FMT_RGB666_1X30-CPADLO
1532 * .. _MEDIA-BUS-FMT-RGB888-1X30-CPADLO:
1534 - MEDIA_BUS_FMT_RGB888_1X30-CPADLO
1569 * .. _MEDIA-BUS-FMT-ARGB888-1X32:
1571 - MEDIA_BUS_FMT_ARGB888_1X32
1606 * .. _MEDIA-BUS-FMT-RGB888-1X32-PADHI:
1608 - MEDIA_BUS_FMT_RGB888_1X32_PADHI
1643 * .. _MEDIA-BUS-FMT-RGB101010-1X30:
1645 - MEDIA_BUS_FMT_RGB101010_1X30
1686 The following table list existing packed 36bit wide RGB formats.
1688 .. 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}|
1690 .. _v4l2-mbus-pixelcode-rgb-36:
1696 \setlength{\tabcolsep}{2pt}
1698 .. flat-table:: 36bit RGB formats
1701 :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
1706 - :cspan:`35` Data organization
1746 * .. _MEDIA-BUS-FMT-RGB666-1X36-CPADLO:
1748 - MEDIA_BUS_FMT_RGB666_1X36_CPADLO
1787 * .. _MEDIA-BUS-FMT-RGB888-1X36-CPADLO:
1789 - MEDIA_BUS_FMT_RGB888_1X36_CPADLO
1828 * .. _MEDIA-BUS-FMT-RGB121212-1X36:
1830 - MEDIA_BUS_FMT_RGB121212_1X36
1875 The following table list existing packed 48bit wide RGB formats.
1877 .. 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}|
1879 .. _v4l2-mbus-pixelcode-rgb-48:
1885 \setlength{\tabcolsep}{2pt}
1887 .. flat-table:: 48bit RGB formats
1890 :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
1895 - :cspan:`31` Data organization
1966 * .. _MEDIA-BUS-FMT-RGB161616-1X48:
1968 - MEDIA_BUS_FMT_RGB161616_1X48
2043 On LVDS buses, usually each sample is transferred serialized in seven
2044 time slots per pixel clock, on three (18-bit) or four (24-bit)
2045 differential data pairs at the same time. The remaining bits are used
2046 for control signals as defined by SPWG/PSWG/VESA or JEIDA standards. The
2047 24-bit RGB format serialized in seven time slots on four lanes using
2048 JEIDA defined bit mapping will be named
2049 ``MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA``, for example.
2055 .. _v4l2-mbus-pixelcode-rgb-lvds:
2057 .. flat-table:: LVDS RGB formats
2065 - :cspan:`3` Data organization
2074 * .. _MEDIA-BUS-FMT-RGB666-1X7X3-SPWG:
2076 - MEDIA_BUS_FMT_RGB666_1X7X3_SPWG
2132 * .. _MEDIA-BUS-FMT-RGB888-1X7X4-SPWG:
2134 - MEDIA_BUS_FMT_RGB888_1X7X4_SPWG
2190 * .. _MEDIA-BUS-FMT-RGB888-1X7X4-JEIDA:
2192 - MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA
2257 Those formats transfer pixel data as red, green and blue components. The
2258 format code is made of the following information.
2260 - The red, green and blue components order code, as encoded in a pixel
2261 sample. The possible values are shown in :ref:`bayer-patterns`.
2263 - The number of bits per pixel component. All components are
2264 transferred on the same number of bits. Common values are 8, 10 and
2267 - The compression (optional). If the pixel components are ALAW- or
2268 DPCM-compressed, a mention of the compression scheme and the number
2269 of bits per compressed pixel component.
2271 - The number of bus samples per pixel. Pixels that are wider than the
2272 bus width must be transferred in multiple samples. Common values are
2277 - For formats where the total number of bits per pixel is smaller than
2278 the number of bus samples per pixel times the bus width, a padding
2279 value stating if the bytes are padded in their most high order bits
2280 (PADHI) or low order bits (PADLO).
2282 - For formats where the number of bus samples per pixel is larger than
2283 1, an endianness value stating if the pixel is transferred MSB first
2284 (BE) or LSB first (LE).
2286 For instance, a format with uncompressed 10-bit Bayer components
2287 arranged in a red, green, green, blue pattern transferred as 2 8-bit
2288 samples per pixel with the least significant bits transferred first will
2289 be named ``MEDIA_BUS_FMT_SRGGB10_2X8_PADHI_LE``.
2294 .. kernel-figure:: bayer.svg
2298 **Figure 4.8 Bayer Patterns**
2300 The following table lists existing packed Bayer formats. The data
2301 organization is given as an example for the first pixel only.
2304 .. HACK: ideally, we would be using adjustbox here. However, Sphinx
2305 .. is a very bad behaviored guy: if the table has more than 30 cols,
2306 .. it switches to long table, and there's no way to override it.
2313 \setlength{\tabcolsep}{2pt}
2315 .. tabularcolumns:: |p{6.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}|
2317 .. _v4l2-mbus-pixelcode-bayer:
2319 .. cssclass: longtable
2321 .. flat-table:: Bayer Formats
2328 - :cspan:`15` Data organization
2348 * .. _MEDIA-BUS-FMT-SBGGR8-1X8:
2350 - MEDIA_BUS_FMT_SBGGR8_1X8
2369 * .. _MEDIA-BUS-FMT-SGBRG8-1X8:
2371 - MEDIA_BUS_FMT_SGBRG8_1X8
2390 * .. _MEDIA-BUS-FMT-SGRBG8-1X8:
2392 - MEDIA_BUS_FMT_SGRBG8_1X8
2411 * .. _MEDIA-BUS-FMT-SRGGB8-1X8:
2413 - MEDIA_BUS_FMT_SRGGB8_1X8
2432 * .. _MEDIA-BUS-FMT-SBGGR10-ALAW8-1X8:
2434 - MEDIA_BUS_FMT_SBGGR10_ALAW8_1X8
2453 * .. _MEDIA-BUS-FMT-SGBRG10-ALAW8-1X8:
2455 - MEDIA_BUS_FMT_SGBRG10_ALAW8_1X8
2474 * .. _MEDIA-BUS-FMT-SGRBG10-ALAW8-1X8:
2476 - MEDIA_BUS_FMT_SGRBG10_ALAW8_1X8
2495 * .. _MEDIA-BUS-FMT-SRGGB10-ALAW8-1X8:
2497 - MEDIA_BUS_FMT_SRGGB10_ALAW8_1X8
2516 * .. _MEDIA-BUS-FMT-SBGGR10-DPCM8-1X8:
2518 - MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8
2537 * .. _MEDIA-BUS-FMT-SGBRG10-DPCM8-1X8:
2539 - MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8
2558 * .. _MEDIA-BUS-FMT-SGRBG10-DPCM8-1X8:
2560 - MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8
2579 * .. _MEDIA-BUS-FMT-SRGGB10-DPCM8-1X8:
2581 - MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8
2600 * .. _MEDIA-BUS-FMT-SBGGR10-2X8-PADHI-BE:
2602 - MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_BE
2640 * .. _MEDIA-BUS-FMT-SBGGR10-2X8-PADHI-LE:
2642 - MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE
2680 * .. _MEDIA-BUS-FMT-SBGGR10-2X8-PADLO-BE:
2682 - MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_BE
2720 * .. _MEDIA-BUS-FMT-SBGGR10-2X8-PADLO-LE:
2722 - MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_LE
2760 * .. _MEDIA-BUS-FMT-SBGGR10-1X10:
2762 - MEDIA_BUS_FMT_SBGGR10_1X10
2781 * .. _MEDIA-BUS-FMT-SGBRG10-1X10:
2783 - MEDIA_BUS_FMT_SGBRG10_1X10
2802 * .. _MEDIA-BUS-FMT-SGRBG10-1X10:
2804 - MEDIA_BUS_FMT_SGRBG10_1X10
2823 * .. _MEDIA-BUS-FMT-SRGGB10-1X10:
2825 - MEDIA_BUS_FMT_SRGGB10_1X10
2844 * .. _MEDIA-BUS-FMT-SBGGR12-1X12:
2846 - MEDIA_BUS_FMT_SBGGR12_1X12
2865 * .. _MEDIA-BUS-FMT-SGBRG12-1X12:
2867 - MEDIA_BUS_FMT_SGBRG12_1X12
2886 * .. _MEDIA-BUS-FMT-SGRBG12-1X12:
2888 - MEDIA_BUS_FMT_SGRBG12_1X12
2907 * .. _MEDIA-BUS-FMT-SRGGB12-1X12:
2909 - MEDIA_BUS_FMT_SRGGB12_1X12
2928 * .. _MEDIA-BUS-FMT-SBGGR14-1X14:
2930 - MEDIA_BUS_FMT_SBGGR14_1X14
2949 * .. _MEDIA-BUS-FMT-SGBRG14-1X14:
2951 - MEDIA_BUS_FMT_SGBRG14_1X14
2970 * .. _MEDIA-BUS-FMT-SGRBG14-1X14:
2972 - MEDIA_BUS_FMT_SGRBG14_1X14
2991 * .. _MEDIA-BUS-FMT-SRGGB14-1X14:
2993 - MEDIA_BUS_FMT_SRGGB14_1X14
3012 * .. _MEDIA-BUS-FMT-SBGGR16-1X16:
3014 - MEDIA_BUS_FMT_SBGGR16_1X16
3033 * .. _MEDIA-BUS-FMT-SGBRG16-1X16:
3035 - MEDIA_BUS_FMT_SGBRG16_1X16
3054 * .. _MEDIA-BUS-FMT-SGRBG16-1X16:
3056 - MEDIA_BUS_FMT_SGRBG16_1X16
3075 * .. _MEDIA-BUS-FMT-SRGGB16-1X16:
3077 - MEDIA_BUS_FMT_SRGGB16_1X16
3105 Those data formats transfer pixel data as (possibly downsampled) Y, U
3106 and V components. Some formats include dummy bits in some of their
3107 samples and are collectively referred to as "YDYC" (Y-Dummy-Y-Chroma)
3108 formats. One cannot rely on the values of these dummy bits as those are
3111 The format code is made of the following information.
3113 - The Y, U and V components order code, as transferred on the bus.
3114 Possible values are YUYV, UYVY, YVYU and VYUY for formats with no
3115 dummy bit, and YDYUYDYV, YDYVYDYU, YUYDYVYD and YVYDYUYD for YDYC
3118 - The number of bits per pixel component. All components are
3119 transferred on the same number of bits. Common values are 8, 10 and
3122 - The number of bus samples per pixel. Pixels that are wider than the
3123 bus width must be transferred in multiple samples. Common values are
3124 0.5 (encoded as 0_5; in this case two pixels are transferred per bus
3125 sample), 1, 1.5 (encoded as 1_5) and 2.
3127 - The bus width. When the bus width is larger than the number of bits
3128 per pixel component, several components are packed in a single bus
3129 sample. The components are ordered as specified by the order code,
3130 with components on the left of the code transferred in the high order
3131 bits. Common values are 8 and 16.
3133 For instance, a format where pixels are encoded as 8-bit YUV values
3134 downsampled to 4:2:2 and transferred as 2 8-bit bus samples per pixel in
3135 the U, Y, V, Y order will be named ``MEDIA_BUS_FMT_UYVY8_2X8``.
3137 :ref:`v4l2-mbus-pixelcode-yuv8` lists existing packed YUV formats and
3138 describes the organization of each pixel data in each sample. When a
3139 format pattern is split across multiple samples each of the samples in
3140 the pattern is described.
3142 The role of each bit transferred over the bus is identified by one of
3143 the following codes.
3145 - y\ :sub:`x` for luma component bit number x
3147 - u\ :sub:`x` for blue chroma component bit number x
3149 - v\ :sub:`x` for red chroma component bit number x
3151 - a\ :sub:`x` for alpha component bit number x
3153 - for non-available bits (for positions higher than the bus width)
3157 .. HACK: ideally, we would be using adjustbox here. However, this
3158 .. will never work for this table, as, even with tiny font, it is
3159 .. to big for a single page. So, we need to manually adjust the
3166 \setlength{\tabcolsep}{2pt}
3168 .. tabularcolumns:: |p{5.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}|
3170 .. _v4l2-mbus-pixelcode-yuv8:
3172 .. flat-table:: YUV Formats
3175 :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
3180 - :cspan:`31` Data organization
3216 * .. _MEDIA-BUS-FMT-Y8-1X8:
3218 - MEDIA_BUS_FMT_Y8_1X8
3253 * .. _MEDIA-BUS-FMT-UV8-1X8:
3255 - MEDIA_BUS_FMT_UV8_1X8
3325 * .. _MEDIA-BUS-FMT-UYVY8-1_5X8:
3327 - MEDIA_BUS_FMT_UYVY8_1_5X8
3537 * .. _MEDIA-BUS-FMT-VYUY8-1_5X8:
3539 - MEDIA_BUS_FMT_VYUY8_1_5X8
3749 * .. _MEDIA-BUS-FMT-YUYV8-1_5X8:
3751 - MEDIA_BUS_FMT_YUYV8_1_5X8
3961 * .. _MEDIA-BUS-FMT-YVYU8-1_5X8:
3963 - MEDIA_BUS_FMT_YVYU8_1_5X8
4173 * .. _MEDIA-BUS-FMT-UYVY8-2X8:
4175 - MEDIA_BUS_FMT_UYVY8_2X8
4315 * .. _MEDIA-BUS-FMT-VYUY8-2X8:
4317 - MEDIA_BUS_FMT_VYUY8_2X8
4457 * .. _MEDIA-BUS-FMT-YUYV8-2X8:
4459 - MEDIA_BUS_FMT_YUYV8_2X8
4599 * .. _MEDIA-BUS-FMT-YVYU8-2X8:
4601 - MEDIA_BUS_FMT_YVYU8_2X8
4741 * .. _MEDIA-BUS-FMT-Y10-1X10:
4743 - MEDIA_BUS_FMT_Y10_1X10
4778 * .. _MEDIA-BUS-FMT-Y10-2X8-PADHI_LE:
4780 - MEDIA_BUS_FMT_Y10_2X8_PADHI_LE
4850 * .. _MEDIA-BUS-FMT-UYVY10-2X10:
4852 - MEDIA_BUS_FMT_UYVY10_2X10
4992 * .. _MEDIA-BUS-FMT-VYUY10-2X10:
4994 - MEDIA_BUS_FMT_VYUY10_2X10
5134 * .. _MEDIA-BUS-FMT-YUYV10-2X10:
5136 - MEDIA_BUS_FMT_YUYV10_2X10
5276 * .. _MEDIA-BUS-FMT-YVYU10-2X10:
5278 - MEDIA_BUS_FMT_YVYU10_2X10
5418 * .. _MEDIA-BUS-FMT-Y12-1X12:
5420 - MEDIA_BUS_FMT_Y12_1X12
5455 * .. _MEDIA-BUS-FMT-UYVY12-2X12:
5457 - MEDIA_BUS_FMT_UYVY12_2X12
5597 * .. _MEDIA-BUS-FMT-VYUY12-2X12:
5599 - MEDIA_BUS_FMT_VYUY12_2X12
5739 * .. _MEDIA-BUS-FMT-YUYV12-2X12:
5741 - MEDIA_BUS_FMT_YUYV12_2X12
5881 * .. _MEDIA-BUS-FMT-YVYU12-2X12:
5883 - MEDIA_BUS_FMT_YVYU12_2X12
6023 * .. _MEDIA-BUS-FMT-Y14-1X14:
6025 - MEDIA_BUS_FMT_Y14_1X14
6060 * .. _MEDIA-BUS-FMT-UYVY8-1X16:
6062 - MEDIA_BUS_FMT_UYVY8_1X16
6132 * .. _MEDIA-BUS-FMT-VYUY8-1X16:
6134 - MEDIA_BUS_FMT_VYUY8_1X16
6204 * .. _MEDIA-BUS-FMT-YUYV8-1X16:
6206 - MEDIA_BUS_FMT_YUYV8_1X16
6276 * .. _MEDIA-BUS-FMT-YVYU8-1X16:
6278 - MEDIA_BUS_FMT_YVYU8_1X16
6348 * .. _MEDIA-BUS-FMT-YDYUYDYV8-1X16:
6350 - MEDIA_BUS_FMT_YDYUYDYV8_1X16
6490 * .. _MEDIA-BUS-FMT-UYVY10-1X20:
6492 - MEDIA_BUS_FMT_UYVY10_1X20
6562 * .. _MEDIA-BUS-FMT-VYUY10-1X20:
6564 - MEDIA_BUS_FMT_VYUY10_1X20
6634 * .. _MEDIA-BUS-FMT-YUYV10-1X20:
6636 - MEDIA_BUS_FMT_YUYV10_1X20
6706 * .. _MEDIA-BUS-FMT-YVYU10-1X20:
6708 - MEDIA_BUS_FMT_YVYU10_1X20
6778 * .. _MEDIA-BUS-FMT-VUY8-1X24:
6780 - MEDIA_BUS_FMT_VUY8_1X24
6815 * .. _MEDIA-BUS-FMT-YUV8-1X24:
6817 - MEDIA_BUS_FMT_YUV8_1X24
6852 * .. _MEDIA-BUS-FMT-UYYVYY8-0-5X24:
6854 - MEDIA_BUS_FMT_UYYVYY8_0_5X24
6924 * .. _MEDIA-BUS-FMT-UYVY12-1X24:
6926 - MEDIA_BUS_FMT_UYVY12_1X24
6996 * .. _MEDIA-BUS-FMT-VYUY12-1X24:
6998 - MEDIA_BUS_FMT_VYUY12_1X24
7068 * .. _MEDIA-BUS-FMT-YUYV12-1X24:
7070 - MEDIA_BUS_FMT_YUYV12_1X24
7140 * .. _MEDIA-BUS-FMT-YVYU12-1X24:
7142 - MEDIA_BUS_FMT_YVYU12_1X24
7212 * .. _MEDIA-BUS-FMT-YUV10-1X30:
7214 - MEDIA_BUS_FMT_YUV10_1X30
7249 * .. _MEDIA-BUS-FMT-UYYVYY10-0-5X30:
7251 - MEDIA_BUS_FMT_UYYVYY10_0_5X30
7321 * .. _MEDIA-BUS-FMT-AYUV8-1X32:
7323 - MEDIA_BUS_FMT_AYUV8_1X32
7365 The following table list existing packed 36bit wide YUV formats.
7371 \setlength{\tabcolsep}{2pt}
7373 .. tabularcolumns:: |p{4.1cm}|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}|
7375 .. _v4l2-mbus-pixelcode-yuv8-36bit:
7377 .. flat-table:: 36bit YUV Formats
7380 :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
7385 - :cspan:`35` Data organization
7425 * .. _MEDIA-BUS-FMT-UYYVYY12-0-5X36:
7427 - MEDIA_BUS_FMT_UYYVYY12_0_5X36
7505 * .. _MEDIA-BUS-FMT-YUV12-1X36:
7507 - MEDIA_BUS_FMT_YUV12_1X36
7553 The following table list existing packed 48bit wide YUV formats.
7559 \setlength{\tabcolsep}{2pt}
7561 .. tabularcolumns:: |p{5.6cm}|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}|
7563 .. _v4l2-mbus-pixelcode-yuv8-48bit:
7565 .. flat-table:: 48bit YUV Formats
7568 :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
7573 - :cspan:`31` Data organization
7644 * .. _MEDIA-BUS-FMT-YUV16-1X48:
7646 - MEDIA_BUS_FMT_YUV16_1X48
7716 * .. _MEDIA-BUS-FMT-UYYVYY16-0-5X48:
7718 - MEDIA_BUS_FMT_UYYVYY16_0_5X48
7867 Those formats transfer pixel data as RGB values in a
7868 cylindrical-coordinate system using Hue-Saturation-Value or
7869 Hue-Saturation-Lightness components. The format code is made of the
7870 following information.
7872 - The hue, saturation, value or lightness and optional alpha components
7873 order code, as encoded in a pixel sample. The only currently
7874 supported value is AHSV.
7876 - The number of bits per component, for each component. The values can
7877 be different for all components. The only currently supported value
7880 - The number of bus samples per pixel. Pixels that are wider than the
7881 bus width must be transferred in multiple samples. The only currently
7882 supported value is 1.
7886 - For formats where the total number of bits per pixel is smaller than
7887 the number of bus samples per pixel times the bus width, a padding
7888 value stating if the bytes are padded in their most high order bits
7889 (PADHI) or low order bits (PADLO).
7891 - For formats where the number of bus samples per pixel is larger than
7892 1, an endianness value stating if the pixel is transferred MSB first
7893 (BE) or LSB first (LE).
7895 The following table lists existing HSV/HSL formats.
7902 \setlength{\tabcolsep}{2pt}
7904 .. 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}|
7906 .. _v4l2-mbus-pixelcode-hsv:
7908 .. flat-table:: HSV/HSL formats
7911 :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
7916 - :cspan:`31` Data organization
7952 * .. _MEDIA-BUS-FMT-AHSV8888-1X32:
7954 - MEDIA_BUS_FMT_AHSV8888_1X32
7995 JPEG Compressed Formats
7996 ^^^^^^^^^^^^^^^^^^^^^^^
7998 Those data formats consist of an ordered sequence of 8-bit bytes
7999 obtained from JPEG compression process. Additionally to the ``_JPEG``
8000 postfix the format code is made of the following information.
8002 - The number of bus samples per entropy encoded byte.
8006 For instance, for a JPEG baseline process and an 8-bit bus width the
8007 format will be named ``MEDIA_BUS_FMT_JPEG_1X8``.
8009 The following table lists existing JPEG compressed formats.
8012 .. _v4l2-mbus-pixelcode-jpeg:
8014 .. tabularcolumns:: |p{6.0cm}|p{1.4cm}|p{9.9cm}|
8016 .. flat-table:: JPEG Formats
8023 * .. _MEDIA-BUS-FMT-JPEG-1X8:
8025 - MEDIA_BUS_FMT_JPEG_1X8
8027 - Besides of its usage for the parallel bus this format is
8028 recommended for transmission of JPEG data over MIPI CSI bus using
8029 the User Defined 8-bit Data types.
8033 .. _v4l2-mbus-vendor-spec-fmts:
8035 Vendor and Device Specific Formats
8036 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8038 This section lists complex data formats that are either vendor or device
8041 The following table lists the existing vendor and device specific
8045 .. _v4l2-mbus-pixelcode-vendor-specific:
8047 .. tabularcolumns:: |p{8.0cm}|p{1.4cm}|p{7.9cm}|
8049 .. flat-table:: Vendor and device specific formats
8056 * .. _MEDIA-BUS-FMT-S5C-UYVY-JPEG-1X8:
8058 - MEDIA_BUS_FMT_S5C_UYVY_JPEG_1X8
8060 - Interleaved raw UYVY and JPEG image format with embedded meta-data
8061 used by Samsung S3C73MX camera sensors.
8063 .. _v4l2-mbus-metadata-fmts:
8068 This section lists all metadata formats.
8070 The following table lists the existing metadata formats.
8072 .. tabularcolumns:: |p{8.0cm}|p{1.4cm}|p{7.9cm}|
8074 .. flat-table:: Metadata formats
8081 * .. _MEDIA-BUS-FMT-METADATA-FIXED:
8083 - MEDIA_BUS_FMT_METADATA_FIXED
8085 - This format should be used when the same driver handles
8086 both sides of the link and the bus format is a fixed
8087 metadata format that is not configurable from userspace.
8088 Width and height will be set to 0 for this format.