gspca-sonixj: ioctl VIDIOC_DQBUF blocks for 3s and retuns EIO
Hi,
I'm not sure if I'm hitting a bug or this is the expected driver behavior:
With a Microsoft LifeCam VX-3000 (045e:00f5) and gspca-sonixj, ioctl VIDIOC_DQBUF intermittently blocks for exactly 3 seconds and then returns EIO.
I noticed that it strongly depends on the captured scenery: when it's changing much, everything is fine.
But when for example capturing the wall under constant (lower) light conditions, I'm getting this error nearly permanently.
It's a JPEG-device, so I guess the device stops sending data if the picture doesn't change and that's how it should be.
But is the long blocking + EIO the way drivers should handle this situtation ?
Regards,
Frank Schaefer
Quoted 9 lines · On Thu, 13 May 2010 17:58:49 +0200 Frank Schaefer…
I'm not sure if I'm hitting a bug or this is the expected driver
behavior: With a Microsoft LifeCam VX-3000 (045e:00f5) and gspca-sonixj, ioctlVIDIOC_DQBUFintermittently blocks for exactly 3 seconds and then returns EIO.
I noticed that it strongly depends on the captured scenery: when it's changing much, everything is fine.
But when for example capturing the wall under constant (lower) light conditions, I'm getting this error nearly permanently.
Quoted 4 lines
It's a JPEG-device, so I guess the device stops sending data if the picture doesn't change and that's how it should be.
But is the long blocking + EIO the way drivers should handle this situtation ?
Hello Frank,
You are right, this is a bug. I did not know that a webcam could suspend streaming when the image did not change. I will remove the timeout.
Thanks.
Signature · 2 lines
Ken ar c'hentañ | ** Breizh ha Linux atav! ** Jef | http://moinejf.free.fr/
Hi,
Quoted 17 lines · Jean-Francois Moine
Quoted 9 lines · On Thu, 13 May 2010 17:58:49 +0200 Frank…
I'm not sure if I'm hitting a bug or this is the expected driver
behavior: With a Microsoft LifeCam VX-3000 (045e:00f5) and gspca-sonixj, ioctlVIDIOC_DQBUFintermittently blocks for exactly 3 seconds and then returns EIO.
I noticed that it strongly depends on the captured scenery: when it's changing much, everything is fine.
But when for example capturing the wall under constant (lower) light conditions, I'm getting this error nearly permanently.Quoted 4 lines
It's a JPEG-device, so I guess the device stops sending data if the picture doesn't change and that's how it should be.
But is the long blocking + EIO the way drivers should handle this situtation ?
Quoted 5 lines
Hello Frank,
You are right, this is a bug. I did not know that a webcam could suspend streaming when the image did not change. I will remove the timeout.
The way jpeg works mandates that for each block some data still needs to be generated even if it is a solid color, moreover as these cams do jpeg not mpeg, there is no delta towards the previous frame. So the cam should not stop streaming if it doe timing out and returning -EIO is appropriate.
Thus we should not remove the DQBUF timeout IMHO.
Regards,
Hans
Quoted 26 lines · Hans de Goede
Hi,
Quoted 17 lines · Jean-Francois Moine
Quoted 9 lines · On Thu, 13 May 2010 17:58:49 +0200 Frank…
I'm not sure if I'm hitting a bug or this is the expected driver
behavior: With a Microsoft LifeCam VX-3000 (045e:00f5) and gspca-sonixj, ioctlVIDIOC_DQBUFintermittently blocks for exactly 3 seconds and then returns EIO.
I noticed that it strongly depends on the captured scenery: when it's changing much, everything is fine.
But when for example capturing the wall under constant (lower) light conditions, I'm getting this error nearly permanently.Quoted 4 lines
It's a JPEG-device, so I guess the device stops sending data if the picture doesn't change and that's how it should be.
But is the long blocking + EIO the way drivers should handle this situtation ?Quoted 5 lines
Hello Frank,
You are right, this is a bug. I did not know that a webcam could suspend streaming when the image did not change. I will remove the timeout.
Quoted 7 lines
The way jpeg works mandates that for each block some data still needs to be generated even if it is a solid color, moreover as these cams do jpeg not mpeg, there is no delta towards the previous frame. So the cam should not stop streaming if it doe timing out and returning
-EIOis appropriate.Thus we should not remove the DQBUF timeout IMHO.
Urgh, sorry, of course jpeg is not mpeg !
So the device *should* not stop sending frames, which means that I will have to find out what's exactly going on in the kernel... Will need some time, I don't have permanent access to this device.
Thanks so far,
Frank