select() problems with uvc drivers.
Hello,
I've created a small c program that uses pure v4l2 code to read from a webcam on a uvc driver then copy that data into an SDL overlay. I've posted the code here:
http://basementcode.com/serverMain.html
and I've attached a log file I created from the output of that program. Overall the program works great except that after a few frames, about 35 (varies each run) in my case, the select() function that is supposed to block until new data from the webcam is available stops working and returns right away. This isn't a huge problem because the following ioctl(fd, VIDIOC_DQBUF, &buf)
call simply fails and sets errno to EAGAIN, then my app simply tries again and again until it works. I'd rather select worked for the entire duration of the capture to save cpu time and make sure that I read the frame asap each time. The relevant function in the code I posted above is "mainLoop", however I can't be sure the error is actually in that function. I hope I've posted enough information.
Thanks in advance,
Chris.
//The code for this log can been seen at:
// http://basementcode.com/serverMain.html
// Commandline = $./camTest /dev/video0 -w 640 -h 480
Device name: /dev/video0
Requested Width: 640
Requested Height 480
---------Device Capabilities---------
Driver: uvcvideo Name: UVC Camera (046d:08ca) Bus: 0000:00:02.1 Driver Version: 0.1.0
Video Capture: Yes
Read/write: No
Async IO: No
Streaming: Yes
-------------------------------------
----------Device Connections---------
Input #0
Name: Camera 1
Type: Camera
Video standard: 0
-------------------------------------
Set to input 0
-------Image format enumeration-----
Format #0
MJPEG
Pixel format id: 1196444237
Type: V4L2_BUF_TYPE_VIDEO_CAPTURE
Compressed: Yes
Format #1 YUV 4:2:2 (YUYV)
Pixel format id: 1448695129
Type: V4L2_BUF_TYPE_VIDEO_CAPTURE
Compressed: No
-------------------------------------
Default image format locked!
Current image format:
Width: 640
Height 480
PixelFormat: 1448695129
Bytes per line: 1280
Feild: V4L2_FIELD_NONE
Image code: YUYV
Colorspace: V4L2_COLORSPACE_SRGB
Got 20 buffers for memory map streaming.
OverLay has 1 planes.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Got image.
Again.
Again.
Again.
Again.
Again.
Again.
Got image.
Again.
Again.
Again.
Again.
Again.
Again.
Again.
Again.
Again.
Again.
Again.
Again.
Again.
Again.
Got image.
Again.
Again.
Again.
Again.
Again.
Again.
Again.
Again.
Again.
Again.
Again.
Again.
Again.
Again.
Again.
Got image.
...
...
...
... This output repeats until the program shuts down.
...
...
...
...
Again.
Again.
Again.
Again.
Again.
Again.
Again.
Got image.
Unmapped all 20 buffers.
--
video4linux-list mailing list
Unsubscribe mailto:[email protected]?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
Quoted 4 lines · Christopher Harvey
Hello,
I've created a small c program that uses pure v4l2 code to read from a webcam on a uvc driver then copy that data into an SDL overlay. I've posted the code here:
Just FYI- this was solved over on the UVC list.
Cheers,
Brandon
--
video4linux-list mailing list
Unsubscribe mailto:[email protected]?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
Quoted 7 lines · Brandon Philips
Quoted 4 lines · Christopher Harvey
Hello,
I've created a small c program that uses pure v4l2 code to read from a webcam on a uvc driver then copy that data into an SDL overlay. I've posted the code here:Just FYI- this was solved over on the UVC list.
Would you mind forwarding the solution or the link to the solution to this list for those of us who don't follow the UVC list? Thank you.
--
video4linux-list mailing list
Unsubscribe mailto:[email protected]?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list
Quoted 7 lines · Robert William Fuller
Quoted 6 lines · Brandon Philips
Quoted 4 lines · Christopher Harvey
Hello,
I've created a small c program that uses pure v4l2 code to read from a webcam on a uvc driver then copy that data into an SDL overlay. I've posted the code here:
Quoted 5 lines
Quoted 1 line
Just FYI- this was solved over on the UVC list.
Would you mind forwarding the solution or the link to the solution to this list for those of us who don't follow the UVC list? Thank you.
Sure thing. here is the "root" post, just hit next message a couple of times to see the solution.
https://lists.berlios.de/pipermail/linux-uvc-devel/2008-February/002963.htmlP.S. Should I be using "reply" or "reply all"? (In thunderbird)
--
video4linux-list mailing list
Unsubscribe mailto:[email protected]?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list