ioctl VIDIOC_QUERYCAP
&manvol;
VIDIOC_QUERYCAPQuery device capabilitiesint ioctlint fdint requeststruct v4l2_capability *argpArgumentsfd&fd;requestVIDIOC_QUERYCAPargpDescriptionAll V4L2 devices support the
VIDIOC_QUERYCAP ioctl. It is used to identify
kernel devices compatible with this specification and to obtain
information about driver and hardware capabilities. The ioctl takes a
pointer to a &v4l2-capability; which is filled by the driver. When the
driver is not compatible with this specification the ioctl returns an
&EINVAL;.
struct v4l2_capability
&cs-str;
__u8driver[16]Name of the driver, a unique NUL-terminated
ASCII string. For example: "bttv". Driver specific applications can
use this information to verify the driver identity. It is also useful
to work around known bugs, or to identify drivers in error reports.Storing strings in fixed sized arrays is bad
practice but unavoidable here. Drivers and applications should take
precautions to never read or write beyond the end of the array and to
make sure the strings are properly NUL-terminated.__u8card[32]Name of the device, a NUL-terminated UTF-8 string.
For example: "Yoyodyne TV/FM". One driver may support different brands
or models of video hardware. This information is intended for users,
for example in a menu of available devices. Since multiple TV cards of
the same brand may be installed which are supported by the same
driver, this name should be combined with the character device file
name (⪚ /dev/video2) or the
bus_info string to avoid
ambiguities.__u8bus_info[32]Location of the device in the system, a
NUL-terminated ASCII string. For example: "PCI:0000:05:06.0". This
information is intended for users, to distinguish multiple
identical devices. If no such information is available the field must
simply count the devices controlled by the driver ("platform:vivi-000").
The bus_info must start with "PCI:" for PCI boards, "PCIe:" for PCI Express boards,
"usb-" for USB devices, "I2C:" for i2c devices, "ISA:" for ISA devices,
"parport" for parallel port devices and "platform:" for platform devices.__u32versionVersion number of the driver.Starting on kernel 3.1, the version reported is provided per
V4L2 subsystem, following the same Kernel numberation scheme. However, it
should not always return the same version as the kernel, if, for example,
an stable or distribution-modified kernel uses the V4L2 stack from a
newer kernel.The version number is formatted using the
KERNEL_VERSION() macro:
#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
__u32 version = KERNEL_VERSION(0, 8, 1);
printf ("Version: %u.%u.%u\n",
(version >> 16) & 0xFF,
(version >> 8) & 0xFF,
version & 0xFF);
__u32capabilitiesAvailable capabilities of the physical device as a whole, see . The same physical device can export
multiple devices in /dev (e.g. /dev/videoX, /dev/vbiY and /dev/radioZ).
The capabilities field should contain a union
of all capabilities available around the several V4L2 devices exported
to userspace.
For all those devices the capabilities field
returns the same set of capabilities. This allows applications to open
just one of the devices (typically the video device) and discover whether
video, vbi and/or radio are also supported.
__u32device_capsDevice capabilities of the opened device, see . Should contain the available capabilities
of that specific device node. So, for example, device_caps
of a radio device will only contain radio related capabilities and
no video or vbi capabilities. This field is only set if the capabilities
field contains the V4L2_CAP_DEVICE_CAPS capability.
Only the capabilities field can have the
V4L2_CAP_DEVICE_CAPS capability, device_caps
will never set V4L2_CAP_DEVICE_CAPS.
__u32reserved[3]Reserved for future extensions. Drivers must set
this array to zero.
Device Capabilities Flags
&cs-def;
V4L2_CAP_VIDEO_CAPTURE0x00000001The device supports the single-planar API through the Video Capture interface.V4L2_CAP_VIDEO_CAPTURE_MPLANE0x00001000The device supports the
multi-planar API through the
Video Capture interface.V4L2_CAP_VIDEO_OUTPUT0x00000002The device supports the single-planar API through the Video Output interface.V4L2_CAP_VIDEO_OUTPUT_MPLANE0x00002000The device supports the
multi-planar API through the
Video Output interface.V4L2_CAP_VIDEO_M2M0x00004000The device supports the single-planar API through the
Video Memory-To-Memory interface.V4L2_CAP_VIDEO_M2M_MPLANE0x00008000The device supports the
multi-planar API through the
Video Memory-To-Memory interface.V4L2_CAP_VIDEO_OVERLAY0x00000004The device supports the Video Overlay interface. A video overlay device
typically stores captured images directly in the video memory of a
graphics card, with hardware clipping and scaling.V4L2_CAP_VBI_CAPTURE0x00000010The device supports the Raw
VBI Capture interface, providing Teletext and Closed Caption
data.V4L2_CAP_VBI_OUTPUT0x00000020The device supports the Raw VBI Output interface.V4L2_CAP_SLICED_VBI_CAPTURE0x00000040The device supports the Sliced VBI Capture interface.V4L2_CAP_SLICED_VBI_OUTPUT0x00000080The device supports the Sliced VBI Output interface.V4L2_CAP_RDS_CAPTURE0x00000100The device supports the RDS capture interface.V4L2_CAP_VIDEO_OUTPUT_OVERLAY0x00000200The device supports the Video
Output Overlay (OSD) interface. Unlike the Video
Overlay interface, this is a secondary function of video
output devices and overlays an image onto an outgoing video signal.
When the driver sets this flag, it must clear the
V4L2_CAP_VIDEO_OVERLAY flag and vice
versa.The &v4l2-framebuffer; lacks an
&v4l2-buf-type; field, therefore the type of overlay is implied by the
driver capabilities.V4L2_CAP_HW_FREQ_SEEK0x00000400The device supports the &VIDIOC-S-HW-FREQ-SEEK; ioctl for
hardware frequency seeking.V4L2_CAP_RDS_OUTPUT0x00000800The device supports the RDS output interface.V4L2_CAP_TUNER0x00010000The device has some sort of tuner to
receive RF-modulated video signals. For more information about
tuner programming see
.V4L2_CAP_AUDIO0x00020000The device has audio inputs or outputs. It may or
may not support audio recording or playback, in PCM or compressed
formats. PCM audio support must be implemented as ALSA or OSS
interface. For more information on audio inputs and outputs see .V4L2_CAP_RADIO0x00040000This is a radio receiver.V4L2_CAP_MODULATOR0x00080000The device has some sort of modulator to
emit RF-modulated video/audio signals. For more information about
modulator programming see
.V4L2_CAP_READWRITE0x01000000The device supports the read() and/or write()
I/O methods.V4L2_CAP_ASYNCIO0x02000000The device supports the asynchronous I/O methods.V4L2_CAP_STREAMING0x04000000The device supports the streaming I/O method.V4L2_CAP_DEVICE_CAPS0x80000000The driver fills the device_caps
field. This capability can only appear in the capabilities
field and never in the device_caps field.