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-RGB666-2X9-BE:
954 - MEDIA_BUS_FMT_RGB666_2X9_BE
1024 * .. _MEDIA-BUS-FMT-BGR666-1X18:
1026 - MEDIA_BUS_FMT_BGR666_1X18
1061 * .. _MEDIA-BUS-FMT-RBG888-1X24:
1063 - MEDIA_BUS_FMT_RBG888_1X24
1098 * .. _MEDIA-BUS-FMT-RGB666-1X24_CPADHI:
1100 - MEDIA_BUS_FMT_RGB666_1X24_CPADHI
1135 * .. _MEDIA-BUS-FMT-BGR666-1X24_CPADHI:
1137 - MEDIA_BUS_FMT_BGR666_1X24_CPADHI
1172 * .. _MEDIA-BUS-FMT-RGB565-1X24_CPADHI:
1174 - MEDIA_BUS_FMT_RGB565_1X24_CPADHI
1209 * .. _MEDIA-BUS-FMT-BGR888-1X24:
1211 - MEDIA_BUS_FMT_BGR888_1X24
1246 * .. _MEDIA-BUS-FMT-BGR888-3X8:
1248 - MEDIA_BUS_FMT_BGR888_3X8
1353 * .. _MEDIA-BUS-FMT-GBR888-1X24:
1355 - MEDIA_BUS_FMT_GBR888_1X24
1390 * .. _MEDIA-BUS-FMT-RGB888-1X24:
1392 - MEDIA_BUS_FMT_RGB888_1X24
1427 * .. _MEDIA-BUS-FMT-RGB888-2X12-BE:
1429 - MEDIA_BUS_FMT_RGB888_2X12_BE
1499 * .. _MEDIA-BUS-FMT-RGB888-2X12-LE:
1501 - MEDIA_BUS_FMT_RGB888_2X12_LE
1571 * .. _MEDIA-BUS-FMT-RGB888-3X8:
1573 - MEDIA_BUS_FMT_RGB888_3X8
1678 * .. _MEDIA-BUS-FMT-RGB666-1X30-CPADLO:
1680 - MEDIA_BUS_FMT_RGB666_1X30-CPADLO
1715 * .. _MEDIA-BUS-FMT-RGB888-1X30-CPADLO:
1717 - MEDIA_BUS_FMT_RGB888_1X30-CPADLO
1752 * .. _MEDIA-BUS-FMT-ARGB888-1X32:
1754 - MEDIA_BUS_FMT_ARGB888_1X32
1789 * .. _MEDIA-BUS-FMT-RGB888-1X32-PADHI:
1791 - MEDIA_BUS_FMT_RGB888_1X32_PADHI
1826 * .. _MEDIA-BUS-FMT-RGB101010-1X30:
1828 - MEDIA_BUS_FMT_RGB101010_1X30
1869 The following table list existing packed 36bit wide RGB formats.
1871 .. 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}|
1873 .. _v4l2-mbus-pixelcode-rgb-36:
1879 \setlength{\tabcolsep}{2pt}
1881 .. flat-table:: 36bit RGB formats
1884 :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
1889 - :cspan:`35` Data organization
1929 * .. _MEDIA-BUS-FMT-RGB666-1X36-CPADLO:
1931 - MEDIA_BUS_FMT_RGB666_1X36_CPADLO
1970 * .. _MEDIA-BUS-FMT-RGB888-1X36-CPADLO:
1972 - MEDIA_BUS_FMT_RGB888_1X36_CPADLO
2011 * .. _MEDIA-BUS-FMT-RGB121212-1X36:
2013 - MEDIA_BUS_FMT_RGB121212_1X36
2058 The following table list existing packed 48bit wide RGB formats.
2060 .. 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}|
2062 .. _v4l2-mbus-pixelcode-rgb-48:
2068 \setlength{\tabcolsep}{2pt}
2070 .. flat-table:: 48bit RGB formats
2073 :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
2078 - :cspan:`31` Data organization
2149 * .. _MEDIA-BUS-FMT-RGB161616-1X48:
2151 - MEDIA_BUS_FMT_RGB161616_1X48
2226 On LVDS buses, usually each sample is transferred serialized in seven
2227 time slots per pixel clock, on three (18-bit) or four (24-bit)
2228 differential data pairs at the same time. The remaining bits are used
2229 for control signals as defined by SPWG/PSWG/VESA or JEIDA standards. The
2230 24-bit RGB format serialized in seven time slots on four lanes using
2231 JEIDA defined bit mapping will be named
2232 ``MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA``, for example.
2238 .. _v4l2-mbus-pixelcode-rgb-lvds:
2240 .. flat-table:: LVDS RGB formats
2248 - :cspan:`3` Data organization
2257 * .. _MEDIA-BUS-FMT-RGB666-1X7X3-SPWG:
2259 - MEDIA_BUS_FMT_RGB666_1X7X3_SPWG
2315 * .. _MEDIA-BUS-FMT-RGB888-1X7X4-SPWG:
2317 - MEDIA_BUS_FMT_RGB888_1X7X4_SPWG
2373 * .. _MEDIA-BUS-FMT-RGB888-1X7X4-JEIDA:
2375 - MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA
2440 Those formats transfer pixel data as red, green and blue components. The
2441 format code is made of the following information.
2443 - The red, green and blue components order code, as encoded in a pixel
2444 sample. The possible values are shown in :ref:`bayer-patterns`.
2446 - The number of bits per pixel component. All components are
2447 transferred on the same number of bits. Common values are 8, 10 and
2450 - The compression (optional). If the pixel components are ALAW- or
2451 DPCM-compressed, a mention of the compression scheme and the number
2452 of bits per compressed pixel component.
2454 - The number of bus samples per pixel. Pixels that are wider than the
2455 bus width must be transferred in multiple samples. Common values are
2460 - For formats where the total number of bits per pixel is smaller than
2461 the number of bus samples per pixel times the bus width, a padding
2462 value stating if the bytes are padded in their most high order bits
2463 (PADHI) or low order bits (PADLO).
2465 - For formats where the number of bus samples per pixel is larger than
2466 1, an endianness value stating if the pixel is transferred MSB first
2467 (BE) or LSB first (LE).
2469 For instance, a format with uncompressed 10-bit Bayer components
2470 arranged in a red, green, green, blue pattern transferred as 2 8-bit
2471 samples per pixel with the least significant bits transferred first will
2472 be named ``MEDIA_BUS_FMT_SRGGB10_2X8_PADHI_LE``.
2477 .. kernel-figure:: bayer.svg
2481 **Figure 4.8 Bayer Patterns**
2483 The following table lists existing packed Bayer formats. The data
2484 organization is given as an example for the first pixel only.
2487 .. HACK: ideally, we would be using adjustbox here. However, Sphinx
2488 .. is a very bad behaviored guy: if the table has more than 30 cols,
2489 .. it switches to long table, and there's no way to override it.
2496 \setlength{\tabcolsep}{2pt}
2498 .. 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}|
2500 .. _v4l2-mbus-pixelcode-bayer:
2502 .. cssclass: longtable
2504 .. flat-table:: Bayer Formats
2511 - :cspan:`15` Data organization
2531 * .. _MEDIA-BUS-FMT-SBGGR8-1X8:
2533 - MEDIA_BUS_FMT_SBGGR8_1X8
2552 * .. _MEDIA-BUS-FMT-SGBRG8-1X8:
2554 - MEDIA_BUS_FMT_SGBRG8_1X8
2573 * .. _MEDIA-BUS-FMT-SGRBG8-1X8:
2575 - MEDIA_BUS_FMT_SGRBG8_1X8
2594 * .. _MEDIA-BUS-FMT-SRGGB8-1X8:
2596 - MEDIA_BUS_FMT_SRGGB8_1X8
2615 * .. _MEDIA-BUS-FMT-SBGGR10-ALAW8-1X8:
2617 - MEDIA_BUS_FMT_SBGGR10_ALAW8_1X8
2636 * .. _MEDIA-BUS-FMT-SGBRG10-ALAW8-1X8:
2638 - MEDIA_BUS_FMT_SGBRG10_ALAW8_1X8
2657 * .. _MEDIA-BUS-FMT-SGRBG10-ALAW8-1X8:
2659 - MEDIA_BUS_FMT_SGRBG10_ALAW8_1X8
2678 * .. _MEDIA-BUS-FMT-SRGGB10-ALAW8-1X8:
2680 - MEDIA_BUS_FMT_SRGGB10_ALAW8_1X8
2699 * .. _MEDIA-BUS-FMT-SBGGR10-DPCM8-1X8:
2701 - MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8
2720 * .. _MEDIA-BUS-FMT-SGBRG10-DPCM8-1X8:
2722 - MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8
2741 * .. _MEDIA-BUS-FMT-SGRBG10-DPCM8-1X8:
2743 - MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8
2762 * .. _MEDIA-BUS-FMT-SRGGB10-DPCM8-1X8:
2764 - MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8
2783 * .. _MEDIA-BUS-FMT-SBGGR10-2X8-PADHI-BE:
2785 - MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_BE
2823 * .. _MEDIA-BUS-FMT-SBGGR10-2X8-PADHI-LE:
2825 - MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE
2863 * .. _MEDIA-BUS-FMT-SBGGR10-2X8-PADLO-BE:
2865 - MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_BE
2903 * .. _MEDIA-BUS-FMT-SBGGR10-2X8-PADLO-LE:
2905 - MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_LE
2943 * .. _MEDIA-BUS-FMT-SBGGR10-1X10:
2945 - MEDIA_BUS_FMT_SBGGR10_1X10
2964 * .. _MEDIA-BUS-FMT-SGBRG10-1X10:
2966 - MEDIA_BUS_FMT_SGBRG10_1X10
2985 * .. _MEDIA-BUS-FMT-SGRBG10-1X10:
2987 - MEDIA_BUS_FMT_SGRBG10_1X10
3006 * .. _MEDIA-BUS-FMT-SRGGB10-1X10:
3008 - MEDIA_BUS_FMT_SRGGB10_1X10
3027 * .. _MEDIA-BUS-FMT-SBGGR12-1X12:
3029 - MEDIA_BUS_FMT_SBGGR12_1X12
3048 * .. _MEDIA-BUS-FMT-SGBRG12-1X12:
3050 - MEDIA_BUS_FMT_SGBRG12_1X12
3069 * .. _MEDIA-BUS-FMT-SGRBG12-1X12:
3071 - MEDIA_BUS_FMT_SGRBG12_1X12
3090 * .. _MEDIA-BUS-FMT-SRGGB12-1X12:
3092 - MEDIA_BUS_FMT_SRGGB12_1X12
3111 * .. _MEDIA-BUS-FMT-SBGGR14-1X14:
3113 - MEDIA_BUS_FMT_SBGGR14_1X14
3132 * .. _MEDIA-BUS-FMT-SGBRG14-1X14:
3134 - MEDIA_BUS_FMT_SGBRG14_1X14
3153 * .. _MEDIA-BUS-FMT-SGRBG14-1X14:
3155 - MEDIA_BUS_FMT_SGRBG14_1X14
3174 * .. _MEDIA-BUS-FMT-SRGGB14-1X14:
3176 - MEDIA_BUS_FMT_SRGGB14_1X14
3195 * .. _MEDIA-BUS-FMT-SBGGR16-1X16:
3197 - MEDIA_BUS_FMT_SBGGR16_1X16
3216 * .. _MEDIA-BUS-FMT-SGBRG16-1X16:
3218 - MEDIA_BUS_FMT_SGBRG16_1X16
3237 * .. _MEDIA-BUS-FMT-SGRBG16-1X16:
3239 - MEDIA_BUS_FMT_SGRBG16_1X16
3258 * .. _MEDIA-BUS-FMT-SRGGB16-1X16:
3260 - MEDIA_BUS_FMT_SRGGB16_1X16
3288 Those data formats transfer pixel data as (possibly downsampled) Y, U
3289 and V components. Some formats include dummy bits in some of their
3290 samples and are collectively referred to as "YDYC" (Y-Dummy-Y-Chroma)
3291 formats. One cannot rely on the values of these dummy bits as those are
3294 The format code is made of the following information.
3296 - The Y, U and V components order code, as transferred on the bus.
3297 Possible values are YUYV, UYVY, YVYU and VYUY for formats with no
3298 dummy bit, and YDYUYDYV, YDYVYDYU, YUYDYVYD and YVYDYUYD for YDYC
3301 - The number of bits per pixel component. All components are
3302 transferred on the same number of bits. Common values are 8, 10 and
3305 - The number of bus samples per pixel. Pixels that are wider than the
3306 bus width must be transferred in multiple samples. Common values are
3307 0.5 (encoded as 0_5; in this case two pixels are transferred per bus
3308 sample), 1, 1.5 (encoded as 1_5) and 2.
3310 - The bus width. When the bus width is larger than the number of bits
3311 per pixel component, several components are packed in a single bus
3312 sample. The components are ordered as specified by the order code,
3313 with components on the left of the code transferred in the high order
3314 bits. Common values are 8 and 16.
3316 For instance, a format where pixels are encoded as 8-bit YUV values
3317 downsampled to 4:2:2 and transferred as 2 8-bit bus samples per pixel in
3318 the U, Y, V, Y order will be named ``MEDIA_BUS_FMT_UYVY8_2X8``.
3320 :ref:`v4l2-mbus-pixelcode-yuv8` lists existing packed YUV formats and
3321 describes the organization of each pixel data in each sample. When a
3322 format pattern is split across multiple samples each of the samples in
3323 the pattern is described.
3325 The role of each bit transferred over the bus is identified by one of
3326 the following codes.
3328 - y\ :sub:`x` for luma component bit number x
3330 - u\ :sub:`x` for blue chroma component bit number x
3332 - v\ :sub:`x` for red chroma component bit number x
3334 - a\ :sub:`x` for alpha component bit number x
3336 - for non-available bits (for positions higher than the bus width)
3340 .. HACK: ideally, we would be using adjustbox here. However, this
3341 .. will never work for this table, as, even with tiny font, it is
3342 .. to big for a single page. So, we need to manually adjust the
3349 \setlength{\tabcolsep}{2pt}
3351 .. 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}|
3353 .. _v4l2-mbus-pixelcode-yuv8:
3355 .. flat-table:: YUV Formats
3358 :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
3363 - :cspan:`31` Data organization
3399 * .. _MEDIA-BUS-FMT-Y8-1X8:
3401 - MEDIA_BUS_FMT_Y8_1X8
3436 * .. _MEDIA-BUS-FMT-UV8-1X8:
3438 - MEDIA_BUS_FMT_UV8_1X8
3508 * .. _MEDIA-BUS-FMT-UYVY8-1_5X8:
3510 - MEDIA_BUS_FMT_UYVY8_1_5X8
3720 * .. _MEDIA-BUS-FMT-VYUY8-1_5X8:
3722 - MEDIA_BUS_FMT_VYUY8_1_5X8
3932 * .. _MEDIA-BUS-FMT-YUYV8-1_5X8:
3934 - MEDIA_BUS_FMT_YUYV8_1_5X8
4144 * .. _MEDIA-BUS-FMT-YVYU8-1_5X8:
4146 - MEDIA_BUS_FMT_YVYU8_1_5X8
4356 * .. _MEDIA-BUS-FMT-UYVY8-2X8:
4358 - MEDIA_BUS_FMT_UYVY8_2X8
4498 * .. _MEDIA-BUS-FMT-VYUY8-2X8:
4500 - MEDIA_BUS_FMT_VYUY8_2X8
4640 * .. _MEDIA-BUS-FMT-YUYV8-2X8:
4642 - MEDIA_BUS_FMT_YUYV8_2X8
4782 * .. _MEDIA-BUS-FMT-YVYU8-2X8:
4784 - MEDIA_BUS_FMT_YVYU8_2X8
4924 * .. _MEDIA-BUS-FMT-Y10-1X10:
4926 - MEDIA_BUS_FMT_Y10_1X10
4961 * .. _MEDIA-BUS-FMT-Y10-2X8-PADHI_LE:
4963 - MEDIA_BUS_FMT_Y10_2X8_PADHI_LE
5033 * .. _MEDIA-BUS-FMT-UYVY10-2X10:
5035 - MEDIA_BUS_FMT_UYVY10_2X10
5175 * .. _MEDIA-BUS-FMT-VYUY10-2X10:
5177 - MEDIA_BUS_FMT_VYUY10_2X10
5317 * .. _MEDIA-BUS-FMT-YUYV10-2X10:
5319 - MEDIA_BUS_FMT_YUYV10_2X10
5459 * .. _MEDIA-BUS-FMT-YVYU10-2X10:
5461 - MEDIA_BUS_FMT_YVYU10_2X10
5601 * .. _MEDIA-BUS-FMT-Y12-1X12:
5603 - MEDIA_BUS_FMT_Y12_1X12
5638 * .. _MEDIA-BUS-FMT-UYVY12-2X12:
5640 - MEDIA_BUS_FMT_UYVY12_2X12
5780 * .. _MEDIA-BUS-FMT-VYUY12-2X12:
5782 - MEDIA_BUS_FMT_VYUY12_2X12
5922 * .. _MEDIA-BUS-FMT-YUYV12-2X12:
5924 - MEDIA_BUS_FMT_YUYV12_2X12
6064 * .. _MEDIA-BUS-FMT-YVYU12-2X12:
6066 - MEDIA_BUS_FMT_YVYU12_2X12
6206 * .. _MEDIA-BUS-FMT-Y14-1X14:
6208 - MEDIA_BUS_FMT_Y14_1X14
6243 * .. _MEDIA-BUS-FMT-Y16-1X16:
6245 - MEDIA_BUS_FMT_Y16_1X16
6280 * .. _MEDIA-BUS-FMT-UYVY8-1X16:
6282 - MEDIA_BUS_FMT_UYVY8_1X16
6352 * .. _MEDIA-BUS-FMT-VYUY8-1X16:
6354 - MEDIA_BUS_FMT_VYUY8_1X16
6424 * .. _MEDIA-BUS-FMT-YUYV8-1X16:
6426 - MEDIA_BUS_FMT_YUYV8_1X16
6496 * .. _MEDIA-BUS-FMT-YVYU8-1X16:
6498 - MEDIA_BUS_FMT_YVYU8_1X16
6568 * .. _MEDIA-BUS-FMT-YDYUYDYV8-1X16:
6570 - MEDIA_BUS_FMT_YDYUYDYV8_1X16
6710 * .. _MEDIA-BUS-FMT-UYVY10-1X20:
6712 - MEDIA_BUS_FMT_UYVY10_1X20
6782 * .. _MEDIA-BUS-FMT-VYUY10-1X20:
6784 - MEDIA_BUS_FMT_VYUY10_1X20
6854 * .. _MEDIA-BUS-FMT-YUYV10-1X20:
6856 - MEDIA_BUS_FMT_YUYV10_1X20
6926 * .. _MEDIA-BUS-FMT-YVYU10-1X20:
6928 - MEDIA_BUS_FMT_YVYU10_1X20
6998 * .. _MEDIA-BUS-FMT-VUY8-1X24:
7000 - MEDIA_BUS_FMT_VUY8_1X24
7035 * .. _MEDIA-BUS-FMT-YUV8-1X24:
7037 - MEDIA_BUS_FMT_YUV8_1X24
7072 * .. _MEDIA-BUS-FMT-UYYVYY8-0-5X24:
7074 - MEDIA_BUS_FMT_UYYVYY8_0_5X24
7144 * .. _MEDIA-BUS-FMT-UYVY12-1X24:
7146 - MEDIA_BUS_FMT_UYVY12_1X24
7216 * .. _MEDIA-BUS-FMT-VYUY12-1X24:
7218 - MEDIA_BUS_FMT_VYUY12_1X24
7288 * .. _MEDIA-BUS-FMT-YUYV12-1X24:
7290 - MEDIA_BUS_FMT_YUYV12_1X24
7360 * .. _MEDIA-BUS-FMT-YVYU12-1X24:
7362 - MEDIA_BUS_FMT_YVYU12_1X24
7432 * .. _MEDIA-BUS-FMT-YUV10-1X30:
7434 - MEDIA_BUS_FMT_YUV10_1X30
7469 * .. _MEDIA-BUS-FMT-UYYVYY10-0-5X30:
7471 - MEDIA_BUS_FMT_UYYVYY10_0_5X30
7541 * .. _MEDIA-BUS-FMT-AYUV8-1X32:
7543 - MEDIA_BUS_FMT_AYUV8_1X32
7585 The following table list existing packed 36bit wide YUV formats.
7591 \setlength{\tabcolsep}{2pt}
7593 .. 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}|
7595 .. _v4l2-mbus-pixelcode-yuv8-36bit:
7597 .. flat-table:: 36bit YUV Formats
7600 :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
7605 - :cspan:`35` Data organization
7645 * .. _MEDIA-BUS-FMT-UYYVYY12-0-5X36:
7647 - MEDIA_BUS_FMT_UYYVYY12_0_5X36
7725 * .. _MEDIA-BUS-FMT-YUV12-1X36:
7727 - MEDIA_BUS_FMT_YUV12_1X36
7773 The following table list existing packed 48bit wide YUV formats.
7779 \setlength{\tabcolsep}{2pt}
7781 .. 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}|
7783 .. _v4l2-mbus-pixelcode-yuv8-48bit:
7785 .. flat-table:: 48bit YUV Formats
7788 :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
7793 - :cspan:`31` Data organization
7864 * .. _MEDIA-BUS-FMT-YUV16-1X48:
7866 - MEDIA_BUS_FMT_YUV16_1X48
7936 * .. _MEDIA-BUS-FMT-UYYVYY16-0-5X48:
7938 - MEDIA_BUS_FMT_UYYVYY16_0_5X48
8087 Those formats transfer pixel data as RGB values in a
8088 cylindrical-coordinate system using Hue-Saturation-Value or
8089 Hue-Saturation-Lightness components. The format code is made of the
8090 following information.
8092 - The hue, saturation, value or lightness and optional alpha components
8093 order code, as encoded in a pixel sample. The only currently
8094 supported value is AHSV.
8096 - The number of bits per component, for each component. The values can
8097 be different for all components. The only currently supported value
8100 - The number of bus samples per pixel. Pixels that are wider than the
8101 bus width must be transferred in multiple samples. The only currently
8102 supported value is 1.
8106 - For formats where the total number of bits per pixel is smaller than
8107 the number of bus samples per pixel times the bus width, a padding
8108 value stating if the bytes are padded in their most high order bits
8109 (PADHI) or low order bits (PADLO).
8111 - For formats where the number of bus samples per pixel is larger than
8112 1, an endianness value stating if the pixel is transferred MSB first
8113 (BE) or LSB first (LE).
8115 The following table lists existing HSV/HSL formats.
8122 \setlength{\tabcolsep}{2pt}
8124 .. 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}|
8126 .. _v4l2-mbus-pixelcode-hsv:
8128 .. flat-table:: HSV/HSL formats
8131 :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
8136 - :cspan:`31` Data organization
8172 * .. _MEDIA-BUS-FMT-AHSV8888-1X32:
8174 - MEDIA_BUS_FMT_AHSV8888_1X32
8215 JPEG Compressed Formats
8216 ^^^^^^^^^^^^^^^^^^^^^^^
8218 Those data formats consist of an ordered sequence of 8-bit bytes
8219 obtained from JPEG compression process. Additionally to the ``_JPEG``
8220 postfix the format code is made of the following information.
8222 - The number of bus samples per entropy encoded byte.
8226 For instance, for a JPEG baseline process and an 8-bit bus width the
8227 format will be named ``MEDIA_BUS_FMT_JPEG_1X8``.
8229 The following table lists existing JPEG compressed formats.
8232 .. _v4l2-mbus-pixelcode-jpeg:
8234 .. tabularcolumns:: |p{6.0cm}|p{1.4cm}|p{9.9cm}|
8236 .. flat-table:: JPEG Formats
8243 * .. _MEDIA-BUS-FMT-JPEG-1X8:
8245 - MEDIA_BUS_FMT_JPEG_1X8
8247 - Besides of its usage for the parallel bus this format is
8248 recommended for transmission of JPEG data over MIPI CSI bus using
8249 the User Defined 8-bit Data types.
8253 .. _v4l2-mbus-vendor-spec-fmts:
8255 Vendor and Device Specific Formats
8256 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8258 This section lists complex data formats that are either vendor or device
8261 The following table lists the existing vendor and device specific
8265 .. _v4l2-mbus-pixelcode-vendor-specific:
8267 .. tabularcolumns:: |p{8.0cm}|p{1.4cm}|p{7.9cm}|
8269 .. flat-table:: Vendor and device specific formats
8276 * .. _MEDIA-BUS-FMT-S5C-UYVY-JPEG-1X8:
8278 - MEDIA_BUS_FMT_S5C_UYVY_JPEG_1X8
8280 - Interleaved raw UYVY and JPEG image format with embedded meta-data
8281 used by Samsung S3C73MX camera sensors.
8283 .. _v4l2-mbus-metadata-fmts:
8288 This section lists all metadata formats.
8290 The following table lists the existing metadata formats.
8292 .. tabularcolumns:: |p{8.0cm}|p{1.4cm}|p{7.9cm}|
8294 .. flat-table:: Metadata formats
8301 * .. _MEDIA-BUS-FMT-METADATA-FIXED:
8303 - MEDIA_BUS_FMT_METADATA_FIXED
8305 - This format should be used when the same driver handles
8306 both sides of the link and the bus format is a fixed
8307 metadata format that is not configurable from userspace.
8308 Width and height will be set to 0 for this format.