| .. -*- coding: utf-8; mode: rst -*- |
| |
| .. _querycap: |
| |
| ********************* |
| Querying Capabilities |
| ********************* |
| |
| 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. |
| |
| The :ref:`VIDIOC_QUERYCAP` ioctl is available to |
| check if the kernel device is compatible with this specification, and to |
| query the :ref:`functions <devices>` and :ref:`I/O methods <io>` |
| supported by the device. |
| |
| Starting with kernel version 3.1, :ref:`VIDIOC_QUERYCAP` |
| will return the V4L2 API version used by the driver, with generally |
| matches the Kernel version. There's no need of using |
| :ref:`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 :ref:`VIDIOC_ENUMINPUT` to learn about the |
| number, types and names of video connectors on the device. Although |
| abstraction is a major objective of this API, the |
| :ref:`VIDIOC_QUERYCAP` ioctl also allows driver |
| specific applications to reliably identify the driver. |
| |
| All V4L2 drivers must support :ref:`VIDIOC_QUERYCAP`. |
| Applications should always call this ioctl after opening the device. |