1 .. SPDX-License-Identifier: GFDL-1.1-no-invari 1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later 2 2 3 .. planar-yuv: 3 .. planar-yuv: 4 4 5 ****************** 5 ****************** 6 Planar YUV formats 6 Planar YUV formats 7 ****************** 7 ****************** 8 8 9 Planar formats split luma and chroma data in s 9 Planar formats split luma and chroma data in separate memory regions. They 10 exist in two variants: 10 exist in two variants: 11 11 12 - Semi-planar formats use two planes. The firs 12 - Semi-planar formats use two planes. The first plane is the luma plane and 13 stores the Y components. The second plane is 13 stores the Y components. The second plane is the chroma plane and stores the 14 Cb and Cr components interleaved. 14 Cb and Cr components interleaved. 15 15 16 - Fully planar formats use three planes to sto 16 - Fully planar formats use three planes to store the Y, Cb and Cr components 17 separately. 17 separately. 18 18 19 Within a plane, components are stored in pixel 19 Within a plane, components are stored in pixel order, which may be linear or 20 tiled. Padding may be supported at the end of 20 tiled. Padding may be supported at the end of the lines, and the line stride of 21 the chroma planes may be constrained by the li 21 the chroma planes may be constrained by the line stride of the luma plane. 22 22 23 Some planar formats allow planes to be placed 23 Some planar formats allow planes to be placed in independent memory locations. 24 They are identified by an 'M' suffix in their 24 They are identified by an 'M' suffix in their name (such as in 25 ``V4L2_PIX_FMT_NV12M``). Those formats are int 25 ``V4L2_PIX_FMT_NV12M``). Those formats are intended to be used only in drivers 26 and applications that support the multi-planar 26 and applications that support the multi-planar API, described in 27 :ref:`planar-apis`. Unless explicitly document 27 :ref:`planar-apis`. Unless explicitly documented as supporting non-contiguous 28 planes, formats require the planes to follow e 28 planes, formats require the planes to follow each other immediately in memory. 29 29 30 30 31 Semi-Planar YUV Formats 31 Semi-Planar YUV Formats 32 ======================= 32 ======================= 33 33 34 These formats are commonly referred to as NV f 34 These formats are commonly referred to as NV formats (NV12, NV16, ...). They 35 use two planes, and store the luma components 35 use two planes, and store the luma components in the first plane and the chroma 36 components in the second plane. The Cb and Cr 36 components in the second plane. The Cb and Cr components are interleaved in the 37 chroma plane, with Cb and Cr always stored in 37 chroma plane, with Cb and Cr always stored in pairs. The chroma order is 38 exposed as different formats. 38 exposed as different formats. 39 39 40 For memory contiguous formats, the number of p 40 For memory contiguous formats, the number of padding pixels at the end of the 41 chroma lines is identical to the padding of th 41 chroma lines is identical to the padding of the luma lines. Without horizontal 42 subsampling, the chroma line stride (in bytes) 42 subsampling, the chroma line stride (in bytes) is thus equal to twice the luma 43 line stride. With horizontal subsampling by 2, 43 line stride. With horizontal subsampling by 2, the chroma line stride is equal 44 to the luma line stride. Vertical subsampling 44 to the luma line stride. Vertical subsampling doesn't affect the line stride. 45 45 46 For non-contiguous formats, no constraints are 46 For non-contiguous formats, no constraints are enforced by the format on the 47 relationship between the luma and chroma line 47 relationship between the luma and chroma line padding and stride. 48 48 49 All components are stored with the same number 49 All components are stored with the same number of bits per component. 50 50 51 .. raw:: latex 51 .. raw:: latex 52 52 53 \footnotesize 53 \footnotesize 54 54 55 .. tabularcolumns:: |p{5.2cm}|p{1.0cm}|p{1.5cm 55 .. tabularcolumns:: |p{5.2cm}|p{1.0cm}|p{1.5cm}|p{1.9cm}|p{1.2cm}|p{1.8cm}|p{2.7cm}| 56 56 57 .. flat-table:: Overview of Semi-Planar YUV Fo 57 .. flat-table:: Overview of Semi-Planar YUV Formats 58 :header-rows: 1 58 :header-rows: 1 59 :stub-columns: 0 59 :stub-columns: 0 60 60 61 * - Identifier 61 * - Identifier 62 - Code 62 - Code 63 - Bits per component 63 - Bits per component 64 - Subsampling 64 - Subsampling 65 - Chroma order [1]_ 65 - Chroma order [1]_ 66 - Contiguous [2]_ 66 - Contiguous [2]_ 67 - Tiling [3]_ 67 - Tiling [3]_ 68 * - V4L2_PIX_FMT_NV12 68 * - V4L2_PIX_FMT_NV12 69 - 'NV12' 69 - 'NV12' 70 - 8 70 - 8 71 - 4:2:0 71 - 4:2:0 72 - Cb, Cr 72 - Cb, Cr 73 - Yes 73 - Yes 74 - Linear 74 - Linear 75 * - V4L2_PIX_FMT_NV21 75 * - V4L2_PIX_FMT_NV21 76 - 'NV21' 76 - 'NV21' 77 - 8 77 - 8 78 - 4:2:0 78 - 4:2:0 79 - Cr, Cb 79 - Cr, Cb 80 - Yes 80 - Yes 81 - Linear 81 - Linear 82 * - V4L2_PIX_FMT_NV12M 82 * - V4L2_PIX_FMT_NV12M 83 - 'NM12' 83 - 'NM12' 84 - 8 84 - 8 85 - 4:2:0 85 - 4:2:0 86 - Cb, Cr 86 - Cb, Cr 87 - No 87 - No 88 - Linear 88 - Linear 89 * - V4L2_PIX_FMT_NV21M 89 * - V4L2_PIX_FMT_NV21M 90 - 'NM21' 90 - 'NM21' 91 - 8 91 - 8 92 - 4:2:0 92 - 4:2:0 93 - Cr, Cb 93 - Cr, Cb 94 - No 94 - No 95 - Linear 95 - Linear 96 * - V4L2_PIX_FMT_NV12MT 96 * - V4L2_PIX_FMT_NV12MT 97 - 'TM12' 97 - 'TM12' 98 - 8 98 - 8 99 - 4:2:0 99 - 4:2:0 100 - Cb, Cr 100 - Cb, Cr 101 - No 101 - No 102 - 64x32 tiles 102 - 64x32 tiles 103 103 104 Horizontal Z order 104 Horizontal Z order 105 * - V4L2_PIX_FMT_NV12MT_16X16 105 * - V4L2_PIX_FMT_NV12MT_16X16 106 - 'VM12' 106 - 'VM12' 107 - 8 107 - 8 108 - 4:2:2 108 - 4:2:2 109 - Cb, Cr 109 - Cb, Cr 110 - No 110 - No 111 - 16x16 tiles 111 - 16x16 tiles 112 * - V4L2_PIX_FMT_P010 112 * - V4L2_PIX_FMT_P010 113 - 'P010' 113 - 'P010' 114 - 10 114 - 10 115 - 4:2:0 115 - 4:2:0 116 - Cb, Cr 116 - Cb, Cr 117 - Yes 117 - Yes 118 - Linear 118 - Linear 119 * - V4L2_PIX_FMT_P010_4L4 119 * - V4L2_PIX_FMT_P010_4L4 120 - 'T010' 120 - 'T010' 121 - 10 121 - 10 122 - 4:2:0 122 - 4:2:0 123 - Cb, Cr 123 - Cb, Cr 124 - Yes 124 - Yes 125 - 4x4 tiles 125 - 4x4 tiles 126 * - V4L2_PIX_FMT_P012 126 * - V4L2_PIX_FMT_P012 127 - 'P012' 127 - 'P012' 128 - 12 128 - 12 129 - 4:2:0 129 - 4:2:0 130 - Cb, Cr 130 - Cb, Cr 131 - Yes 131 - Yes 132 - Linear 132 - Linear 133 * - V4L2_PIX_FMT_P012M 133 * - V4L2_PIX_FMT_P012M 134 - 'PM12' 134 - 'PM12' 135 - 12 135 - 12 136 - 4:2:0 136 - 4:2:0 137 - Cb, Cr 137 - Cb, Cr 138 - No 138 - No 139 - Linear 139 - Linear 140 * - V4L2_PIX_FMT_NV15_4L4 140 * - V4L2_PIX_FMT_NV15_4L4 141 - 'VT15' 141 - 'VT15' 142 - 15 142 - 15 143 - 4:2:0 143 - 4:2:0 144 - Cb, Cr 144 - Cb, Cr 145 - Yes 145 - Yes 146 - 4x4 tiles 146 - 4x4 tiles 147 * - V4L2_PIX_FMT_MT2110T << 148 - 'MT2T' << 149 - 15 << 150 - 4:2:0 << 151 - Cb, Cr << 152 - No << 153 - 16x32 / 16x16 tiles tiled low bits << 154 * - V4L2_PIX_FMT_MT2110R << 155 - 'MT2R' << 156 - 15 << 157 - 4:2:0 << 158 - Cb, Cr << 159 - No << 160 - 16x32 / 16x16 tiles raster low bits << 161 * - V4L2_PIX_FMT_NV16 147 * - V4L2_PIX_FMT_NV16 162 - 'NV16' 148 - 'NV16' 163 - 8 149 - 8 164 - 4:2:2 150 - 4:2:2 165 - Cb, Cr 151 - Cb, Cr 166 - Yes 152 - Yes 167 - Linear 153 - Linear 168 * - V4L2_PIX_FMT_NV61 154 * - V4L2_PIX_FMT_NV61 169 - 'NV61' 155 - 'NV61' 170 - 8 156 - 8 171 - 4:2:2 157 - 4:2:2 172 - Cr, Cb 158 - Cr, Cb 173 - Yes 159 - Yes 174 - Linear 160 - Linear 175 * - V4L2_PIX_FMT_NV16M 161 * - V4L2_PIX_FMT_NV16M 176 - 'NM16' 162 - 'NM16' 177 - 8 163 - 8 178 - 4:2:2 164 - 4:2:2 179 - Cb, Cr 165 - Cb, Cr 180 - No 166 - No 181 - Linear 167 - Linear 182 * - V4L2_PIX_FMT_NV61M 168 * - V4L2_PIX_FMT_NV61M 183 - 'NM61' 169 - 'NM61' 184 - 8 170 - 8 185 - 4:2:2 171 - 4:2:2 186 - Cr, Cb 172 - Cr, Cb 187 - No 173 - No 188 - Linear 174 - Linear 189 * - V4L2_PIX_FMT_NV24 175 * - V4L2_PIX_FMT_NV24 190 - 'NV24' 176 - 'NV24' 191 - 8 177 - 8 192 - 4:4:4 178 - 4:4:4 193 - Cb, Cr 179 - Cb, Cr 194 - Yes 180 - Yes 195 - Linear 181 - Linear 196 * - V4L2_PIX_FMT_NV42 182 * - V4L2_PIX_FMT_NV42 197 - 'NV42' 183 - 'NV42' 198 - 8 184 - 8 199 - 4:4:4 185 - 4:4:4 200 - Cr, Cb 186 - Cr, Cb 201 - Yes 187 - Yes 202 - Linear 188 - Linear 203 189 204 .. raw:: latex 190 .. raw:: latex 205 191 206 \normalsize 192 \normalsize 207 193 208 .. [1] Order of chroma samples in the second p 194 .. [1] Order of chroma samples in the second plane 209 .. [2] Indicates if planes have to be contiguo 195 .. [2] Indicates if planes have to be contiguous in memory or can be 210 disjoint 196 disjoint 211 .. [3] Macroblock size in pixels 197 .. [3] Macroblock size in pixels 212 198 213 199 214 **Color Sample Location:** 200 **Color Sample Location:** 215 Chroma samples are :ref:`interstitially sited< 201 Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>` 216 horizontally. 202 horizontally. 217 203 218 204 219 .. _V4L2-PIX-FMT-NV12: 205 .. _V4L2-PIX-FMT-NV12: 220 .. _V4L2-PIX-FMT-NV21: 206 .. _V4L2-PIX-FMT-NV21: 221 .. _V4L2-PIX-FMT-NV12M: 207 .. _V4L2-PIX-FMT-NV12M: 222 .. _V4L2-PIX-FMT-NV21M: 208 .. _V4L2-PIX-FMT-NV21M: 223 .. _V4L2-PIX-FMT-P010: 209 .. _V4L2-PIX-FMT-P010: 224 210 225 NV12, NV21, NV12M and NV21M 211 NV12, NV21, NV12M and NV21M 226 --------------------------- 212 --------------------------- 227 213 228 Semi-planar YUV 4:2:0 formats. The chroma plan 214 Semi-planar YUV 4:2:0 formats. The chroma plane is subsampled by 2 in each 229 direction. Chroma lines contain half the numbe 215 direction. Chroma lines contain half the number of pixels and the same number 230 of bytes as luma lines, and the chroma plane c 216 of bytes as luma lines, and the chroma plane contains half the number of lines 231 of the luma plane. 217 of the luma plane. 232 218 233 .. flat-table:: Sample 4x4 NV12 Image 219 .. flat-table:: Sample 4x4 NV12 Image 234 :header-rows: 0 220 :header-rows: 0 235 :stub-columns: 0 221 :stub-columns: 0 236 222 237 * - start + 0: 223 * - start + 0: 238 - Y'\ :sub:`00` 224 - Y'\ :sub:`00` 239 - Y'\ :sub:`01` 225 - Y'\ :sub:`01` 240 - Y'\ :sub:`02` 226 - Y'\ :sub:`02` 241 - Y'\ :sub:`03` 227 - Y'\ :sub:`03` 242 * - start + 4: 228 * - start + 4: 243 - Y'\ :sub:`10` 229 - Y'\ :sub:`10` 244 - Y'\ :sub:`11` 230 - Y'\ :sub:`11` 245 - Y'\ :sub:`12` 231 - Y'\ :sub:`12` 246 - Y'\ :sub:`13` 232 - Y'\ :sub:`13` 247 * - start + 8: 233 * - start + 8: 248 - Y'\ :sub:`20` 234 - Y'\ :sub:`20` 249 - Y'\ :sub:`21` 235 - Y'\ :sub:`21` 250 - Y'\ :sub:`22` 236 - Y'\ :sub:`22` 251 - Y'\ :sub:`23` 237 - Y'\ :sub:`23` 252 * - start + 12: 238 * - start + 12: 253 - Y'\ :sub:`30` 239 - Y'\ :sub:`30` 254 - Y'\ :sub:`31` 240 - Y'\ :sub:`31` 255 - Y'\ :sub:`32` 241 - Y'\ :sub:`32` 256 - Y'\ :sub:`33` 242 - Y'\ :sub:`33` 257 * - start + 16: 243 * - start + 16: 258 - Cb\ :sub:`00` 244 - Cb\ :sub:`00` 259 - Cr\ :sub:`00` 245 - Cr\ :sub:`00` 260 - Cb\ :sub:`01` 246 - Cb\ :sub:`01` 261 - Cr\ :sub:`01` 247 - Cr\ :sub:`01` 262 * - start + 20: 248 * - start + 20: 263 - Cb\ :sub:`10` 249 - Cb\ :sub:`10` 264 - Cr\ :sub:`10` 250 - Cr\ :sub:`10` 265 - Cb\ :sub:`11` 251 - Cb\ :sub:`11` 266 - Cr\ :sub:`11` 252 - Cr\ :sub:`11` 267 253 268 .. flat-table:: Sample 4x4 NV12M Image 254 .. flat-table:: Sample 4x4 NV12M Image 269 :header-rows: 0 255 :header-rows: 0 270 :stub-columns: 0 256 :stub-columns: 0 271 257 272 * - start0 + 0: 258 * - start0 + 0: 273 - Y'\ :sub:`00` 259 - Y'\ :sub:`00` 274 - Y'\ :sub:`01` 260 - Y'\ :sub:`01` 275 - Y'\ :sub:`02` 261 - Y'\ :sub:`02` 276 - Y'\ :sub:`03` 262 - Y'\ :sub:`03` 277 * - start0 + 4: 263 * - start0 + 4: 278 - Y'\ :sub:`10` 264 - Y'\ :sub:`10` 279 - Y'\ :sub:`11` 265 - Y'\ :sub:`11` 280 - Y'\ :sub:`12` 266 - Y'\ :sub:`12` 281 - Y'\ :sub:`13` 267 - Y'\ :sub:`13` 282 * - start0 + 8: 268 * - start0 + 8: 283 - Y'\ :sub:`20` 269 - Y'\ :sub:`20` 284 - Y'\ :sub:`21` 270 - Y'\ :sub:`21` 285 - Y'\ :sub:`22` 271 - Y'\ :sub:`22` 286 - Y'\ :sub:`23` 272 - Y'\ :sub:`23` 287 * - start0 + 12: 273 * - start0 + 12: 288 - Y'\ :sub:`30` 274 - Y'\ :sub:`30` 289 - Y'\ :sub:`31` 275 - Y'\ :sub:`31` 290 - Y'\ :sub:`32` 276 - Y'\ :sub:`32` 291 - Y'\ :sub:`33` 277 - Y'\ :sub:`33` 292 * - 278 * - 293 * - start1 + 0: 279 * - start1 + 0: 294 - Cb\ :sub:`00` 280 - Cb\ :sub:`00` 295 - Cr\ :sub:`00` 281 - Cr\ :sub:`00` 296 - Cb\ :sub:`01` 282 - Cb\ :sub:`01` 297 - Cr\ :sub:`01` 283 - Cr\ :sub:`01` 298 * - start1 + 4: 284 * - start1 + 4: 299 - Cb\ :sub:`10` 285 - Cb\ :sub:`10` 300 - Cr\ :sub:`10` 286 - Cr\ :sub:`10` 301 - Cb\ :sub:`11` 287 - Cb\ :sub:`11` 302 - Cr\ :sub:`11` 288 - Cr\ :sub:`11` 303 289 304 290 305 .. _V4L2-PIX-FMT-NV12MT: 291 .. _V4L2-PIX-FMT-NV12MT: 306 .. _V4L2-PIX-FMT-NV12MT-16X16: 292 .. _V4L2-PIX-FMT-NV12MT-16X16: 307 .. _V4L2-PIX-FMT-NV12-4L4: 293 .. _V4L2-PIX-FMT-NV12-4L4: 308 .. _V4L2-PIX-FMT-NV12-16L16: 294 .. _V4L2-PIX-FMT-NV12-16L16: 309 .. _V4L2-PIX-FMT-NV12-32L32: 295 .. _V4L2-PIX-FMT-NV12-32L32: 310 .. _V4L2-PIX-FMT-NV12M-8L128: 296 .. _V4L2-PIX-FMT-NV12M-8L128: 311 .. _V4L2-PIX-FMT-NV12-8L128: 297 .. _V4L2-PIX-FMT-NV12-8L128: >> 298 .. _V4L2-PIX-FMT-NV12M-10BE-8L128: >> 299 .. _V4L2-PIX-FMT-NV12-10BE-8L128: 312 .. _V4L2-PIX-FMT-MM21: 300 .. _V4L2-PIX-FMT-MM21: 313 301 314 Tiled NV12 302 Tiled NV12 315 ---------- 303 ---------- 316 304 317 Semi-planar YUV 4:2:0 formats, using macrobloc 305 Semi-planar YUV 4:2:0 formats, using macroblock tiling. The chroma plane is 318 subsampled by 2 in each direction. Chroma line 306 subsampled by 2 in each direction. Chroma lines contain half the number of 319 pixels and the same number of bytes as luma li 307 pixels and the same number of bytes as luma lines, and the chroma plane 320 contains half the number of lines of the luma 308 contains half the number of lines of the luma plane. Each tile follows the 321 previous one linearly in memory (from left to 309 previous one linearly in memory (from left to right, top to bottom). 322 310 323 ``V4L2_PIX_FMT_NV12MT_16X16`` is similar to `` 311 ``V4L2_PIX_FMT_NV12MT_16X16`` is similar to ``V4L2_PIX_FMT_NV12M`` but stores 324 pixels in 2D 16x16 tiles, and stores tiles lin 312 pixels in 2D 16x16 tiles, and stores tiles linearly in memory. 325 The line stride and image height must be align 313 The line stride and image height must be aligned to a multiple of 16. 326 The layouts of the luma and chroma planes are 314 The layouts of the luma and chroma planes are identical. 327 315 328 ``V4L2_PIX_FMT_NV12MT`` is similar to ``V4L2_P 316 ``V4L2_PIX_FMT_NV12MT`` is similar to ``V4L2_PIX_FMT_NV12M`` but stores 329 pixels in 2D 64x32 tiles, and stores 2x2 group 317 pixels in 2D 64x32 tiles, and stores 2x2 groups of tiles in 330 Z-order in memory, alternating Z and mirrored 318 Z-order in memory, alternating Z and mirrored Z shapes horizontally. 331 The line stride must be a multiple of 128 pixe 319 The line stride must be a multiple of 128 pixels to ensure an 332 integer number of Z shapes. The image height m 320 integer number of Z shapes. The image height must be a multiple of 32 pixels. 333 If the vertical resolution is an odd number of 321 If the vertical resolution is an odd number of tiles, the last row of 334 tiles is stored in linear order. The layouts o 322 tiles is stored in linear order. The layouts of the luma and chroma 335 planes are identical. 323 planes are identical. 336 324 337 .. _nv12mt: << 338 << 339 .. kernel-figure:: nv12mt.svg << 340 :alt: nv12mt.svg << 341 :align: center << 342 << 343 V4L2_PIX_FMT_NV12MT macroblock Z shape mem << 344 << 345 .. _nv12mt_ex: << 346 << 347 .. kernel-figure:: nv12mt_example.svg << 348 :alt: nv12mt_example.svg << 349 :align: center << 350 << 351 Example V4L2_PIX_FMT_NV12MT memory layout << 352 << 353 ``V4L2_PIX_FMT_NV12_4L4`` stores pixels in 4x4 325 ``V4L2_PIX_FMT_NV12_4L4`` stores pixels in 4x4 tiles, and stores 354 tiles linearly in memory. The line stride and 326 tiles linearly in memory. The line stride and image height must be 355 aligned to a multiple of 4. The layouts of the 327 aligned to a multiple of 4. The layouts of the luma and chroma planes are 356 identical. 328 identical. 357 329 358 ``V4L2_PIX_FMT_NV12_16L16`` stores pixels in 1 330 ``V4L2_PIX_FMT_NV12_16L16`` stores pixels in 16x16 tiles, and stores 359 tiles linearly in memory. The line stride and 331 tiles linearly in memory. The line stride and image height must be 360 aligned to a multiple of 16. The layouts of th 332 aligned to a multiple of 16. The layouts of the luma and chroma planes are 361 identical. 333 identical. 362 334 363 ``V4L2_PIX_FMT_NV12_32L32`` stores pixels in 3 335 ``V4L2_PIX_FMT_NV12_32L32`` stores pixels in 32x32 tiles, and stores 364 tiles linearly in memory. The line stride and 336 tiles linearly in memory. The line stride and image height must be 365 aligned to a multiple of 32. The layouts of th 337 aligned to a multiple of 32. The layouts of the luma and chroma planes are 366 identical. 338 identical. 367 339 368 ``V4L2_PIX_FMT_NV12M_8L128`` is similar to ``V 340 ``V4L2_PIX_FMT_NV12M_8L128`` is similar to ``V4L2_PIX_FMT_NV12M`` but stores 369 pixels in 2D 8x128 tiles, and stores tiles lin 341 pixels in 2D 8x128 tiles, and stores tiles linearly in memory. 370 The image height must be aligned to a multiple 342 The image height must be aligned to a multiple of 128. 371 The layouts of the luma and chroma planes are 343 The layouts of the luma and chroma planes are identical. 372 344 373 ``V4L2_PIX_FMT_NV12_8L128`` is similar to ``V4 345 ``V4L2_PIX_FMT_NV12_8L128`` is similar to ``V4L2_PIX_FMT_NV12M_8L128`` but stores 374 two planes in one memory. 346 two planes in one memory. 375 347 376 ``V4L2_PIX_FMT_MM21`` store luma pixel in 16x3 << 377 in 16x16 tiles. The line stride must be aligne << 378 image height must be aligned to a multiple of << 379 tiles are identical, even though the tile size << 380 two non-contiguous planes. << 381 << 382 << 383 .. _V4L2-PIX-FMT-NV15-4L4: << 384 .. _V4L2-PIX-FMT-NV12M-10BE-8L128: << 385 .. _V4L2-PIX-FMT-NV12-10BE-8L128: << 386 .. _V4L2-PIX-FMT-MT2110T: << 387 .. _V4L2-PIX-FMT-MT2110R: << 388 << 389 Tiled NV15 << 390 ---------- << 391 << 392 ``V4L2_PIX_FMT_NV15_4L4`` Semi-planar 10-bit Y << 393 All components are packed without any padding << 394 As a side-effect, each group of 4 components a << 395 (YYYY or UVUV = 4 * 10 bits = 40 bits = 5 byte << 396 << 397 ``V4L2_PIX_FMT_NV12M_10BE_8L128`` is similar t 348 ``V4L2_PIX_FMT_NV12M_10BE_8L128`` is similar to ``V4L2_PIX_FMT_NV12M`` but stores 398 10 bits pixels in 2D 8x128 tiles, and stores t 349 10 bits pixels in 2D 8x128 tiles, and stores tiles linearly in memory. 399 the data is arranged in big endian order. 350 the data is arranged in big endian order. 400 The image height must be aligned to a multiple 351 The image height must be aligned to a multiple of 128. 401 The layouts of the luma and chroma planes are 352 The layouts of the luma and chroma planes are identical. 402 Note the tile size is 8bytes multiplied by 128 353 Note the tile size is 8bytes multiplied by 128 bytes, 403 it means that the low bits and high bits of on 354 it means that the low bits and high bits of one pixel may be in different tiles. 404 The 10 bit pixels are packed, so 5 bytes conta 355 The 10 bit pixels are packed, so 5 bytes contain 4 10-bit pixels layout like 405 this (for luma): 356 this (for luma): 406 byte 0: Y0(bits 9-2) 357 byte 0: Y0(bits 9-2) 407 byte 1: Y0(bits 1-0) Y1(bits 9-4) 358 byte 1: Y0(bits 1-0) Y1(bits 9-4) 408 byte 2: Y1(bits 3-0) Y2(bits 9-6) 359 byte 2: Y1(bits 3-0) Y2(bits 9-6) 409 byte 3: Y2(bits 5-0) Y3(bits 9-8) 360 byte 3: Y2(bits 5-0) Y3(bits 9-8) 410 byte 4: Y3(bits 7-0) 361 byte 4: Y3(bits 7-0) 411 362 412 ``V4L2_PIX_FMT_NV12_10BE_8L128`` is similar to 363 ``V4L2_PIX_FMT_NV12_10BE_8L128`` is similar to ``V4L2_PIX_FMT_NV12M_10BE_8L128`` but stores 413 two planes in one memory. 364 two planes in one memory. 414 365 415 ``V4L2_PIX_FMT_MT2110T`` is one of Mediatek pa !! 366 ``V4L2_PIX_FMT_MM21`` store luma pixel in 16x32 tiles, and chroma pixels 416 It is fully packed 10bit 4:2:0 format like NV1 !! 367 in 16x16 tiles. The line stride must be aligned to a multiple of 16 and the 417 that the lower two bits data is stored in sepa !! 368 image height must be aligned to a multiple of 32. The number of luma and chroma 418 composed of 16x32 luma tiles, and 16x16 chroma !! 369 tiles are identical, even though the tile size differ. The image is formed of 419 long, divided into 8 partitions of 80 bytes. !! 370 two non-contiguous planes. 420 partition represent the 2 least significant bi !! 371 421 64 bytes represent the 8 most significant bits !! 372 .. _nv12mt: 422 373 423 .. kernel-figure:: mt2110t.svg !! 374 .. kernel-figure:: nv12mt.svg 424 :alt: mt2110t.svg !! 375 :alt: nv12mt.svg 425 :align: center 376 :align: center 426 377 427 Layout of MT2110T Chroma Tile !! 378 V4L2_PIX_FMT_NV12MT macroblock Z shape memory layout 428 379 429 Filtering out the upper part of each partition !! 380 .. _nv12mt_ex: 430 ``V4L2_PIX_FMT_MM21`` frame. A partition is a << 431 lower two bits is said to be tiled since each << 432 bits of the column of for pixel matching the s << 433 only have 4 partitions. << 434 << 435 .. flat-table:: MT2110T LSB bits layout << 436 :header-rows: 1 << 437 :stub-columns: 1 << 438 381 439 * - !! 382 .. kernel-figure:: nv12mt_example.svg 440 - start + 0: !! 383 :alt: nv12mt_example.svg 441 - start + 1: !! 384 :align: center 442 - . . . << 443 - start\ +\ 15: << 444 * - Bits 1:0 << 445 - Y'\ :sub:`0:0` << 446 - Y'\ :sub:`0:1` << 447 - . . . << 448 - Y'\ :sub:`0:15` << 449 * - Bit 3:2 << 450 - Y'\ :sub:`1:0` << 451 - Y'\ :sub:`1:1` << 452 - . . . << 453 - Y'\ :sub:`1:15` << 454 * - Bits 5:4 << 455 - Y'\ :sub:`2:0` << 456 - Y'\ :sub:`2:1` << 457 - . . . << 458 - Y'\ :sub:`2:15` << 459 * - Bits 7:6 << 460 - Y'\ :sub:`3:0` << 461 - Y'\ :sub:`3:1` << 462 - . . . << 463 - Y'\ :sub:`3:15` << 464 << 465 ``V4L2_PIX_FMT_MT2110R`` is identical to ``V4L << 466 the least significant two bits layout is in ra << 467 contains 4 pixels of the first row, with 4 byt << 468 << 469 .. flat-table:: MT2110R LSB bits layout << 470 :header-rows: 2 << 471 :stub-columns: 1 << 472 385 473 * - !! 386 Example V4L2_PIX_FMT_NV12MT memory layout of tiles 474 - :cspan:`3` Byte 0 << 475 - ... << 476 - :cspan:`3` Byte 3 << 477 * - << 478 - 7:6 << 479 - 5:4 << 480 - 3:2 << 481 - 1:0 << 482 - ... << 483 - 7:6 << 484 - 5:4 << 485 - 3:2 << 486 - 1:0 << 487 * - start + 0: << 488 - Y'\ :sub:`0:3` << 489 - Y'\ :sub:`0:2` << 490 - Y'\ :sub:`0:1` << 491 - Y'\ :sub:`0:0` << 492 - ... << 493 - Y'\ :sub:`0:15` << 494 - Y'\ :sub:`0:14` << 495 - Y'\ :sub:`0:13` << 496 - Y'\ :sub:`0:12` << 497 * - start + 4: << 498 - Y'\ :sub:`1:3` << 499 - Y'\ :sub:`1:2` << 500 - Y'\ :sub:`1:1` << 501 - Y'\ :sub:`1:0` << 502 - ... << 503 - Y'\ :sub:`1:15` << 504 - Y'\ :sub:`1:14` << 505 - Y'\ :sub:`1:13` << 506 - Y'\ :sub:`1:12` << 507 * - start + 8: << 508 - Y'\ :sub:`2:3` << 509 - Y'\ :sub:`2:2` << 510 - Y'\ :sub:`2:1` << 511 - Y'\ :sub:`2:0` << 512 - ... << 513 - Y'\ :sub:`2:15` << 514 - Y'\ :sub:`2:14` << 515 - Y'\ :sub:`2:13` << 516 - Y'\ :sub:`2:12` << 517 * - start\ +\ 12: << 518 - Y'\ :sub:`3:3` << 519 - Y'\ :sub:`3:2` << 520 - Y'\ :sub:`3:1` << 521 - Y'\ :sub:`3:0` << 522 - ... << 523 - Y'\ :sub:`3:15` << 524 - Y'\ :sub:`3:14` << 525 - Y'\ :sub:`3:13` << 526 - Y'\ :sub:`3:12` << 527 387 >> 388 .. _V4L2-PIX-FMT-NV15-4L4: >> 389 >> 390 Tiled NV15 >> 391 ---------- >> 392 >> 393 Semi-planar 10-bit YUV 4:2:0 formats, using 4x4 tiling. >> 394 All components are packed without any padding between each other. >> 395 As a side-effect, each group of 4 components are stored over 5 bytes >> 396 (YYYY or UVUV = 4 * 10 bits = 40 bits = 5 bytes). 528 397 529 .. _V4L2-PIX-FMT-NV16: 398 .. _V4L2-PIX-FMT-NV16: 530 .. _V4L2-PIX-FMT-NV61: 399 .. _V4L2-PIX-FMT-NV61: 531 .. _V4L2-PIX-FMT-NV16M: 400 .. _V4L2-PIX-FMT-NV16M: 532 .. _V4L2-PIX-FMT-NV61M: 401 .. _V4L2-PIX-FMT-NV61M: 533 402 534 NV16, NV61, NV16M and NV61M 403 NV16, NV61, NV16M and NV61M 535 --------------------------- 404 --------------------------- 536 405 537 Semi-planar YUV 4:2:2 formats. The chroma plan 406 Semi-planar YUV 4:2:2 formats. The chroma plane is subsampled by 2 in the 538 horizontal direction. Chroma lines contain hal 407 horizontal direction. Chroma lines contain half the number of pixels and the 539 same number of bytes as luma lines, and the ch 408 same number of bytes as luma lines, and the chroma plane contains the same 540 number of lines as the luma plane. 409 number of lines as the luma plane. 541 410 542 .. flat-table:: Sample 4x4 NV16 Image 411 .. flat-table:: Sample 4x4 NV16 Image 543 :header-rows: 0 412 :header-rows: 0 544 :stub-columns: 0 413 :stub-columns: 0 545 414 546 * - start + 0: 415 * - start + 0: 547 - Y'\ :sub:`00` 416 - Y'\ :sub:`00` 548 - Y'\ :sub:`01` 417 - Y'\ :sub:`01` 549 - Y'\ :sub:`02` 418 - Y'\ :sub:`02` 550 - Y'\ :sub:`03` 419 - Y'\ :sub:`03` 551 * - start + 4: 420 * - start + 4: 552 - Y'\ :sub:`10` 421 - Y'\ :sub:`10` 553 - Y'\ :sub:`11` 422 - Y'\ :sub:`11` 554 - Y'\ :sub:`12` 423 - Y'\ :sub:`12` 555 - Y'\ :sub:`13` 424 - Y'\ :sub:`13` 556 * - start + 8: 425 * - start + 8: 557 - Y'\ :sub:`20` 426 - Y'\ :sub:`20` 558 - Y'\ :sub:`21` 427 - Y'\ :sub:`21` 559 - Y'\ :sub:`22` 428 - Y'\ :sub:`22` 560 - Y'\ :sub:`23` 429 - Y'\ :sub:`23` 561 * - start + 12: 430 * - start + 12: 562 - Y'\ :sub:`30` 431 - Y'\ :sub:`30` 563 - Y'\ :sub:`31` 432 - Y'\ :sub:`31` 564 - Y'\ :sub:`32` 433 - Y'\ :sub:`32` 565 - Y'\ :sub:`33` 434 - Y'\ :sub:`33` 566 * - start + 16: 435 * - start + 16: 567 - Cb\ :sub:`00` 436 - Cb\ :sub:`00` 568 - Cr\ :sub:`00` 437 - Cr\ :sub:`00` 569 - Cb\ :sub:`01` 438 - Cb\ :sub:`01` 570 - Cr\ :sub:`01` 439 - Cr\ :sub:`01` 571 * - start + 20: 440 * - start + 20: 572 - Cb\ :sub:`10` 441 - Cb\ :sub:`10` 573 - Cr\ :sub:`10` 442 - Cr\ :sub:`10` 574 - Cb\ :sub:`11` 443 - Cb\ :sub:`11` 575 - Cr\ :sub:`11` 444 - Cr\ :sub:`11` 576 * - start + 24: 445 * - start + 24: 577 - Cb\ :sub:`20` 446 - Cb\ :sub:`20` 578 - Cr\ :sub:`20` 447 - Cr\ :sub:`20` 579 - Cb\ :sub:`21` 448 - Cb\ :sub:`21` 580 - Cr\ :sub:`21` 449 - Cr\ :sub:`21` 581 * - start + 28: 450 * - start + 28: 582 - Cb\ :sub:`30` 451 - Cb\ :sub:`30` 583 - Cr\ :sub:`30` 452 - Cr\ :sub:`30` 584 - Cb\ :sub:`31` 453 - Cb\ :sub:`31` 585 - Cr\ :sub:`31` 454 - Cr\ :sub:`31` 586 455 587 .. flat-table:: Sample 4x4 NV16M Image 456 .. flat-table:: Sample 4x4 NV16M Image 588 :header-rows: 0 457 :header-rows: 0 589 :stub-columns: 0 458 :stub-columns: 0 590 459 591 * - start0 + 0: 460 * - start0 + 0: 592 - Y'\ :sub:`00` 461 - Y'\ :sub:`00` 593 - Y'\ :sub:`01` 462 - Y'\ :sub:`01` 594 - Y'\ :sub:`02` 463 - Y'\ :sub:`02` 595 - Y'\ :sub:`03` 464 - Y'\ :sub:`03` 596 * - start0 + 4: 465 * - start0 + 4: 597 - Y'\ :sub:`10` 466 - Y'\ :sub:`10` 598 - Y'\ :sub:`11` 467 - Y'\ :sub:`11` 599 - Y'\ :sub:`12` 468 - Y'\ :sub:`12` 600 - Y'\ :sub:`13` 469 - Y'\ :sub:`13` 601 * - start0 + 8: 470 * - start0 + 8: 602 - Y'\ :sub:`20` 471 - Y'\ :sub:`20` 603 - Y'\ :sub:`21` 472 - Y'\ :sub:`21` 604 - Y'\ :sub:`22` 473 - Y'\ :sub:`22` 605 - Y'\ :sub:`23` 474 - Y'\ :sub:`23` 606 * - start0 + 12: 475 * - start0 + 12: 607 - Y'\ :sub:`30` 476 - Y'\ :sub:`30` 608 - Y'\ :sub:`31` 477 - Y'\ :sub:`31` 609 - Y'\ :sub:`32` 478 - Y'\ :sub:`32` 610 - Y'\ :sub:`33` 479 - Y'\ :sub:`33` 611 * - 480 * - 612 * - start1 + 0: 481 * - start1 + 0: 613 - Cb\ :sub:`00` 482 - Cb\ :sub:`00` 614 - Cr\ :sub:`00` 483 - Cr\ :sub:`00` 615 - Cb\ :sub:`02` 484 - Cb\ :sub:`02` 616 - Cr\ :sub:`02` 485 - Cr\ :sub:`02` 617 * - start1 + 4: 486 * - start1 + 4: 618 - Cb\ :sub:`10` 487 - Cb\ :sub:`10` 619 - Cr\ :sub:`10` 488 - Cr\ :sub:`10` 620 - Cb\ :sub:`12` 489 - Cb\ :sub:`12` 621 - Cr\ :sub:`12` 490 - Cr\ :sub:`12` 622 * - start1 + 8: 491 * - start1 + 8: 623 - Cb\ :sub:`20` 492 - Cb\ :sub:`20` 624 - Cr\ :sub:`20` 493 - Cr\ :sub:`20` 625 - Cb\ :sub:`22` 494 - Cb\ :sub:`22` 626 - Cr\ :sub:`22` 495 - Cr\ :sub:`22` 627 * - start1 + 12: 496 * - start1 + 12: 628 - Cb\ :sub:`30` 497 - Cb\ :sub:`30` 629 - Cr\ :sub:`30` 498 - Cr\ :sub:`30` 630 - Cb\ :sub:`32` 499 - Cb\ :sub:`32` 631 - Cr\ :sub:`32` 500 - Cr\ :sub:`32` 632 501 633 502 634 .. _V4L2-PIX-FMT-NV24: 503 .. _V4L2-PIX-FMT-NV24: 635 .. _V4L2-PIX-FMT-NV42: 504 .. _V4L2-PIX-FMT-NV42: 636 505 637 NV24 and NV42 506 NV24 and NV42 638 ------------- 507 ------------- 639 508 640 Semi-planar YUV 4:4:4 formats. The chroma plan 509 Semi-planar YUV 4:4:4 formats. The chroma plane is not subsampled. 641 Chroma lines contain the same number of pixels 510 Chroma lines contain the same number of pixels and twice the 642 number of bytes as luma lines, and the chroma 511 number of bytes as luma lines, and the chroma plane contains the same 643 number of lines as the luma plane. 512 number of lines as the luma plane. 644 513 645 .. flat-table:: Sample 4x4 NV24 Image 514 .. flat-table:: Sample 4x4 NV24 Image 646 :header-rows: 0 515 :header-rows: 0 647 :stub-columns: 0 516 :stub-columns: 0 648 517 649 * - start + 0: 518 * - start + 0: 650 - Y'\ :sub:`00` 519 - Y'\ :sub:`00` 651 - Y'\ :sub:`01` 520 - Y'\ :sub:`01` 652 - Y'\ :sub:`02` 521 - Y'\ :sub:`02` 653 - Y'\ :sub:`03` 522 - Y'\ :sub:`03` 654 * - start + 4: 523 * - start + 4: 655 - Y'\ :sub:`10` 524 - Y'\ :sub:`10` 656 - Y'\ :sub:`11` 525 - Y'\ :sub:`11` 657 - Y'\ :sub:`12` 526 - Y'\ :sub:`12` 658 - Y'\ :sub:`13` 527 - Y'\ :sub:`13` 659 * - start + 8: 528 * - start + 8: 660 - Y'\ :sub:`20` 529 - Y'\ :sub:`20` 661 - Y'\ :sub:`21` 530 - Y'\ :sub:`21` 662 - Y'\ :sub:`22` 531 - Y'\ :sub:`22` 663 - Y'\ :sub:`23` 532 - Y'\ :sub:`23` 664 * - start + 12: 533 * - start + 12: 665 - Y'\ :sub:`30` 534 - Y'\ :sub:`30` 666 - Y'\ :sub:`31` 535 - Y'\ :sub:`31` 667 - Y'\ :sub:`32` 536 - Y'\ :sub:`32` 668 - Y'\ :sub:`33` 537 - Y'\ :sub:`33` 669 * - start + 16: 538 * - start + 16: 670 - Cb\ :sub:`00` 539 - Cb\ :sub:`00` 671 - Cr\ :sub:`00` 540 - Cr\ :sub:`00` 672 - Cb\ :sub:`01` 541 - Cb\ :sub:`01` 673 - Cr\ :sub:`01` 542 - Cr\ :sub:`01` 674 - Cb\ :sub:`02` 543 - Cb\ :sub:`02` 675 - Cr\ :sub:`02` 544 - Cr\ :sub:`02` 676 - Cb\ :sub:`03` 545 - Cb\ :sub:`03` 677 - Cr\ :sub:`03` 546 - Cr\ :sub:`03` 678 * - start + 24: 547 * - start + 24: 679 - Cb\ :sub:`10` 548 - Cb\ :sub:`10` 680 - Cr\ :sub:`10` 549 - Cr\ :sub:`10` 681 - Cb\ :sub:`11` 550 - Cb\ :sub:`11` 682 - Cr\ :sub:`11` 551 - Cr\ :sub:`11` 683 - Cb\ :sub:`12` 552 - Cb\ :sub:`12` 684 - Cr\ :sub:`12` 553 - Cr\ :sub:`12` 685 - Cb\ :sub:`13` 554 - Cb\ :sub:`13` 686 - Cr\ :sub:`13` 555 - Cr\ :sub:`13` 687 * - start + 32: 556 * - start + 32: 688 - Cb\ :sub:`20` 557 - Cb\ :sub:`20` 689 - Cr\ :sub:`20` 558 - Cr\ :sub:`20` 690 - Cb\ :sub:`21` 559 - Cb\ :sub:`21` 691 - Cr\ :sub:`21` 560 - Cr\ :sub:`21` 692 - Cb\ :sub:`22` 561 - Cb\ :sub:`22` 693 - Cr\ :sub:`22` 562 - Cr\ :sub:`22` 694 - Cb\ :sub:`23` 563 - Cb\ :sub:`23` 695 - Cr\ :sub:`23` 564 - Cr\ :sub:`23` 696 * - start + 40: 565 * - start + 40: 697 - Cb\ :sub:`30` 566 - Cb\ :sub:`30` 698 - Cr\ :sub:`30` 567 - Cr\ :sub:`30` 699 - Cb\ :sub:`31` 568 - Cb\ :sub:`31` 700 - Cr\ :sub:`31` 569 - Cr\ :sub:`31` 701 - Cb\ :sub:`32` 570 - Cb\ :sub:`32` 702 - Cr\ :sub:`32` 571 - Cr\ :sub:`32` 703 - Cb\ :sub:`33` 572 - Cb\ :sub:`33` 704 - Cr\ :sub:`33` 573 - Cr\ :sub:`33` 705 574 706 .. _V4L2_PIX_FMT_P010: 575 .. _V4L2_PIX_FMT_P010: 707 .. _V4L2-PIX-FMT-P010-4L4: 576 .. _V4L2-PIX-FMT-P010-4L4: 708 577 709 P010 and tiled P010 578 P010 and tiled P010 710 ------------------- 579 ------------------- 711 580 712 P010 is like NV12 with 10 bits per component, 581 P010 is like NV12 with 10 bits per component, expanded to 16 bits. 713 Data in the 10 high bits, zeros in the 6 low b 582 Data in the 10 high bits, zeros in the 6 low bits, arranged in little endian order. 714 583 715 .. flat-table:: Sample 4x4 P010 Image 584 .. flat-table:: Sample 4x4 P010 Image 716 :header-rows: 0 585 :header-rows: 0 717 :stub-columns: 0 586 :stub-columns: 0 718 587 719 * - start + 0: 588 * - start + 0: 720 - Y'\ :sub:`00` 589 - Y'\ :sub:`00` 721 - Y'\ :sub:`01` 590 - Y'\ :sub:`01` 722 - Y'\ :sub:`02` 591 - Y'\ :sub:`02` 723 - Y'\ :sub:`03` 592 - Y'\ :sub:`03` 724 * - start + 8: 593 * - start + 8: 725 - Y'\ :sub:`10` 594 - Y'\ :sub:`10` 726 - Y'\ :sub:`11` 595 - Y'\ :sub:`11` 727 - Y'\ :sub:`12` 596 - Y'\ :sub:`12` 728 - Y'\ :sub:`13` 597 - Y'\ :sub:`13` 729 * - start + 16: 598 * - start + 16: 730 - Y'\ :sub:`20` 599 - Y'\ :sub:`20` 731 - Y'\ :sub:`21` 600 - Y'\ :sub:`21` 732 - Y'\ :sub:`22` 601 - Y'\ :sub:`22` 733 - Y'\ :sub:`23` 602 - Y'\ :sub:`23` 734 * - start + 24: 603 * - start + 24: 735 - Y'\ :sub:`30` 604 - Y'\ :sub:`30` 736 - Y'\ :sub:`31` 605 - Y'\ :sub:`31` 737 - Y'\ :sub:`32` 606 - Y'\ :sub:`32` 738 - Y'\ :sub:`33` 607 - Y'\ :sub:`33` 739 * - start + 32: 608 * - start + 32: 740 - Cb\ :sub:`00` 609 - Cb\ :sub:`00` 741 - Cr\ :sub:`00` 610 - Cr\ :sub:`00` 742 - Cb\ :sub:`01` 611 - Cb\ :sub:`01` 743 - Cr\ :sub:`01` 612 - Cr\ :sub:`01` 744 * - start + 40: 613 * - start + 40: 745 - Cb\ :sub:`10` 614 - Cb\ :sub:`10` 746 - Cr\ :sub:`10` 615 - Cr\ :sub:`10` 747 - Cb\ :sub:`11` 616 - Cb\ :sub:`11` 748 - Cr\ :sub:`11` 617 - Cr\ :sub:`11` 749 618 750 .. _V4L2-PIX-FMT-P012: 619 .. _V4L2-PIX-FMT-P012: 751 .. _V4L2-PIX-FMT-P012M: 620 .. _V4L2-PIX-FMT-P012M: 752 621 753 P012 and P012M 622 P012 and P012M 754 -------------- 623 -------------- 755 624 756 P012 is like NV12 with 12 bits per component, 625 P012 is like NV12 with 12 bits per component, expanded to 16 bits. 757 Data in the 12 high bits, zeros in the 4 low b 626 Data in the 12 high bits, zeros in the 4 low bits, arranged in little endian order. 758 627 759 .. flat-table:: Sample 4x4 P012 Image 628 .. flat-table:: Sample 4x4 P012 Image 760 :header-rows: 0 629 :header-rows: 0 761 :stub-columns: 0 630 :stub-columns: 0 762 631 763 * - start + 0: 632 * - start + 0: 764 - Y'\ :sub:`00` 633 - Y'\ :sub:`00` 765 - Y'\ :sub:`01` 634 - Y'\ :sub:`01` 766 - Y'\ :sub:`02` 635 - Y'\ :sub:`02` 767 - Y'\ :sub:`03` 636 - Y'\ :sub:`03` 768 * - start + 8: 637 * - start + 8: 769 - Y'\ :sub:`10` 638 - Y'\ :sub:`10` 770 - Y'\ :sub:`11` 639 - Y'\ :sub:`11` 771 - Y'\ :sub:`12` 640 - Y'\ :sub:`12` 772 - Y'\ :sub:`13` 641 - Y'\ :sub:`13` 773 * - start + 16: 642 * - start + 16: 774 - Y'\ :sub:`20` 643 - Y'\ :sub:`20` 775 - Y'\ :sub:`21` 644 - Y'\ :sub:`21` 776 - Y'\ :sub:`22` 645 - Y'\ :sub:`22` 777 - Y'\ :sub:`23` 646 - Y'\ :sub:`23` 778 * - start + 24: 647 * - start + 24: 779 - Y'\ :sub:`30` 648 - Y'\ :sub:`30` 780 - Y'\ :sub:`31` 649 - Y'\ :sub:`31` 781 - Y'\ :sub:`32` 650 - Y'\ :sub:`32` 782 - Y'\ :sub:`33` 651 - Y'\ :sub:`33` 783 * - start + 32: 652 * - start + 32: 784 - Cb\ :sub:`00` 653 - Cb\ :sub:`00` 785 - Cr\ :sub:`00` 654 - Cr\ :sub:`00` 786 - Cb\ :sub:`01` 655 - Cb\ :sub:`01` 787 - Cr\ :sub:`01` 656 - Cr\ :sub:`01` 788 * - start + 40: 657 * - start + 40: 789 - Cb\ :sub:`10` 658 - Cb\ :sub:`10` 790 - Cr\ :sub:`10` 659 - Cr\ :sub:`10` 791 - Cb\ :sub:`11` 660 - Cb\ :sub:`11` 792 - Cr\ :sub:`11` 661 - Cr\ :sub:`11` 793 662 794 .. flat-table:: Sample 4x4 P012M Image 663 .. flat-table:: Sample 4x4 P012M Image 795 :header-rows: 0 664 :header-rows: 0 796 :stub-columns: 0 665 :stub-columns: 0 797 666 798 * - start0 + 0: 667 * - start0 + 0: 799 - Y'\ :sub:`00` 668 - Y'\ :sub:`00` 800 - Y'\ :sub:`01` 669 - Y'\ :sub:`01` 801 - Y'\ :sub:`02` 670 - Y'\ :sub:`02` 802 - Y'\ :sub:`03` 671 - Y'\ :sub:`03` 803 * - start0 + 8: 672 * - start0 + 8: 804 - Y'\ :sub:`10` 673 - Y'\ :sub:`10` 805 - Y'\ :sub:`11` 674 - Y'\ :sub:`11` 806 - Y'\ :sub:`12` 675 - Y'\ :sub:`12` 807 - Y'\ :sub:`13` 676 - Y'\ :sub:`13` 808 * - start0 + 16: 677 * - start0 + 16: 809 - Y'\ :sub:`20` 678 - Y'\ :sub:`20` 810 - Y'\ :sub:`21` 679 - Y'\ :sub:`21` 811 - Y'\ :sub:`22` 680 - Y'\ :sub:`22` 812 - Y'\ :sub:`23` 681 - Y'\ :sub:`23` 813 * - start0 + 24: 682 * - start0 + 24: 814 - Y'\ :sub:`30` 683 - Y'\ :sub:`30` 815 - Y'\ :sub:`31` 684 - Y'\ :sub:`31` 816 - Y'\ :sub:`32` 685 - Y'\ :sub:`32` 817 - Y'\ :sub:`33` 686 - Y'\ :sub:`33` 818 * - 687 * - 819 * - start1 + 0: 688 * - start1 + 0: 820 - Cb\ :sub:`00` 689 - Cb\ :sub:`00` 821 - Cr\ :sub:`00` 690 - Cr\ :sub:`00` 822 - Cb\ :sub:`01` 691 - Cb\ :sub:`01` 823 - Cr\ :sub:`01` 692 - Cr\ :sub:`01` 824 * - start1 + 8: 693 * - start1 + 8: 825 - Cb\ :sub:`10` 694 - Cb\ :sub:`10` 826 - Cr\ :sub:`10` 695 - Cr\ :sub:`10` 827 - Cb\ :sub:`11` 696 - Cb\ :sub:`11` 828 - Cr\ :sub:`11` 697 - Cr\ :sub:`11` 829 698 830 699 831 Fully Planar YUV Formats 700 Fully Planar YUV Formats 832 ======================== 701 ======================== 833 702 834 These formats store the Y, Cb and Cr component 703 These formats store the Y, Cb and Cr components in three separate planes. The 835 luma plane comes first, and the order of the t 704 luma plane comes first, and the order of the two chroma planes varies between 836 formats. The two chroma planes always use the 705 formats. The two chroma planes always use the same subsampling. 837 706 838 For memory contiguous formats, the number of p 707 For memory contiguous formats, the number of padding pixels at the end of the 839 chroma lines is identical to the padding of th 708 chroma lines is identical to the padding of the luma lines. The chroma line 840 stride (in bytes) is thus equal to the luma li 709 stride (in bytes) is thus equal to the luma line stride divided by the 841 horizontal subsampling factor. Vertical subsam 710 horizontal subsampling factor. Vertical subsampling doesn't affect the line 842 stride. 711 stride. 843 712 844 For non-contiguous formats, no constraints are 713 For non-contiguous formats, no constraints are enforced by the format on the 845 relationship between the luma and chroma line 714 relationship between the luma and chroma line padding and stride. 846 715 847 All components are stored with the same number 716 All components are stored with the same number of bits per component. 848 717 849 ``V4L2_PIX_FMT_P010_4L4`` stores pixels in 4x4 718 ``V4L2_PIX_FMT_P010_4L4`` stores pixels in 4x4 tiles, and stores tiles linearly 850 in memory. The line stride must be aligned to 719 in memory. The line stride must be aligned to multiple of 8 and image height to 851 a multiple of 4. The layouts of the luma and c 720 a multiple of 4. The layouts of the luma and chroma planes are identical. 852 721 853 .. raw:: latex 722 .. raw:: latex 854 723 855 \small 724 \small 856 725 857 .. tabularcolumns:: |p{5.0cm}|p{1.1cm}|p{1.5cm 726 .. tabularcolumns:: |p{5.0cm}|p{1.1cm}|p{1.5cm}|p{2.2cm}|p{1.2cm}|p{3.7cm}| 858 727 859 .. flat-table:: Overview of Fully Planar YUV F 728 .. flat-table:: Overview of Fully Planar YUV Formats 860 :header-rows: 1 729 :header-rows: 1 861 :stub-columns: 0 730 :stub-columns: 0 862 731 863 * - Identifier 732 * - Identifier 864 - Code 733 - Code 865 - Bits per component 734 - Bits per component 866 - Subsampling 735 - Subsampling 867 - Planes order [4]_ 736 - Planes order [4]_ 868 - Contiguous [5]_ 737 - Contiguous [5]_ 869 738 870 * - V4L2_PIX_FMT_YUV410 739 * - V4L2_PIX_FMT_YUV410 871 - 'YUV9' 740 - 'YUV9' 872 - 8 741 - 8 873 - 4:1:0 742 - 4:1:0 874 - Y, Cb, Cr 743 - Y, Cb, Cr 875 - Yes 744 - Yes 876 * - V4L2_PIX_FMT_YVU410 745 * - V4L2_PIX_FMT_YVU410 877 - 'YVU9' 746 - 'YVU9' 878 - 8 747 - 8 879 - 4:1:0 748 - 4:1:0 880 - Y, Cr, Cb 749 - Y, Cr, Cb 881 - Yes 750 - Yes 882 * - V4L2_PIX_FMT_YUV411P 751 * - V4L2_PIX_FMT_YUV411P 883 - '411P' 752 - '411P' 884 - 8 753 - 8 885 - 4:1:1 754 - 4:1:1 886 - Y, Cb, Cr 755 - Y, Cb, Cr 887 - Yes 756 - Yes 888 * - V4L2_PIX_FMT_YUV420M 757 * - V4L2_PIX_FMT_YUV420M 889 - 'YM12' 758 - 'YM12' 890 - 8 759 - 8 891 - 4:2:0 760 - 4:2:0 892 - Y, Cb, Cr 761 - Y, Cb, Cr 893 - No 762 - No 894 * - V4L2_PIX_FMT_YVU420M 763 * - V4L2_PIX_FMT_YVU420M 895 - 'YM21' 764 - 'YM21' 896 - 8 765 - 8 897 - 4:2:0 766 - 4:2:0 898 - Y, Cr, Cb 767 - Y, Cr, Cb 899 - No 768 - No 900 * - V4L2_PIX_FMT_YUV420 769 * - V4L2_PIX_FMT_YUV420 901 - 'YU12' 770 - 'YU12' 902 - 8 771 - 8 903 - 4:2:0 772 - 4:2:0 904 - Y, Cb, Cr 773 - Y, Cb, Cr 905 - Yes 774 - Yes 906 * - V4L2_PIX_FMT_YVU420 775 * - V4L2_PIX_FMT_YVU420 907 - 'YV12' 776 - 'YV12' 908 - 8 777 - 8 909 - 4:2:0 778 - 4:2:0 910 - Y, Cr, Cb 779 - Y, Cr, Cb 911 - Yes 780 - Yes 912 * - V4L2_PIX_FMT_YUV422P 781 * - V4L2_PIX_FMT_YUV422P 913 - '422P' 782 - '422P' 914 - 8 783 - 8 915 - 4:2:2 784 - 4:2:2 916 - Y, Cb, Cr 785 - Y, Cb, Cr 917 - Yes 786 - Yes 918 * - V4L2_PIX_FMT_YUV422M 787 * - V4L2_PIX_FMT_YUV422M 919 - 'YM16' 788 - 'YM16' 920 - 8 789 - 8 921 - 4:2:2 790 - 4:2:2 922 - Y, Cb, Cr 791 - Y, Cb, Cr 923 - No 792 - No 924 * - V4L2_PIX_FMT_YVU422M 793 * - V4L2_PIX_FMT_YVU422M 925 - 'YM61' 794 - 'YM61' 926 - 8 795 - 8 927 - 4:2:2 796 - 4:2:2 928 - Y, Cr, Cb 797 - Y, Cr, Cb 929 - No 798 - No 930 * - V4L2_PIX_FMT_YUV444M 799 * - V4L2_PIX_FMT_YUV444M 931 - 'YM24' 800 - 'YM24' 932 - 8 801 - 8 933 - 4:4:4 802 - 4:4:4 934 - Y, Cb, Cr 803 - Y, Cb, Cr 935 - No 804 - No 936 * - V4L2_PIX_FMT_YVU444M 805 * - V4L2_PIX_FMT_YVU444M 937 - 'YM42' 806 - 'YM42' 938 - 8 807 - 8 939 - 4:4:4 808 - 4:4:4 940 - Y, Cr, Cb 809 - Y, Cr, Cb 941 - No 810 - No 942 811 943 .. raw:: latex 812 .. raw:: latex 944 813 945 \normalsize 814 \normalsize 946 815 947 .. [4] Order of luma and chroma planes 816 .. [4] Order of luma and chroma planes 948 .. [5] Indicates if planes have to be contiguo 817 .. [5] Indicates if planes have to be contiguous in memory or can be 949 disjoint 818 disjoint 950 819 951 820 952 **Color Sample Location:** 821 **Color Sample Location:** 953 Chroma samples are :ref:`interstitially sited< 822 Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>` 954 horizontally. 823 horizontally. 955 824 956 .. _V4L2-PIX-FMT-YUV410: 825 .. _V4L2-PIX-FMT-YUV410: 957 .. _V4L2-PIX-FMT-YVU410: 826 .. _V4L2-PIX-FMT-YVU410: 958 827 959 YUV410 and YVU410 828 YUV410 and YVU410 960 ----------------- 829 ----------------- 961 830 962 Planar YUV 4:1:0 formats. The chroma planes ar 831 Planar YUV 4:1:0 formats. The chroma planes are subsampled by 4 in each 963 direction. Chroma lines contain a quarter of t 832 direction. Chroma lines contain a quarter of the number of pixels and bytes of 964 the luma lines, and the chroma planes contain 833 the luma lines, and the chroma planes contain a quarter of the number of lines 965 of the luma plane. 834 of the luma plane. 966 835 967 .. flat-table:: Sample 4x4 YUV410 Image 836 .. flat-table:: Sample 4x4 YUV410 Image 968 :header-rows: 0 837 :header-rows: 0 969 :stub-columns: 0 838 :stub-columns: 0 970 839 971 * - start + 0: 840 * - start + 0: 972 - Y'\ :sub:`00` 841 - Y'\ :sub:`00` 973 - Y'\ :sub:`01` 842 - Y'\ :sub:`01` 974 - Y'\ :sub:`02` 843 - Y'\ :sub:`02` 975 - Y'\ :sub:`03` 844 - Y'\ :sub:`03` 976 * - start + 4: 845 * - start + 4: 977 - Y'\ :sub:`10` 846 - Y'\ :sub:`10` 978 - Y'\ :sub:`11` 847 - Y'\ :sub:`11` 979 - Y'\ :sub:`12` 848 - Y'\ :sub:`12` 980 - Y'\ :sub:`13` 849 - Y'\ :sub:`13` 981 * - start + 8: 850 * - start + 8: 982 - Y'\ :sub:`20` 851 - Y'\ :sub:`20` 983 - Y'\ :sub:`21` 852 - Y'\ :sub:`21` 984 - Y'\ :sub:`22` 853 - Y'\ :sub:`22` 985 - Y'\ :sub:`23` 854 - Y'\ :sub:`23` 986 * - start + 12: 855 * - start + 12: 987 - Y'\ :sub:`30` 856 - Y'\ :sub:`30` 988 - Y'\ :sub:`31` 857 - Y'\ :sub:`31` 989 - Y'\ :sub:`32` 858 - Y'\ :sub:`32` 990 - Y'\ :sub:`33` 859 - Y'\ :sub:`33` 991 * - start + 16: 860 * - start + 16: 992 - Cr\ :sub:`00` 861 - Cr\ :sub:`00` 993 * - start + 17: 862 * - start + 17: 994 - Cb\ :sub:`00` 863 - Cb\ :sub:`00` 995 864 996 865 997 .. _V4L2-PIX-FMT-YUV411P: 866 .. _V4L2-PIX-FMT-YUV411P: 998 867 999 YUV411P 868 YUV411P 1000 ------- 869 ------- 1001 870 1002 Planar YUV 4:1:1 formats. The chroma planes a 871 Planar YUV 4:1:1 formats. The chroma planes are subsampled by 4 in the 1003 horizontal direction. Chroma lines contain a 872 horizontal direction. Chroma lines contain a quarter of the number of pixels 1004 and bytes of the luma lines, and the chroma p 873 and bytes of the luma lines, and the chroma planes contain the same number of 1005 lines as the luma plane. 874 lines as the luma plane. 1006 875 1007 .. flat-table:: Sample 4x4 YUV411P Image 876 .. flat-table:: Sample 4x4 YUV411P Image 1008 :header-rows: 0 877 :header-rows: 0 1009 :stub-columns: 0 878 :stub-columns: 0 1010 879 1011 * - start + 0: 880 * - start + 0: 1012 - Y'\ :sub:`00` 881 - Y'\ :sub:`00` 1013 - Y'\ :sub:`01` 882 - Y'\ :sub:`01` 1014 - Y'\ :sub:`02` 883 - Y'\ :sub:`02` 1015 - Y'\ :sub:`03` 884 - Y'\ :sub:`03` 1016 * - start + 4: 885 * - start + 4: 1017 - Y'\ :sub:`10` 886 - Y'\ :sub:`10` 1018 - Y'\ :sub:`11` 887 - Y'\ :sub:`11` 1019 - Y'\ :sub:`12` 888 - Y'\ :sub:`12` 1020 - Y'\ :sub:`13` 889 - Y'\ :sub:`13` 1021 * - start + 8: 890 * - start + 8: 1022 - Y'\ :sub:`20` 891 - Y'\ :sub:`20` 1023 - Y'\ :sub:`21` 892 - Y'\ :sub:`21` 1024 - Y'\ :sub:`22` 893 - Y'\ :sub:`22` 1025 - Y'\ :sub:`23` 894 - Y'\ :sub:`23` 1026 * - start + 12: 895 * - start + 12: 1027 - Y'\ :sub:`30` 896 - Y'\ :sub:`30` 1028 - Y'\ :sub:`31` 897 - Y'\ :sub:`31` 1029 - Y'\ :sub:`32` 898 - Y'\ :sub:`32` 1030 - Y'\ :sub:`33` 899 - Y'\ :sub:`33` 1031 * - start + 16: 900 * - start + 16: 1032 - Cb\ :sub:`00` 901 - Cb\ :sub:`00` 1033 * - start + 17: 902 * - start + 17: 1034 - Cb\ :sub:`10` 903 - Cb\ :sub:`10` 1035 * - start + 18: 904 * - start + 18: 1036 - Cb\ :sub:`20` 905 - Cb\ :sub:`20` 1037 * - start + 19: 906 * - start + 19: 1038 - Cb\ :sub:`30` 907 - Cb\ :sub:`30` 1039 * - start + 20: 908 * - start + 20: 1040 - Cr\ :sub:`00` 909 - Cr\ :sub:`00` 1041 * - start + 21: 910 * - start + 21: 1042 - Cr\ :sub:`10` 911 - Cr\ :sub:`10` 1043 * - start + 22: 912 * - start + 22: 1044 - Cr\ :sub:`20` 913 - Cr\ :sub:`20` 1045 * - start + 23: 914 * - start + 23: 1046 - Cr\ :sub:`30` 915 - Cr\ :sub:`30` 1047 916 1048 917 1049 .. _V4L2-PIX-FMT-YUV420: 918 .. _V4L2-PIX-FMT-YUV420: 1050 .. _V4L2-PIX-FMT-YVU420: 919 .. _V4L2-PIX-FMT-YVU420: 1051 .. _V4L2-PIX-FMT-YUV420M: 920 .. _V4L2-PIX-FMT-YUV420M: 1052 .. _V4L2-PIX-FMT-YVU420M: 921 .. _V4L2-PIX-FMT-YVU420M: 1053 922 1054 YUV420, YVU420, YUV420M and YVU420M 923 YUV420, YVU420, YUV420M and YVU420M 1055 ----------------------------------- 924 ----------------------------------- 1056 925 1057 Planar YUV 4:2:0 formats. The chroma planes a 926 Planar YUV 4:2:0 formats. The chroma planes are subsampled by 2 in each 1058 direction. Chroma lines contain half of the n 927 direction. Chroma lines contain half of the number of pixels and bytes of the 1059 luma lines, and the chroma planes contain hal 928 luma lines, and the chroma planes contain half of the number of lines of the 1060 luma plane. 929 luma plane. 1061 930 1062 .. flat-table:: Sample 4x4 YUV420 Image 931 .. flat-table:: Sample 4x4 YUV420 Image 1063 :header-rows: 0 932 :header-rows: 0 1064 :stub-columns: 0 933 :stub-columns: 0 1065 934 1066 * - start + 0: 935 * - start + 0: 1067 - Y'\ :sub:`00` 936 - Y'\ :sub:`00` 1068 - Y'\ :sub:`01` 937 - Y'\ :sub:`01` 1069 - Y'\ :sub:`02` 938 - Y'\ :sub:`02` 1070 - Y'\ :sub:`03` 939 - Y'\ :sub:`03` 1071 * - start + 4: 940 * - start + 4: 1072 - Y'\ :sub:`10` 941 - Y'\ :sub:`10` 1073 - Y'\ :sub:`11` 942 - Y'\ :sub:`11` 1074 - Y'\ :sub:`12` 943 - Y'\ :sub:`12` 1075 - Y'\ :sub:`13` 944 - Y'\ :sub:`13` 1076 * - start + 8: 945 * - start + 8: 1077 - Y'\ :sub:`20` 946 - Y'\ :sub:`20` 1078 - Y'\ :sub:`21` 947 - Y'\ :sub:`21` 1079 - Y'\ :sub:`22` 948 - Y'\ :sub:`22` 1080 - Y'\ :sub:`23` 949 - Y'\ :sub:`23` 1081 * - start + 12: 950 * - start + 12: 1082 - Y'\ :sub:`30` 951 - Y'\ :sub:`30` 1083 - Y'\ :sub:`31` 952 - Y'\ :sub:`31` 1084 - Y'\ :sub:`32` 953 - Y'\ :sub:`32` 1085 - Y'\ :sub:`33` 954 - Y'\ :sub:`33` 1086 * - start + 16: 955 * - start + 16: 1087 - Cr\ :sub:`00` 956 - Cr\ :sub:`00` 1088 - Cr\ :sub:`01` 957 - Cr\ :sub:`01` 1089 * - start + 18: 958 * - start + 18: 1090 - Cr\ :sub:`10` 959 - Cr\ :sub:`10` 1091 - Cr\ :sub:`11` 960 - Cr\ :sub:`11` 1092 * - start + 20: 961 * - start + 20: 1093 - Cb\ :sub:`00` 962 - Cb\ :sub:`00` 1094 - Cb\ :sub:`01` 963 - Cb\ :sub:`01` 1095 * - start + 22: 964 * - start + 22: 1096 - Cb\ :sub:`10` 965 - Cb\ :sub:`10` 1097 - Cb\ :sub:`11` 966 - Cb\ :sub:`11` 1098 967 1099 .. flat-table:: Sample 4x4 YUV420M Image 968 .. flat-table:: Sample 4x4 YUV420M Image 1100 :header-rows: 0 969 :header-rows: 0 1101 :stub-columns: 0 970 :stub-columns: 0 1102 971 1103 * - start0 + 0: 972 * - start0 + 0: 1104 - Y'\ :sub:`00` 973 - Y'\ :sub:`00` 1105 - Y'\ :sub:`01` 974 - Y'\ :sub:`01` 1106 - Y'\ :sub:`02` 975 - Y'\ :sub:`02` 1107 - Y'\ :sub:`03` 976 - Y'\ :sub:`03` 1108 * - start0 + 4: 977 * - start0 + 4: 1109 - Y'\ :sub:`10` 978 - Y'\ :sub:`10` 1110 - Y'\ :sub:`11` 979 - Y'\ :sub:`11` 1111 - Y'\ :sub:`12` 980 - Y'\ :sub:`12` 1112 - Y'\ :sub:`13` 981 - Y'\ :sub:`13` 1113 * - start0 + 8: 982 * - start0 + 8: 1114 - Y'\ :sub:`20` 983 - Y'\ :sub:`20` 1115 - Y'\ :sub:`21` 984 - Y'\ :sub:`21` 1116 - Y'\ :sub:`22` 985 - Y'\ :sub:`22` 1117 - Y'\ :sub:`23` 986 - Y'\ :sub:`23` 1118 * - start0 + 12: 987 * - start0 + 12: 1119 - Y'\ :sub:`30` 988 - Y'\ :sub:`30` 1120 - Y'\ :sub:`31` 989 - Y'\ :sub:`31` 1121 - Y'\ :sub:`32` 990 - Y'\ :sub:`32` 1122 - Y'\ :sub:`33` 991 - Y'\ :sub:`33` 1123 * - 992 * - 1124 * - start1 + 0: 993 * - start1 + 0: 1125 - Cb\ :sub:`00` 994 - Cb\ :sub:`00` 1126 - Cb\ :sub:`01` 995 - Cb\ :sub:`01` 1127 * - start1 + 2: 996 * - start1 + 2: 1128 - Cb\ :sub:`10` 997 - Cb\ :sub:`10` 1129 - Cb\ :sub:`11` 998 - Cb\ :sub:`11` 1130 * - 999 * - 1131 * - start2 + 0: 1000 * - start2 + 0: 1132 - Cr\ :sub:`00` 1001 - Cr\ :sub:`00` 1133 - Cr\ :sub:`01` 1002 - Cr\ :sub:`01` 1134 * - start2 + 2: 1003 * - start2 + 2: 1135 - Cr\ :sub:`10` 1004 - Cr\ :sub:`10` 1136 - Cr\ :sub:`11` 1005 - Cr\ :sub:`11` 1137 1006 1138 1007 1139 .. _V4L2-PIX-FMT-YUV422P: 1008 .. _V4L2-PIX-FMT-YUV422P: 1140 .. _V4L2-PIX-FMT-YUV422M: 1009 .. _V4L2-PIX-FMT-YUV422M: 1141 .. _V4L2-PIX-FMT-YVU422M: 1010 .. _V4L2-PIX-FMT-YVU422M: 1142 1011 1143 YUV422P, YUV422M and YVU422M 1012 YUV422P, YUV422M and YVU422M 1144 ---------------------------- 1013 ---------------------------- 1145 1014 1146 Planar YUV 4:2:2 formats. The chroma planes a 1015 Planar YUV 4:2:2 formats. The chroma planes are subsampled by 2 in the 1147 horizontal direction. Chroma lines contain ha 1016 horizontal direction. Chroma lines contain half of the number of pixels and 1148 bytes of the luma lines, and the chroma plane 1017 bytes of the luma lines, and the chroma planes contain the same number of lines 1149 as the luma plane. 1018 as the luma plane. 1150 1019 1151 .. flat-table:: Sample 4x4 YUV422P Image 1020 .. flat-table:: Sample 4x4 YUV422P Image 1152 :header-rows: 0 1021 :header-rows: 0 1153 :stub-columns: 0 1022 :stub-columns: 0 1154 1023 1155 * - start + 0: 1024 * - start + 0: 1156 - Y'\ :sub:`00` 1025 - Y'\ :sub:`00` 1157 - Y'\ :sub:`01` 1026 - Y'\ :sub:`01` 1158 - Y'\ :sub:`02` 1027 - Y'\ :sub:`02` 1159 - Y'\ :sub:`03` 1028 - Y'\ :sub:`03` 1160 * - start + 4: 1029 * - start + 4: 1161 - Y'\ :sub:`10` 1030 - Y'\ :sub:`10` 1162 - Y'\ :sub:`11` 1031 - Y'\ :sub:`11` 1163 - Y'\ :sub:`12` 1032 - Y'\ :sub:`12` 1164 - Y'\ :sub:`13` 1033 - Y'\ :sub:`13` 1165 * - start + 8: 1034 * - start + 8: 1166 - Y'\ :sub:`20` 1035 - Y'\ :sub:`20` 1167 - Y'\ :sub:`21` 1036 - Y'\ :sub:`21` 1168 - Y'\ :sub:`22` 1037 - Y'\ :sub:`22` 1169 - Y'\ :sub:`23` 1038 - Y'\ :sub:`23` 1170 * - start + 12: 1039 * - start + 12: 1171 - Y'\ :sub:`30` 1040 - Y'\ :sub:`30` 1172 - Y'\ :sub:`31` 1041 - Y'\ :sub:`31` 1173 - Y'\ :sub:`32` 1042 - Y'\ :sub:`32` 1174 - Y'\ :sub:`33` 1043 - Y'\ :sub:`33` 1175 * - start + 16: 1044 * - start + 16: 1176 - Cb\ :sub:`00` 1045 - Cb\ :sub:`00` 1177 - Cb\ :sub:`01` 1046 - Cb\ :sub:`01` 1178 * - start + 18: 1047 * - start + 18: 1179 - Cb\ :sub:`10` 1048 - Cb\ :sub:`10` 1180 - Cb\ :sub:`11` 1049 - Cb\ :sub:`11` 1181 * - start + 20: 1050 * - start + 20: 1182 - Cb\ :sub:`20` 1051 - Cb\ :sub:`20` 1183 - Cb\ :sub:`21` 1052 - Cb\ :sub:`21` 1184 * - start + 22: 1053 * - start + 22: 1185 - Cb\ :sub:`30` 1054 - Cb\ :sub:`30` 1186 - Cb\ :sub:`31` 1055 - Cb\ :sub:`31` 1187 * - start + 24: 1056 * - start + 24: 1188 - Cr\ :sub:`00` 1057 - Cr\ :sub:`00` 1189 - Cr\ :sub:`01` 1058 - Cr\ :sub:`01` 1190 * - start + 26: 1059 * - start + 26: 1191 - Cr\ :sub:`10` 1060 - Cr\ :sub:`10` 1192 - Cr\ :sub:`11` 1061 - Cr\ :sub:`11` 1193 * - start + 28: 1062 * - start + 28: 1194 - Cr\ :sub:`20` 1063 - Cr\ :sub:`20` 1195 - Cr\ :sub:`21` 1064 - Cr\ :sub:`21` 1196 * - start + 30: 1065 * - start + 30: 1197 - Cr\ :sub:`30` 1066 - Cr\ :sub:`30` 1198 - Cr\ :sub:`31` 1067 - Cr\ :sub:`31` 1199 1068 1200 .. flat-table:: Sample 4x4 YUV422M Image 1069 .. flat-table:: Sample 4x4 YUV422M Image 1201 :header-rows: 0 1070 :header-rows: 0 1202 :stub-columns: 0 1071 :stub-columns: 0 1203 1072 1204 * - start0 + 0: 1073 * - start0 + 0: 1205 - Y'\ :sub:`00` 1074 - Y'\ :sub:`00` 1206 - Y'\ :sub:`01` 1075 - Y'\ :sub:`01` 1207 - Y'\ :sub:`02` 1076 - Y'\ :sub:`02` 1208 - Y'\ :sub:`03` 1077 - Y'\ :sub:`03` 1209 * - start0 + 4: 1078 * - start0 + 4: 1210 - Y'\ :sub:`10` 1079 - Y'\ :sub:`10` 1211 - Y'\ :sub:`11` 1080 - Y'\ :sub:`11` 1212 - Y'\ :sub:`12` 1081 - Y'\ :sub:`12` 1213 - Y'\ :sub:`13` 1082 - Y'\ :sub:`13` 1214 * - start0 + 8: 1083 * - start0 + 8: 1215 - Y'\ :sub:`20` 1084 - Y'\ :sub:`20` 1216 - Y'\ :sub:`21` 1085 - Y'\ :sub:`21` 1217 - Y'\ :sub:`22` 1086 - Y'\ :sub:`22` 1218 - Y'\ :sub:`23` 1087 - Y'\ :sub:`23` 1219 * - start0 + 12: 1088 * - start0 + 12: 1220 - Y'\ :sub:`30` 1089 - Y'\ :sub:`30` 1221 - Y'\ :sub:`31` 1090 - Y'\ :sub:`31` 1222 - Y'\ :sub:`32` 1091 - Y'\ :sub:`32` 1223 - Y'\ :sub:`33` 1092 - Y'\ :sub:`33` 1224 * - 1093 * - 1225 * - start1 + 0: 1094 * - start1 + 0: 1226 - Cb\ :sub:`00` 1095 - Cb\ :sub:`00` 1227 - Cb\ :sub:`01` 1096 - Cb\ :sub:`01` 1228 * - start1 + 2: 1097 * - start1 + 2: 1229 - Cb\ :sub:`10` 1098 - Cb\ :sub:`10` 1230 - Cb\ :sub:`11` 1099 - Cb\ :sub:`11` 1231 * - start1 + 4: 1100 * - start1 + 4: 1232 - Cb\ :sub:`20` 1101 - Cb\ :sub:`20` 1233 - Cb\ :sub:`21` 1102 - Cb\ :sub:`21` 1234 * - start1 + 6: 1103 * - start1 + 6: 1235 - Cb\ :sub:`30` 1104 - Cb\ :sub:`30` 1236 - Cb\ :sub:`31` 1105 - Cb\ :sub:`31` 1237 * - 1106 * - 1238 * - start2 + 0: 1107 * - start2 + 0: 1239 - Cr\ :sub:`00` 1108 - Cr\ :sub:`00` 1240 - Cr\ :sub:`01` 1109 - Cr\ :sub:`01` 1241 * - start2 + 2: 1110 * - start2 + 2: 1242 - Cr\ :sub:`10` 1111 - Cr\ :sub:`10` 1243 - Cr\ :sub:`11` 1112 - Cr\ :sub:`11` 1244 * - start2 + 4: 1113 * - start2 + 4: 1245 - Cr\ :sub:`20` 1114 - Cr\ :sub:`20` 1246 - Cr\ :sub:`21` 1115 - Cr\ :sub:`21` 1247 * - start2 + 6: 1116 * - start2 + 6: 1248 - Cr\ :sub:`30` 1117 - Cr\ :sub:`30` 1249 - Cr\ :sub:`31` 1118 - Cr\ :sub:`31` 1250 1119 1251 1120 1252 .. _V4L2-PIX-FMT-YUV444M: 1121 .. _V4L2-PIX-FMT-YUV444M: 1253 .. _V4L2-PIX-FMT-YVU444M: 1122 .. _V4L2-PIX-FMT-YVU444M: 1254 1123 1255 YUV444M and YVU444M 1124 YUV444M and YVU444M 1256 ------------------- 1125 ------------------- 1257 1126 1258 Planar YUV 4:4:4 formats. The chroma planes a 1127 Planar YUV 4:4:4 formats. The chroma planes are no subsampled. Chroma lines 1259 contain the same number of pixels and bytes o 1128 contain the same number of pixels and bytes of the luma lines, and the chroma 1260 planes contain the same number of lines as th 1129 planes contain the same number of lines as the luma plane. 1261 1130 1262 .. flat-table:: Sample 4x4 YUV444M Image 1131 .. flat-table:: Sample 4x4 YUV444M Image 1263 :header-rows: 0 1132 :header-rows: 0 1264 :stub-columns: 0 1133 :stub-columns: 0 1265 1134 1266 * - start0 + 0: 1135 * - start0 + 0: 1267 - Y'\ :sub:`00` 1136 - Y'\ :sub:`00` 1268 - Y'\ :sub:`01` 1137 - Y'\ :sub:`01` 1269 - Y'\ :sub:`02` 1138 - Y'\ :sub:`02` 1270 - Y'\ :sub:`03` 1139 - Y'\ :sub:`03` 1271 * - start0 + 4: 1140 * - start0 + 4: 1272 - Y'\ :sub:`10` 1141 - Y'\ :sub:`10` 1273 - Y'\ :sub:`11` 1142 - Y'\ :sub:`11` 1274 - Y'\ :sub:`12` 1143 - Y'\ :sub:`12` 1275 - Y'\ :sub:`13` 1144 - Y'\ :sub:`13` 1276 * - start0 + 8: 1145 * - start0 + 8: 1277 - Y'\ :sub:`20` 1146 - Y'\ :sub:`20` 1278 - Y'\ :sub:`21` 1147 - Y'\ :sub:`21` 1279 - Y'\ :sub:`22` 1148 - Y'\ :sub:`22` 1280 - Y'\ :sub:`23` 1149 - Y'\ :sub:`23` 1281 * - start0 + 12: 1150 * - start0 + 12: 1282 - Y'\ :sub:`30` 1151 - Y'\ :sub:`30` 1283 - Y'\ :sub:`31` 1152 - Y'\ :sub:`31` 1284 - Y'\ :sub:`32` 1153 - Y'\ :sub:`32` 1285 - Y'\ :sub:`33` 1154 - Y'\ :sub:`33` 1286 * - 1155 * - 1287 * - start1 + 0: 1156 * - start1 + 0: 1288 - Cb\ :sub:`00` 1157 - Cb\ :sub:`00` 1289 - Cb\ :sub:`01` 1158 - Cb\ :sub:`01` 1290 - Cb\ :sub:`02` 1159 - Cb\ :sub:`02` 1291 - Cb\ :sub:`03` 1160 - Cb\ :sub:`03` 1292 * - start1 + 4: 1161 * - start1 + 4: 1293 - Cb\ :sub:`10` 1162 - Cb\ :sub:`10` 1294 - Cb\ :sub:`11` 1163 - Cb\ :sub:`11` 1295 - Cb\ :sub:`12` 1164 - Cb\ :sub:`12` 1296 - Cb\ :sub:`13` 1165 - Cb\ :sub:`13` 1297 * - start1 + 8: 1166 * - start1 + 8: 1298 - Cb\ :sub:`20` 1167 - Cb\ :sub:`20` 1299 - Cb\ :sub:`21` 1168 - Cb\ :sub:`21` 1300 - Cb\ :sub:`22` 1169 - Cb\ :sub:`22` 1301 - Cb\ :sub:`23` 1170 - Cb\ :sub:`23` 1302 * - start1 + 12: 1171 * - start1 + 12: 1303 - Cb\ :sub:`20` 1172 - Cb\ :sub:`20` 1304 - Cb\ :sub:`21` 1173 - Cb\ :sub:`21` 1305 - Cb\ :sub:`32` 1174 - Cb\ :sub:`32` 1306 - Cb\ :sub:`33` 1175 - Cb\ :sub:`33` 1307 * - 1176 * - 1308 * - start2 + 0: 1177 * - start2 + 0: 1309 - Cr\ :sub:`00` 1178 - Cr\ :sub:`00` 1310 - Cr\ :sub:`01` 1179 - Cr\ :sub:`01` 1311 - Cr\ :sub:`02` 1180 - Cr\ :sub:`02` 1312 - Cr\ :sub:`03` 1181 - Cr\ :sub:`03` 1313 * - start2 + 4: 1182 * - start2 + 4: 1314 - Cr\ :sub:`10` 1183 - Cr\ :sub:`10` 1315 - Cr\ :sub:`11` 1184 - Cr\ :sub:`11` 1316 - Cr\ :sub:`12` 1185 - Cr\ :sub:`12` 1317 - Cr\ :sub:`13` 1186 - Cr\ :sub:`13` 1318 * - start2 + 8: 1187 * - start2 + 8: 1319 - Cr\ :sub:`20` 1188 - Cr\ :sub:`20` 1320 - Cr\ :sub:`21` 1189 - Cr\ :sub:`21` 1321 - Cr\ :sub:`22` 1190 - Cr\ :sub:`22` 1322 - Cr\ :sub:`23` 1191 - Cr\ :sub:`23` 1323 * - start2 + 12: 1192 * - start2 + 12: 1324 - Cr\ :sub:`30` 1193 - Cr\ :sub:`30` 1325 - Cr\ :sub:`31` 1194 - Cr\ :sub:`31` 1326 - Cr\ :sub:`32` 1195 - Cr\ :sub:`32` 1327 - Cr\ :sub:`33` 1196 - Cr\ :sub:`33`
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.