1.. -*- coding: utf-8; mode: rst -*- 2 3.. _VIDIOC_ENUM_FMT: 4 5********************* 6ioctl VIDIOC_ENUM_FMT 7********************* 8 9Name 10==== 11 12VIDIOC_ENUM_FMT - Enumerate image formats 13 14 15Synopsis 16======== 17 18.. c:function:: int ioctl( int fd, VIDIOC_ENUM_FMT, struct v4l2_fmtdesc *argp ) 19 :name: VIDIOC_ENUM_FMT 20 21 22Arguments 23========= 24 25``fd`` 26 File descriptor returned by :ref:`open() <func-open>`. 27 28``argp`` 29 Pointer to struct :c:type:`v4l2_fmtdesc`. 30 31 32Description 33=========== 34 35To enumerate image formats applications initialize the ``type`` and 36``index`` field of struct :c:type:`v4l2_fmtdesc` and call 37the :ref:`VIDIOC_ENUM_FMT` ioctl with a pointer to this structure. Drivers 38fill the rest of the structure or return an ``EINVAL`` error code. All 39formats are enumerable by beginning at index zero and incrementing by 40one until ``EINVAL`` is returned. 41 42.. note:: 43 44 After switching input or output the list of enumerated image 45 formats may be different. 46 47 48.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| 49 50.. c:type:: v4l2_fmtdesc 51 52.. flat-table:: struct v4l2_fmtdesc 53 :header-rows: 0 54 :stub-columns: 0 55 :widths: 1 1 2 56 57 * - __u32 58 - ``index`` 59 - Number of the format in the enumeration, set by the application. 60 This is in no way related to the ``pixelformat`` field. 61 * - __u32 62 - ``type`` 63 - Type of the data stream, set by the application. Only these types 64 are valid here: ``V4L2_BUF_TYPE_VIDEO_CAPTURE``, 65 ``V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE``, 66 ``V4L2_BUF_TYPE_VIDEO_OUTPUT``, 67 ``V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE`` and 68 ``V4L2_BUF_TYPE_VIDEO_OVERLAY``. See :c:type:`v4l2_buf_type`. 69 * - __u32 70 - ``flags`` 71 - See :ref:`fmtdesc-flags` 72 * - __u8 73 - ``description``\ [32] 74 - Description of the format, a NUL-terminated ASCII string. This 75 information is intended for the user, for example: "YUV 4:2:2". 76 * - __u32 77 - ``pixelformat`` 78 - The image format identifier. This is a four character code as 79 computed by the v4l2_fourcc() macro: 80 * - :cspan:`2` 81 82 .. _v4l2-fourcc: 83 84 ``#define v4l2_fourcc(a,b,c,d)`` 85 86 ``(((__u32)(a)<<0)|((__u32)(b)<<8)|((__u32)(c)<<16)|((__u32)(d)<<24))`` 87 88 Several image formats are already defined by this specification in 89 :ref:`pixfmt`. 90 91 .. attention:: 92 93 These codes are not the same as those used 94 in the Windows world. 95 * - __u32 96 - ``reserved``\ [4] 97 - Reserved for future extensions. Drivers must set the array to 98 zero. 99 100 101 102.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| 103 104.. _fmtdesc-flags: 105 106.. flat-table:: Image Format Description Flags 107 :header-rows: 0 108 :stub-columns: 0 109 :widths: 3 1 4 110 111 * - ``V4L2_FMT_FLAG_COMPRESSED`` 112 - 0x0001 113 - This is a compressed format. 114 * - ``V4L2_FMT_FLAG_EMULATED`` 115 - 0x0002 116 - This format is not native to the device but emulated through 117 software (usually libv4l2), where possible try to use a native 118 format instead for better performance. 119 120 121Return Value 122============ 123 124On success 0 is returned, on error -1 and the ``errno`` variable is set 125appropriately. The generic error codes are described at the 126:ref:`Generic Error Codes <gen-errors>` chapter. 127 128EINVAL 129 The struct :c:type:`v4l2_fmtdesc` ``type`` is not 130 supported or the ``index`` is out of bounds. 131