Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

media: uapi: v4l: Add generic 8-bit metadata format definitions

Generic 8-bit metadata formats define the in-memory data layout but not
the format of the data itself. The reasoning for having such formats is to
allow CSI-2 receiver drivers to receive and DMA drivers to write the data
to memory without knowing a large number of device-specific formats.

These formats may be used only in conjunction with a Media Controller
pipeline where the internal pad of the source sub-device defines the
specific format of the data (using an mbus code).

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>

authored by

Sakari Ailus and committed by
Hans Verkuil
1d921523 ac5214a4

+359 -1
+2
Documentation/userspace-api/media/v4l/dev-subdev.rst
··· 506 506 507 507 subdev-formats 508 508 509 + .. _subdev-routing: 510 + 509 511 Streams, multiplexed media pads and internal routing 510 512 ---------------------------------------------------- 511 513
+2 -1
Documentation/userspace-api/media/v4l/meta-formats.rst
··· 13 13 :maxdepth: 1 14 14 15 15 metafmt-d4xx 16 + metafmt-generic 16 17 metafmt-intel-ipu3 17 18 metafmt-rkisp1 18 19 metafmt-uvc 20 + metafmt-vivid 19 21 metafmt-vsp1-hgo 20 22 metafmt-vsp1-hgt 21 - metafmt-vivid
+340
Documentation/userspace-api/media/v4l/metafmt-generic.rst
··· 1 + .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later 2 + 3 + ******************************************************************************************************************************************************************************************************************************************************************************** 4 + V4L2_META_FMT_GENERIC_8 ('MET8'), V4L2_META_FMT_GENERIC_CSI2_10 ('MC1A'), V4L2_META_FMT_GENERIC_CSI2_12 ('MC1C'), V4L2_META_FMT_GENERIC_CSI2_14 ('MC1E'), V4L2_META_FMT_GENERIC_CSI2_16 ('MC1G'), V4L2_META_FMT_GENERIC_CSI2_20 ('MC1K'), V4L2_META_FMT_GENERIC_CSI2_24 ('MC1O') 5 + ******************************************************************************************************************************************************************************************************************************************************************************** 6 + 7 + 8 + Generic line-based metadata formats 9 + 10 + 11 + Description 12 + =========== 13 + 14 + These generic line-based metadata formats define the memory layout of the data 15 + without defining the format or meaning of the metadata itself. 16 + 17 + .. _v4l2-meta-fmt-generic-8: 18 + 19 + V4L2_META_FMT_GENERIC_8 20 + ----------------------- 21 + 22 + The V4L2_META_FMT_GENERIC_8 format is a plain 8-bit metadata format. This format 23 + is used on CSI-2 for 8 bits per :term:`Data Unit`. 24 + 25 + Additionally it is used for 16 bits per Data Unit when two bytes of metadata are 26 + packed into one 16-bit Data Unit. Otherwise the 16 bits per pixel dataformat is 27 + :ref:`V4L2_META_FMT_GENERIC_CSI2_16 <v4l2-meta-fmt-generic-csi2-16>`. 28 + 29 + **Byte Order Of V4L2_META_FMT_GENERIC_8.** 30 + Each cell is one byte. "M" denotes a byte of metadata. 31 + 32 + .. tabularcolumns:: |p{2.4cm}|p{1.2cm}|p{1.2cm}|p{1.2cm}|p{1.2cm}| 33 + 34 + .. flat-table:: Sample 4x2 Metadata Frame 35 + :header-rows: 0 36 + :stub-columns: 0 37 + :widths: 12 8 8 8 8 38 + 39 + * - start + 0: 40 + - M\ :sub:`00` 41 + - M\ :sub:`10` 42 + - M\ :sub:`20` 43 + - M\ :sub:`30` 44 + * - start + 4: 45 + - M\ :sub:`01` 46 + - M\ :sub:`11` 47 + - M\ :sub:`21` 48 + - M\ :sub:`31` 49 + 50 + .. _v4l2-meta-fmt-generic-csi2-10: 51 + 52 + V4L2_META_FMT_GENERIC_CSI2_10 53 + ----------------------------- 54 + 55 + V4L2_META_FMT_GENERIC_CSI2_10 contains 8-bit generic metadata packed in 10-bit 56 + Data Units, with one padding byte after every four bytes of metadata. This 57 + format is typically used by CSI-2 receivers with a source that transmits 58 + MEDIA_BUS_FMT_META_10 and the CSI-2 receiver writes the received data to memory 59 + as-is. 60 + 61 + The packing of the data follows the MIPI CSI-2 specification and the padding of 62 + the data is defined in the MIPI CCS specification. 63 + 64 + This format is also used in conjunction with 20 bits per :term:`Data Unit` 65 + formats that pack two bytes of metadata into one Data Unit. Otherwise the 66 + 20 bits per pixel dataformat is :ref:`V4L2_META_FMT_GENERIC_CSI2_20 67 + <v4l2-meta-fmt-generic-csi2-20>`. 68 + 69 + This format is little endian. 70 + 71 + **Byte Order Of V4L2_META_FMT_GENERIC_CSI2_10.** 72 + Each cell is one byte. "M" denotes a byte of metadata and "x" a byte of padding. 73 + 74 + .. tabularcolumns:: |p{2.4cm}|p{1.2cm}|p{1.2cm}|p{1.2cm}|p{1.2cm}|p{.8cm}| 75 + 76 + .. flat-table:: Sample 4x2 Metadata Frame 77 + :header-rows: 0 78 + :stub-columns: 0 79 + :widths: 12 8 8 8 8 8 80 + 81 + * - start + 0: 82 + - M\ :sub:`00` 83 + - M\ :sub:`10` 84 + - M\ :sub:`20` 85 + - M\ :sub:`30` 86 + - x 87 + * - start + 5: 88 + - M\ :sub:`01` 89 + - M\ :sub:`11` 90 + - M\ :sub:`21` 91 + - M\ :sub:`31` 92 + - x 93 + 94 + .. _v4l2-meta-fmt-generic-csi2-12: 95 + 96 + V4L2_META_FMT_GENERIC_CSI2_12 97 + ----------------------------- 98 + 99 + V4L2_META_FMT_GENERIC_CSI2_12 contains 8-bit generic metadata packed in 12-bit 100 + Data Units, with one padding byte after every two bytes of metadata. This format 101 + is typically used by CSI-2 receivers with a source that transmits 102 + MEDIA_BUS_FMT_META_12 and the CSI-2 receiver writes the received data to memory 103 + as-is. 104 + 105 + The packing of the data follows the MIPI CSI-2 specification and the padding of 106 + the data is defined in the MIPI CCS specification. 107 + 108 + This format is also used in conjunction with 24 bits per :term:`Data Unit` 109 + formats that pack two bytes of metadata into one Data Unit. Otherwise the 110 + 24 bits per pixel dataformat is :ref:`V4L2_META_FMT_GENERIC_CSI2_24 111 + <v4l2-meta-fmt-generic-csi2-24>`. 112 + 113 + This format is little endian. 114 + 115 + **Byte Order Of V4L2_META_FMT_GENERIC_CSI2_12.** 116 + Each cell is one byte. "M" denotes a byte of metadata and "x" a byte of padding. 117 + 118 + .. tabularcolumns:: |p{2.4cm}|p{1.2cm}|p{1.2cm}|p{1.2cm}|p{1.2cm}|p{.8cm}|p{.8cm}| 119 + 120 + .. flat-table:: Sample 4x2 Metadata Frame 121 + :header-rows: 0 122 + :stub-columns: 0 123 + :widths: 12 8 8 8 8 8 8 124 + 125 + * - start + 0: 126 + - M\ :sub:`00` 127 + - M\ :sub:`10` 128 + - x 129 + - M\ :sub:`20` 130 + - M\ :sub:`30` 131 + - x 132 + * - start + 6: 133 + - M\ :sub:`01` 134 + - M\ :sub:`11` 135 + - x 136 + - M\ :sub:`21` 137 + - M\ :sub:`31` 138 + - x 139 + 140 + .. _v4l2-meta-fmt-generic-csi2-14: 141 + 142 + V4L2_META_FMT_GENERIC_CSI2_14 143 + ----------------------------- 144 + 145 + V4L2_META_FMT_GENERIC_CSI2_14 contains 8-bit generic metadata packed in 14-bit 146 + Data Units, with three padding bytes after every four bytes of metadata. This 147 + format is typically used by CSI-2 receivers with a source that transmits 148 + MEDIA_BUS_FMT_META_14 and the CSI-2 receiver writes the received data to memory 149 + as-is. 150 + 151 + The packing of the data follows the MIPI CSI-2 specification and the padding of 152 + the data is defined in the MIPI CCS specification. 153 + 154 + This format is little endian. 155 + 156 + **Byte Order Of V4L2_META_FMT_GENERIC_CSI2_14.** 157 + Each cell is one byte. "M" denotes a byte of metadata and "x" a byte of padding. 158 + 159 + .. tabularcolumns:: |p{2.4cm}|p{1.2cm}|p{1.2cm}|p{1.2cm}|p{1.2cm}|p{.8cm}|p{.8cm}|p{.8cm}| 160 + 161 + .. flat-table:: Sample 4x2 Metadata Frame 162 + :header-rows: 0 163 + :stub-columns: 0 164 + :widths: 12 8 8 8 8 8 8 8 165 + 166 + * - start + 0: 167 + - M\ :sub:`00` 168 + - M\ :sub:`10` 169 + - M\ :sub:`20` 170 + - M\ :sub:`30` 171 + - x 172 + - x 173 + - x 174 + * - start + 7: 175 + - M\ :sub:`01` 176 + - M\ :sub:`11` 177 + - M\ :sub:`21` 178 + - M\ :sub:`31` 179 + - x 180 + - x 181 + - x 182 + 183 + .. _v4l2-meta-fmt-generic-csi2-16: 184 + 185 + V4L2_META_FMT_GENERIC_CSI2_16 186 + ----------------------------- 187 + 188 + V4L2_META_FMT_GENERIC_CSI2_16 contains 8-bit generic metadata packed in 16-bit 189 + Data Units, with one padding byte after every byte of metadata. This format is 190 + typically used by CSI-2 receivers with a source that transmits 191 + MEDIA_BUS_FMT_META_16 and the CSI-2 receiver writes the received data to memory 192 + as-is. 193 + 194 + The packing of the data follows the MIPI CSI-2 specification and the padding of 195 + the data is defined in the MIPI CCS specification. 196 + 197 + Some devices support more efficient packing of metadata in conjunction with 198 + 16-bit image data. In that case the dataformat is 199 + :ref:`V4L2_META_FMT_GENERIC_8 <v4l2-meta-fmt-generic-8>`. 200 + 201 + This format is little endian. 202 + 203 + **Byte Order Of V4L2_META_FMT_GENERIC_CSI2_16.** 204 + Each cell is one byte. "M" denotes a byte of metadata and "x" a byte of padding. 205 + 206 + .. tabularcolumns:: |p{2.4cm}|p{1.2cm}|p{.8cm}|p{1.2cm}|p{.8cm}|p{1.2cm}|p{.8cm}|p{1.2cm}|p{.8cm}| 207 + 208 + .. flat-table:: Sample 4x2 Metadata Frame 209 + :header-rows: 0 210 + :stub-columns: 0 211 + :widths: 12 8 8 8 8 8 8 8 8 212 + 213 + * - start + 0: 214 + - M\ :sub:`00` 215 + - x 216 + - M\ :sub:`10` 217 + - x 218 + - M\ :sub:`20` 219 + - x 220 + - M\ :sub:`30` 221 + - x 222 + * - start + 8: 223 + - M\ :sub:`01` 224 + - x 225 + - M\ :sub:`11` 226 + - x 227 + - M\ :sub:`21` 228 + - x 229 + - M\ :sub:`31` 230 + - x 231 + 232 + .. _v4l2-meta-fmt-generic-csi2-20: 233 + 234 + V4L2_META_FMT_GENERIC_CSI2_20 235 + ----------------------------- 236 + 237 + V4L2_META_FMT_GENERIC_CSI2_20 contains 8-bit generic metadata packed in 20-bit 238 + Data Units, with alternating one or two padding bytes after every byte of 239 + metadata. This format is typically used by CSI-2 receivers with a source that 240 + transmits MEDIA_BUS_FMT_META_20 and the CSI-2 receiver writes the received data 241 + to memory as-is. 242 + 243 + The packing of the data follows the MIPI CSI-2 specification and the padding of 244 + the data is defined in the MIPI CCS specification. 245 + 246 + Some devices support more efficient packing of metadata in conjunction with 247 + 16-bit image data. In that case the dataformat is 248 + :ref:`V4L2_META_FMT_GENERIC_CSI2_10 <v4l2-meta-fmt-generic-csi2-10>`. 249 + 250 + This format is little endian. 251 + 252 + **Byte Order Of V4L2_META_FMT_GENERIC_CSI2_20.** 253 + Each cell is one byte. "M" denotes a byte of metadata and "x" a byte of padding. 254 + 255 + .. tabularcolumns:: |p{2.4cm}|p{1.2cm}|p{.8cm}|p{1.2cm}|p{.8cm}|p{.8cm}|p{1.2cm}|p{.8cm}|p{1.2cm}|p{.8cm}|p{.8cm}| 256 + 257 + .. flat-table:: Sample 4x2 Metadata Frame 258 + :header-rows: 0 259 + :stub-columns: 0 260 + :widths: 12 8 8 8 8 8 8 8 8 8 8 261 + 262 + * - start + 0: 263 + - M\ :sub:`00` 264 + - x 265 + - M\ :sub:`10` 266 + - x 267 + - x 268 + - M\ :sub:`20` 269 + - x 270 + - M\ :sub:`30` 271 + - x 272 + - x 273 + * - start + 10: 274 + - M\ :sub:`01` 275 + - x 276 + - M\ :sub:`11` 277 + - x 278 + - x 279 + - M\ :sub:`21` 280 + - x 281 + - M\ :sub:`31` 282 + - x 283 + - x 284 + 285 + .. _v4l2-meta-fmt-generic-csi2-24: 286 + 287 + V4L2_META_FMT_GENERIC_CSI2_24 288 + ----------------------------- 289 + 290 + V4L2_META_FMT_GENERIC_CSI2_24 contains 8-bit generic metadata packed in 24-bit 291 + Data Units, with two padding bytes after every byte of metadata. This format is 292 + typically used by CSI-2 receivers with a source that transmits 293 + MEDIA_BUS_FMT_META_24 and the CSI-2 receiver writes the received data to memory 294 + as-is. 295 + 296 + The packing of the data follows the MIPI CSI-2 specification and the padding of 297 + the data is defined in the MIPI CCS specification. 298 + 299 + Some devices support more efficient packing of metadata in conjunction with 300 + 16-bit image data. In that case the dataformat is 301 + :ref:`V4L2_META_FMT_GENERIC_CSI2_12 <v4l2-meta-fmt-generic-csi2-12>`. 302 + 303 + This format is little endian. 304 + 305 + **Byte Order Of V4L2_META_FMT_GENERIC_CSI2_24.** 306 + Each cell is one byte. "M" denotes a byte of metadata and "x" a byte of padding. 307 + 308 + .. tabularcolumns:: |p{2.4cm}|p{1.2cm}|p{.8cm}|p{.8cm}|p{1.2cm}|p{.8cm}|p{.8cm}|p{1.2cm}|p{.8cm}|p{.8cm}|p{1.2cm}|p{.8cm}|p{.8cm}| 309 + 310 + .. flat-table:: Sample 4x2 Metadata Frame 311 + :header-rows: 0 312 + :stub-columns: 0 313 + :widths: 12 8 8 8 8 8 8 8 8 8 8 8 8 314 + 315 + * - start + 0: 316 + - M\ :sub:`00` 317 + - x 318 + - x 319 + - M\ :sub:`10` 320 + - x 321 + - x 322 + - M\ :sub:`20` 323 + - x 324 + - x 325 + - M\ :sub:`30` 326 + - x 327 + - x 328 + * - start + 12: 329 + - M\ :sub:`01` 330 + - x 331 + - x 332 + - M\ :sub:`11` 333 + - x 334 + - x 335 + - M\ :sub:`21` 336 + - x 337 + - x 338 + - M\ :sub:`31` 339 + - x 340 + - x
+7
drivers/media/v4l2-core/v4l2-ioctl.c
··· 1460 1460 case V4L2_PIX_FMT_Y210: descr = "10-bit YUYV Packed"; break; 1461 1461 case V4L2_PIX_FMT_Y212: descr = "12-bit YUYV Packed"; break; 1462 1462 case V4L2_PIX_FMT_Y216: descr = "16-bit YUYV Packed"; break; 1463 + case V4L2_META_FMT_GENERIC_8: descr = "8-bit Generic Metadata"; break; 1464 + case V4L2_META_FMT_GENERIC_CSI2_10: descr = "8-bit Generic Meta, 10b CSI-2"; break; 1465 + case V4L2_META_FMT_GENERIC_CSI2_12: descr = "8-bit Generic Meta, 12b CSI-2"; break; 1466 + case V4L2_META_FMT_GENERIC_CSI2_14: descr = "8-bit Generic Meta, 14b CSI-2"; break; 1467 + case V4L2_META_FMT_GENERIC_CSI2_16: descr = "8-bit Generic Meta, 16b CSI-2"; break; 1468 + case V4L2_META_FMT_GENERIC_CSI2_20: descr = "8-bit Generic Meta, 20b CSI-2"; break; 1469 + case V4L2_META_FMT_GENERIC_CSI2_24: descr = "8-bit Generic Meta, 24b CSI-2"; break; 1463 1470 1464 1471 default: 1465 1472 /* Compressed formats */
+8
include/uapi/linux/videodev2.h
··· 839 839 #define V4L2_META_FMT_RK_ISP1_PARAMS v4l2_fourcc('R', 'K', '1', 'P') /* Rockchip ISP1 3A Parameters */ 840 840 #define V4L2_META_FMT_RK_ISP1_STAT_3A v4l2_fourcc('R', 'K', '1', 'S') /* Rockchip ISP1 3A Statistics */ 841 841 842 + #define V4L2_META_FMT_GENERIC_8 v4l2_fourcc('M', 'E', 'T', '8') /* Generic 8-bit metadata */ 843 + #define V4L2_META_FMT_GENERIC_CSI2_10 v4l2_fourcc('M', 'C', '1', 'A') /* 10-bit CSI-2 packed 8-bit metadata */ 844 + #define V4L2_META_FMT_GENERIC_CSI2_12 v4l2_fourcc('M', 'C', '1', 'C') /* 12-bit CSI-2 packed 8-bit metadata */ 845 + #define V4L2_META_FMT_GENERIC_CSI2_14 v4l2_fourcc('M', 'C', '1', 'E') /* 14-bit CSI-2 packed 8-bit metadata */ 846 + #define V4L2_META_FMT_GENERIC_CSI2_16 v4l2_fourcc('M', 'C', '1', 'G') /* 16-bit CSI-2 packed 8-bit metadata */ 847 + #define V4L2_META_FMT_GENERIC_CSI2_20 v4l2_fourcc('M', 'C', '1', 'K') /* 20-bit CSI-2 packed 8-bit metadata */ 848 + #define V4L2_META_FMT_GENERIC_CSI2_24 v4l2_fourcc('M', 'C', '1', 'O') /* 24-bit CSI-2 packed 8-bit metadata */ 849 + 842 850 /* priv field value to indicates that subsequent fields are valid. */ 843 851 #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe 844 852