@ -153,7 +153,7 @@ static int device_open(AVFormatContext *ctx, uint32_t *capabilities)
{
{
struct v4l2_capability cap ;
struct v4l2_capability cap ;
int fd ;
int fd ;
int res ;
int res , err ;
int flags = O_RDWR ;
int flags = O_RDWR ;
if ( ctx - > flags & AVFMT_FLAG_NONBLOCK ) {
if ( ctx - > flags & AVFMT_FLAG_NONBLOCK ) {
@ -169,18 +169,18 @@ static int device_open(AVFormatContext *ctx, uint32_t *capabilities)
res = ioctl ( fd , VIDIOC_QUERYCAP , & cap ) ;
res = ioctl ( fd , VIDIOC_QUERYCAP , & cap ) ;
// ENOIOCTLCMD definition only availble on __KERNEL__
// ENOIOCTLCMD definition only availble on __KERNEL__
if ( res < 0 & & errno = = 515 ) {
if ( res < 0 & & ( ( err = errno ) = = 515 ) ) {
av_log ( ctx , AV_LOG_ERROR , " QUERYCAP not implemented, probably V4L device but not supporting V4L2 \n " ) ;
av_log ( ctx , AV_LOG_ERROR , " QUERYCAP not implemented, probably V4L device but not supporting V4L2 \n " ) ;
close ( fd ) ;
close ( fd ) ;
return AVERROR ( errno ) ;
return AVERROR ( 515 ) ;
}
}
if ( res < 0 ) {
if ( res < 0 ) {
av_log ( ctx , AV_LOG_ERROR , " ioctl(VIDIOC_QUERYCAP): %s \n " ,
av_log ( ctx , AV_LOG_ERROR , " ioctl(VIDIOC_QUERYCAP): %s \n " ,
strerror ( errno ) ) ;
strerror ( errno ) ) ;
close ( fd ) ;
close ( fd ) ;
return AVERROR ( errno ) ;
return AVERROR ( err ) ;
}
}
if ( ( cap . capabilities & V4L2_CAP_VIDEO_CAPTURE ) = = 0 ) {
if ( ( cap . capabilities & V4L2_CAP_VIDEO_CAPTURE ) = = 0 ) {
av_log ( ctx , AV_LOG_ERROR , " Not a video capture device \n " ) ;
av_log ( ctx , AV_LOG_ERROR , " Not a video capture device \n " ) ;