At cpi/v4l.c
v4l_enumerate_devices line 253:
if( ioctl( fd, VIDIOC_QUERYCAP, &v4l2caps ) == 0 )
{
TRACE( "v4l2 ioctls succeeded\n" );
close( fd );
continue;
}
if( (v4l2caps.capabilities & V4L2_CAP_VIDEO_CAPTURE) )
{
// v4l version two device
close( fd );
continue;
}
With some v4l2 devices (I've tried logitech orbicam) the first if fails but the seconds works, the same conditions are verified in v4l2.c so if one of them fails the device can't be used. If you substitute this lines with:
if( ioctl( fd, VIDIOC_QUERYCAP, &v4l2caps ) == 0 &&
(v4l2caps.capabilities & V4L2_CAP_VIDEO_CAPTURE) )
{
TRACE( "v4l2 ioctls succeeded\n" );
close( fd );
continue;
}
v4l2 devices with this problem will degrade to v4l. At least for me it works.
arturo [at] activaweb (dot) net