Hi all,
the v4l2 ctrl query struct is as follows:
struct v4l2_queryctrl
{
__u32 id;
enum v4l2_ctrl_type type;
__u8 name[32]; /* Whatever */
__s32 minimum; /* Note signedness */
__s32 maximum;
__s32 step;
__s32 default_value;
__u32 flags;
__u32 reserved[2];
};
This is confusing, imho, since the id field is supposed to provide a CID
macro number, such as V4L2_CID_BRIGHTNESS. Now the problem/question is,
how do I get all the controls provided by the driver? I can't just query
each number:
for (int i=0;;i++) {
struct v4l2_queryctrl c;
c.id = i;
if (ioctl(fd, VIDIOC_QUERYCTRL, &c)==0)
printf("Control %s detected (%d)\n", c.name, c.id);
else
break;
}
That won't work, because the CIDs have fixed numbers. this won't work
either:
for (int i=V4L2_CID_BRIGHTNESS;;i++) {
struct v4l2_queryctrl c;
c.id = i;
if (ioctl(fd, VIDIOC_QUERYCTRL, &c)==0)
printf("Control %s detected (%d)\n", c.name, c.id);
else
break;
}
because some driver might not support brightness, but might still
support other controls.
So the question: is the app actually supposed to loop-query all
available controls and display each of them? Or is an application
supposed to use the controls that are known to it, and omit any
unknown/private controls? Or am I missing something crucial here?
Thanks,
Ronald
--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@;redhat.com?subject=unsubscribe
https://listman.redhat.com/mailman/listinfo/video4linux-list