Hi,
I have a question about the parameter of VIDIOC_G_INPUT and VIDIOC_S_INPUT
parameters in v4l2 specification.
The "Video for Linux Two API Specification" text says that the
parameter of VIDIOC_G_INPUT and VIDIOC_S_INPUT is ...
> [...] a pointer to an integer where the driver stores the number
> of the input, as in the struct v4l2_input index field.
>
> http://v4l2spec.bytesex.org/spec/r11217.htm
In the v4l2_input structure the index has the type of __u32.
In contrast, in <linux/videodev2.h> (as of 2.6.27) the ioctls are defined
as follows:
> #define VIDIOC_G_INPUT _IOR('V', 38, int)
> #define VIDIOC_S_INPUT _IOWR('V', 39, int)
The problem is that '__u32' is unsigned and 'int' is signed. Furthermore
one cannot be sure that sizeof(__u32) == sizeof(int) on all platforms.
I guess that the parameter of VIDIOC_G_INPUT and VIDIOC_S_INPUT should be
a pointer to __u32. What do you think?
Regards,
M?rton N?meth
Hi,
2008/12/16 N?meth M?rton <[email protected]>:
> Hi,
>
> I have a question about the parameter of VIDIOC_G_INPUT and VIDIOC_S_INPUT
> parameters in v4l2 specification.
>
> The "Video for Linux Two API Specification" text says that the
> parameter of VIDIOC_G_INPUT and VIDIOC_S_INPUT is ...
>
>> [...] a pointer to an integer where the driver stores the number
>> of the input, as in the struct v4l2_input index field.
>>
>> http://v4l2spec.bytesex.org/spec/r11217.htm
>
> In the v4l2_input structure the index has the type of __u32.
>
> In contrast, in <linux/videodev2.h> (as of 2.6.27) the ioctls are defined
> as follows:
>
>> #define VIDIOC_G_INPUT _IOR('V', 38, int)
>> #define VIDIOC_S_INPUT _IOWR('V', 39, int)
>
> The problem is that '__u32' is unsigned and 'int' is signed. Furthermore
> one cannot be sure that sizeof(__u32) == sizeof(int) on all platforms.
>
> I guess that the parameter of VIDIOC_G_INPUT and VIDIOC_S_INPUT should be
> a pointer to __u32. What do you think?
>
seems to be sane yes. This ioctl is also handled in compat_ioctl32.c and might
also get some attention there.
Markus