xref: /linux/Documentation/userspace-api/media/v4l/pixfmt-yuv-luma.rst (revision a3a02a52bcfcbcc4a637d4b68bf1bc391c9fad02)
1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2
3.. _yuv-luma-only:
4
5*****************
6Luma-Only Formats
7*****************
8
9This family of formats only store the luma component of a Y'CbCr image. They
10are often referred to as greyscale formats.
11
12.. note::
13
14   - In all the tables that follow, bit 7 is the most significant bit in a byte.
15   - Formats are described with the minimum number of pixels needed to create a
16     byte-aligned repeating pattern. `...` indicates repetition of the pattern.
17   - Y'\ :sub:`x`\ [9:2] denotes bits 9 to 2 of the Y' value for pixel at column
18     `x`.
19   - `0` denotes padding bits set to 0.
20
21
22.. raw:: latex
23
24    \tiny
25
26.. tabularcolumns:: |p{3.6cm}|p{2.4cm}|p{1.3cm}|p{1.3cm}|p{1.3cm}|p{1.3cm}|p{1.3cm}|p{1.3cm}|p{1.3cm}|
27
28.. flat-table:: Luma-Only Image Formats
29    :header-rows: 1
30    :stub-columns: 0
31
32    * - Identifier
33      - Code
34      - Byte 0
35      - Byte 1
36      - Byte 2
37      - Byte 3
38      - Byte 4
39      - Byte 5
40      - Byte 6
41
42    * .. _V4L2-PIX-FMT-GREY:
43
44      - ``V4L2_PIX_FMT_GREY``
45      - 'GREY'
46
47      - Y'\ :sub:`0`\ [7:0]
48      - ...
49      - ...
50      - ...
51      - ...
52      - ...
53      - ...
54
55    * .. _V4L2-PIX-FMT-IPU3-Y10:
56
57      - ``V4L2_PIX_FMT_IPU3_Y10``
58      - 'ip3y'
59
60      - Y'\ :sub:`0`\ [7:0]
61      - Y'\ :sub:`1`\ [5:0] Y'\ :sub:`0`\ [9:8]
62      - Y'\ :sub:`2`\ [3:0] Y'\ :sub:`1`\ [9:6]
63      - Y'\ :sub:`3`\ [1:0] Y'\ :sub:`2`\ [9:4]
64      - Y'\ :sub:`3`\ [9:2]
65      - ...
66      - ...
67
68    * .. _V4L2-PIX-FMT-Y10:
69
70      - ``V4L2_PIX_FMT_Y10``
71      - 'Y10 '
72
73      - Y'\ :sub:`0`\ [7:0]
74      - `000000` Y'\ :sub:`0`\ [9:8]
75      - ...
76      - ...
77      - ...
78      - ...
79      - ...
80
81    * .. _V4L2-PIX-FMT-Y10BPACK:
82
83      - ``V4L2_PIX_FMT_Y10BPACK``
84      - 'Y10B'
85
86      - Y'\ :sub:`0`\ [9:2]
87      - Y'\ :sub:`0`\ [1:0] Y'\ :sub:`1`\ [9:4]
88      - Y'\ :sub:`1`\ [3:0] Y'\ :sub:`2`\ [9:6]
89      - Y'\ :sub:`2`\ [5:0] Y'\ :sub:`3`\ [9:8]
90      - Y'\ :sub:`3`\ [7:0]
91      - ...
92      - ...
93
94    * .. _V4L2-PIX-FMT-Y10P:
95
96      - ``V4L2_PIX_FMT_Y10P``
97      - 'Y10P'
98
99      - Y'\ :sub:`0`\ [9:2]
100      - Y'\ :sub:`1`\ [9:2]
101      - Y'\ :sub:`2`\ [9:2]
102      - Y'\ :sub:`3`\ [9:2]
103      - Y'\ :sub:`3`\ [1:0] Y'\ :sub:`2`\ [1:0] Y'\ :sub:`1`\ [1:0] Y'\ :sub:`0`\ [1:0]
104      - ...
105      - ...
106
107    * .. _V4L2-PIX-FMT-Y12:
108
109      - ``V4L2_PIX_FMT_Y12``
110      - 'Y12 '
111
112      - Y'\ :sub:`0`\ [7:0]
113      - `0000` Y'\ :sub:`0`\ [11:8]
114      - ...
115      - ...
116      - ...
117      - ...
118      - ...
119
120    * .. _V4L2-PIX-FMT-Y012:
121
122      - ``V4L2_PIX_FMT_Y012``
123      - 'Y012'
124
125      - Y'\ :sub:`0`\ [3:0] `0000`
126      - Y'\ :sub:`0`\ [11:4]
127      - ...
128      - ...
129      - ...
130      - ...
131      - ...
132
133    * .. _V4L2-PIX-FMT-Y12P:
134
135      - ``V4L2_PIX_FMT_Y12P``
136      - 'Y12P'
137
138      - Y'\ :sub:`0`\ [11:4]
139      - Y'\ :sub:`1`\ [11:4]
140      - Y'\ :sub:`1`\ [3:0] Y'\ :sub:`0`\ [3:0]
141      - ...
142      - ...
143      - ...
144      - ...
145
146    * .. _V4L2-PIX-FMT-Y14:
147
148      - ``V4L2_PIX_FMT_Y14``
149      - 'Y14 '
150
151      - Y'\ :sub:`0`\ [7:0]
152      - `00` Y'\ :sub:`0`\ [13:8]
153      - ...
154      - ...
155      - ...
156      - ...
157      - ...
158
159    * .. _V4L2-PIX-FMT-Y14P:
160
161      - ``V4L2_PIX_FMT_Y14P``
162      - 'Y14P'
163
164      - Y'\ :sub:`0`\ [13:6]
165      - Y'\ :sub:`1`\ [13:6]
166      - Y'\ :sub:`2`\ [13:6]
167      - Y'\ :sub:`3`\ [13:6]
168      - Y'\ :sub:`1`\ [1:0] Y'\ :sub:`0`\ [5:0]
169      - Y'\ :sub:`2`\ [3:0] Y'\ :sub:`1`\ [5:2]
170      - Y'\ :sub:`3`\ [5:0] Y'\ :sub:`2`\ [5:4]
171
172    * .. _V4L2-PIX-FMT-Y16:
173
174      - ``V4L2_PIX_FMT_Y16``
175      - 'Y16 '
176
177      - Y'\ :sub:`0`\ [7:0]
178      - Y'\ :sub:`0`\ [15:8]
179      - ...
180      - ...
181      - ...
182      - ...
183      - ...
184
185    * .. _V4L2-PIX-FMT-Y16-BE:
186
187      - ``V4L2_PIX_FMT_Y16_BE``
188      - 'Y16 ' | (1U << 31)
189
190      - Y'\ :sub:`0`\ [15:8]
191      - Y'\ :sub:`0`\ [7:0]
192      - ...
193      - ...
194      - ...
195      - ...
196      - ...
197
198.. raw:: latex
199
200    \normalsize
201
202.. note::
203
204    For the Y16 and Y16_BE formats, the actual sampling precision may be lower
205    than 16 bits. For example, 10 bits per pixel uses values in the range 0 to
206    1023. For the IPU3_Y10 format 25 pixels are packed into 32 bytes, which
207    leaves the 6 most significant bits of the last byte padded with 0.
208
209    For Y012 and Y12 formats, Y012 places its data in the 12 high bits, with
210    padding zeros in the 4 low bits, in contrast to the Y12 format, which has
211    its padding located in the most significant bits of the 16 bit word.
212
213    The 'P' variations of the Y10, Y12 and Y14 formats are packed according to
214    the RAW10, RAW12 and RAW14 packing scheme as defined by the MIPI CSI-2
215    specification.
216