Hello again, I re-compiled the driver with tracing enabled on pretty much everything, and below is the output I received from plugging in the camera and running my control program (the output from the uvccapture program is very similar). Why is the camera using the MJPEG format? On my desktop machine (Ubunto 8.10, kernel 2.6.27), I specify that I want the image format to be YUYV and it works fine. I'm even able to output .ppm files to disk. Does the camera support more than one format? Also, when I run uvccapture, the output file is about 8 KB for a 320x240 image, and it will not open in any standard image viewer.
Thanks, Tom ============================================================================== <6>Linux video capture interface: v2.00 <7>uvcvideo: Adding mapping Brightness to control 00000000-0000-0000-0000-000000000101/2. <7>uvcvideo: Adding mapping Contrast to control 00000000-0000-0000-0000-000000000101/3. <7>uvcvideo: Adding mapping Hue to control 00000000-0000-0000-0000-000000000101/6. <7>uvcvideo: Adding mapping Saturation to control 00000000-0000-0000-0000-000000000101/7. <7>uvcvideo: Adding mapping Sharpness to control 00000000-0000-0000-0000-000000000101/8. <7>uvcvideo: Adding mapping Gamma to control 00000000-0000-0000-0000-000000000101/9. <7>uvcvideo: Adding mapping Backlight Compensation to control 00000000-0000-0000-0000-000000000101/1. <7>uvcvideo: Adding mapping Gain to control 00000000-0000-0000-0000-000000000101/4. <7>uvcvideo: Adding mapping Power Line Frequency to control 00000000-0000-0000-0000-000000000101/5. <7>uvcvideo: Adding mapping Hue, Auto to control 00000000-0000-0000-0000-000000000101/16. <7>uvcvideo: Adding mapping Exposure, Auto to control 00000000-0000-0000-0000-000000000001/2. <7>uvcvideo: Adding mapping Exposure, Auto Priority to control 00000000-0000-0000-0000-000000000001/3. <7>uvcvideo: Adding mapping Exposure (Absolute) to control 00000000-0000-0000-0000-000000000001/4. <7>uvcvideo: Adding mapping White Balance Temperature, Auto to control 00000000-0000-0000-0000-000000000101/11. <7>uvcvideo: Adding mapping White Balance Temperature to control 00000000-0000-0000-0000-000000000101/10. <7>uvcvideo: Adding mapping White Balance Component, Auto to control 00000000-0000-0000-0000-000000000101/13. <7>uvcvideo: Adding mapping White Balance Blue Component to control 00000000-0000-0000-0000-000000000101/12. <7>uvcvideo: Adding mapping White Balance Red Component to control 00000000-0000-0000-0000-000000000101/12. <7>uvcvideo: Adding mapping Focus (absolute) to control 00000000-0000-0000-0000-000000000001/6. <7>uvcvideo: Adding mapping Focus, Auto to control 00000000-0000-0000-0000-000000000001/8. <7>uvcvideo: Adding mapping Zoom, Absolute to control 00000000-0000-0000-0000-000000000001/11. <7>uvcvideo: Adding mapping Zoom, Continuous to control 00000000-0000-0000-0000-000000000001/12. <7>uvcvideo: Adding mapping Privacy to control 00000000-0000-0000-0000-000000000001/17. <7>uvcvideo: Probing generic UVC device 2 <7>uvcvideo: Found format MJPEG. <7>uvcvideo: - 640x480 (15.0 fps) <7>uvcvideo: - 352x288 (30.0 fps) <7>uvcvideo: - 320x240 (30.0 fps) <7>uvcvideo: - 176x144 (30.0 fps) <7>uvcvideo: - 160x120 (30.0 fps) <7>uvcvideo: Found a Status endpoint (addr 83). <6>uvcvideo: Found UVC 1.00 device Dynex 1.3MP Webcam (19ff:0102) <7>uvcvideo: Added control 00000000-0000-0000-0000-000000000101/2 to device 2 entity 3 <7>uvcvideo: Added control 00000000-0000-0000-0000-000000000101/3 to device 2 entity 3 <7>uvcvideo: Added control 00000000-0000-0000-0000-000000000101/6 to device 2 entity 3 <7>uvcvideo: Added control 00000000-0000-0000-0000-000000000101/7 to device 2 entity 3 <7>uvcvideo: Added control 00000000-0000-0000-0000-000000000101/8 to device 2 entity 3 <7>uvcvideo: Added control 00000000-0000-0000-0000-000000000101/9 to device 2 entity 3 <7>uvcvideo: Added control 00000000-0000-0000-0000-000000000101/10 to device 2 entity 3 <7>uvcvideo: Added control 00000000-0000-0000-0000-000000000101/1 to device 2 entity 3 <7>uvcvideo: Added control 00000000-0000-0000-0000-000000000101/4 to device 2 entity 3 <7>uvcvideo: Added control 00000000-0000-0000-0000-000000000101/5 to device 2 entity 3 <7>uvcvideo: Added control 00000000-0000-0000-0000-000000000101/11 to device 2 entity 3 <7>uvcvideo: Added control 00000000-0000-0000-0000-000000000001/2 to device 2 entity 1 <7>uvcvideo: Added control 00000000-0000-0000-0000-000000000001/3 to device 2 entity 1 <7>uvcvideo: Added control 00000000-0000-0000-0000-000000000001/4 to device 2 entity 1 <7>uvcvideo: Added control 00000000-0000-0000-0000-000000000001/11 to device 2 entity 1 <7>uvcvideo: Added control 00000000-0000-0000-0000-000000000001/13 to device 2 entity 1 <7>uvcvideo: Scanning UVC chain: OT 2<4>videodev: "" has no release callback. Please fix your driver for proper sysfs support, see http://lwn.net/Articles/36850/ <6>input: Dynex 1.3MP Webcam as /class/input/input0 <7>uvcvideo: UVC device initialized. <6>usbcore: registered new interface driver uvcvideo <6>USB Video Class driver (v0.1.0) <4>3:3:1: cannot get freq at ep 0x84 <7>uvcvideo: uvc_v4l2_open <7>uvcvideo: Unknown ioctl 0x800e7606 <7>uvcvideo: Unknown ioctl 0x400e7607 <7>uvcvideo: Trying format 0x47504a4d (MJPG): 320x240. <7>uvcvideo: Using default frame interval 33333.3 us (30.0 fps). <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: Queuing buffer 1. <7>uvcvideo: uvc_v4l2_poll <7>uvcvideo: Frame complete (EOF found). <7>uvcvideo: uvc_v4l2_poll <7>uvcvideo: Dequeuing buffer 1 (3, 17584 bytes). <7>uvcvideo: Queuing buffer 2. <7>uvcvideo: uvc_v4l2_poll <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Frame complete (EOF found). <7>uvcvideo: uvc_v4l2_poll <7>uvcvideo: Dequeuing buffer 2 (3, 17640 bytes). <7>uvcvideo: Queuing buffer 3. <7>uvcvideo: uvc_v4l2_poll <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Frame complete (EOF found). <7>uvcvideo: uvc_v4l2_poll <7>uvcvideo: Dequeuing buffer 3 (3, 17696 bytes). <7>uvcvideo: uvc_v4l2_release <7>uvcvideo: uvc_v4l2_open <7>uvcvideo: Unknown ioctl 0x800e7606 <7>uvcvideo: Unknown ioctl 0x400e7607 <7>uvcvideo: Trying format 0x47504a4d (MJPG): 320x240. <7>uvcvideo: Using default frame interval 33333.3 us (30.0 fps). <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: uvc_v4l2_mmap <7>uvcvideo: Queuing buffer 1. <7>uvcvideo: uvc_v4l2_poll <7>uvcvideo: Frame complete (EOF found). <7>uvcvideo: uvc_v4l2_poll <7>uvcvideo: Dequeuing buffer 1 (3, 16352 bytes). <7>uvcvideo: Queuing buffer 2. <7>uvcvideo: uvc_v4l2_poll <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Frame complete (EOF found). <7>uvcvideo: uvc_v4l2_poll <7>uvcvideo: Dequeuing buffer 2 (3, 10096 bytes). <7>uvcvideo: Queuing buffer 3. <7>uvcvideo: uvc_v4l2_poll <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Dropping payload (out of sync). <7>uvcvideo: Frame complete (EOF found). <7>uvcvideo: uvc_v4l2_poll <7>uvcvideo: Dequeuing buffer 3 (3, 9720 bytes). <7>uvcvideo: uvc_v4l2_release ============================================================================== Laurent Pinchart wrote: > Hi Tom, > > On Tuesday 24 February 2009 12:51:47 Tom Moore wrote: >> Hi all, >> >> I wrote some capture code and tested it out on Ubuntu 8.10 (kernel >> 2.6.27.11). My Dynex 1.3 MP camera supports memory mapping and works >> just fine on my Ubuntu box. However, I have cross-compiled the UVC >> driver for my Gumstix (the target platform for capture - kernel is >> 2.6.21) and though I was able to successfully install the driver, my >> capture code doesn't seem to work. I've traced the problem to to ioctl >> call with VIDIOC_QUERYBUF. On my box, that function call returns a >> buffer length of width * height * 2 (format is YUYV, so this is right). >> On my Gumstix, it returns width * height + 589 (the 589 is the same >> regardless of the frame size). >> >> Is there any reason why this would be happening? I appear to be >> unfamilar with the behavior of VIDIOC_QUERYBUF, but it looks like it >> ought to be pretty straightforward. > > None that I can think of (at least at this time of the night). Would you mind > adding a few printk's to the driver code to hunt the bug down ? > >> Oh, I should point out that calls to VIDIOCSPICT and VIDIOCGPICT on my >> Ubuntu box works just fine, but returns -1 for the Gumstix. > > The uvcvideo driver relies on the videodev compatibility layer to handle V4L1 > ioctls. The Gumstix kernel might come with those disabled. > >> This camera requires that I use some bizarre combinations of V4L1 and V4L2 >> code to access all of its functionality. I'm not sure what versions of the >> various V4L modules and camera drivers are. > > That's definitely not normal. The uvcvideo driver implement V4L2 only. The > V4L1 ioctls are translated to V4L2 ioctls by the videodev compatibility > layer, > there's no added functionality for the V4L1 API. > > Best regards, > > Laurent Pinchart -- Tom Moore Member, Engineering Staff Lockheed Martin Advanced Technology Laboratories 3 Executive Campus, Suite 600 Cherry Hill, NJ 08002 Phone: 856-792-9750 E-mail: [email protected] _______________________________________________ Linux-uvc-devel mailing list [email protected] https://lists.berlios.de/mailman/listinfo/linux-uvc-devel
