Because V4L2 covers a wide variety of devices not all aspects of the API are equally applicable to all types of devices. Furthermore devices of the same type have different capabilities and this specification permits the omission of a few complicated and less important parts of the API.
Starting with kernel version 3.1, VIDIOC-QUERYCAP will return the
V4L2 API version used by the driver, with generally matches the Kernel version.
There's no need of using
VIDIOC_QUERYCAP to check if a specific ioctl is
supported, the V4L2 core now returns ENOTTY if a driver doesn't provide
support for an ioctl.
Other features can be queried
by calling the respective ioctl, for example
to learn about the number, types and names of video connectors on the
device. Although abstraction is a major objective of this API, the
VIDIOC_QUERYCAP ioctl also allows driver specific applications to reliably identify
All V4L2 drivers must support
VIDIOC_QUERYCAP. Applications should always call
this ioctl after opening the device.