ioctl VIDIOC_ENUM_FMT

&manvol;

VIDIOC_ENUM_FMT

Enumerate image formats

    	int ioctl
    	int fd
    	int request
    	struct v4l2_fmtdesc
    *argp

## Arguments

`fd`

- &fd;

`request`

- VIDIOC_ENUM_FMT

`argp`

## Description

To enumerate image formats applications initialize the type and index field of &v4l2-fmtdesc; and call the `VIDIOC_ENUM_FMT` ioctl with a pointer to this structure. Drivers fill the rest of the structure or return an &EINVAL;. All formats are enumerable by beginning at index zero and incrementing by one until EINVAL is returned.

## struct v4l2_fmtdesc

&cs-str;
__u32 | index | Number of the format in the enumeration, set by the application. This is in no way related to the pixelformat field.
&v4l2-buf-type; | type | Type of the data stream, set by the application. Only these types are valid here: `V4L2_BUF_TYPE_VIDEO_CAPTURE`, `V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE`, `V4L2_BUF_TYPE_VIDEO_OUTPUT`, `V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE`, `V4L2_BUF_TYPE_VIDEO_OVERLAY`, and custom (driver defined) types with code `V4L2_BUF_TYPE_PRIVATE` and higher.
__u32 | flags | See fmtdesc-flags
__u8 | description[32] | Description of the format, a NUL-terminated ASCII string. This information is intended for the user, for example: "YUV 4:2:2".
__u32 | pixelformat | The image format identifier. This is a four character code as computed by the v4l2_fourcc() macro:
    #define v4l2_fourcc(a,b,c,d) (((__u32)(a)<<0)|((__u32)(b)<<8)|((__u32)(c)<<16)|((__u32)(d)<<24))
Several image formats are already defined by this specification in pixfmt. Note these codes are not the same as those used in the Windows world.
__u32 | reserved[4] | Reserved for future extensions. Drivers must set the array to zero.

## Image Format Description Flags

&cs-def;
`V4L2_FMT_FLAG_COMPRESSED` | 0x0001 | This is a compressed format.
`V4L2_FMT_FLAG_EMULATED` | 0x0002 | This format is not native to the device but emulated through software (usually libv4l2), where possible try to use a native format instead for better performance.

&return-value;

EINVAL

- The &v4l2-fmtdesc; type is not supported or the index is out of bounds.