ioctl VIDIOC_QUERYSTD

&manvol;

VIDIOC_QUERYSTD

Sense the video standard received by the current input

    	int ioctl
    	int fd
    	int request
    	v4l2_std_id *argp

## Arguments

`fd`

- &fd;

`request`

- VIDIOC_QUERYSTD

`argp`

## Description

The hardware may be able to detect the current video standard automatically. To do so, applications call `VIDIOC_QUERYSTD` with a pointer to a &v4l2-std-id; type. The driver stores here a set of candidates, this can be a single flag or a set of supported standards if for example the hardware can only distinguish between 50 and 60 Hz systems. If no signal was detected, then the driver will return V4L2_STD_UNKNOWN. When detection is not possible or fails, the set must contain all standards supported by the current video input or output.

Please note that drivers shall not switch the video standard automatically if a new video standard is detected. Instead, drivers should send the `V4L2_EVENT_SOURCE_CHANGE` event (if they support this) and expect that userspace will take action by calling `VIDIOC_QUERYSTD`. The reason is that a new video standard can mean different buffer sizes as well, and you cannot change buffer sizes on the fly. In general, applications that receive the Source Change event will have to call `VIDIOC_QUERYSTD`, and if the detected video standard is valid they will have to stop streaming, set the new standard, allocate new buffers and start streaming again.

&return-value;

ENODATA

- Standard video timings are not supported for this input or output.