OK, so the current linux UVC driver doesn't support still image capture.

What is needed to implement that?

Is it just a case of programming in the data structures, or is there a
lot more needed for decoding/converting a captured image and interfacing?

Will a new /dev device need creating dedicated to still image capture?...

How much interest is there for that? (Presumably there will be some so
as to utilise HD webcams to their full resolution...)

Regards,
Martin



On 30/08/10 12:30, Martin wrote:
> On 27/08/10 15:14, Martin wrote:
>> The problem:
>>
>> From reading around this list and elsewhere, it appears that you simply
>> cannot run more than one webcam video stream per USB root hub.
>>
>> When enabled for video streaming, the webcam reserves the full
>> isochronous bandwidth needed to stream data at the selected resolution
>> and framerate, regardless...

[...]

>> *A possible solution* ?
>>
>> Instead, could the UVC driver 'simulate' a reduced framerate by instead
>> using the "STILL_IMAGE_FRAME" mode of the webcam and grab for itself a
>> set number of images per second? Or even only when polled by a read from
>> the user application?
>>
>> On *nix, "everything is a file"... Could the uvc driver accept reading
>> of /dev/videoX by the command "cp" so that still image data is copied,
>> formatted for a jpg or png?
>>
>> Could the "quirks" setting be abused to set the image grab rate? Or some
>> other neater method?
> 
> That still looks to be the best solution. The webcam is supposed to
> support still image capture, but how do I do that?! Is there a nice
> little snippet of C code that I can compile to grab a still image to a
> jpg or png?

[...]

>> Further details:
>>
>> I'm trying to use two webcams simultaneously:
>>
>>   iManufacturer           1 Sweex
>>   iProduct                2 WC060 Series HD Webcam
>>
>>
>> On separate hubs, they work fine. On the same hub, the second one to
>> start shows the error:
>>
>> "Error starting stream VIDIOC_STREAMON: No space left on device".
>>
>> I've only got the one root hub on the system I want to use for the two
>> webcams!
>>
>>
>> Their descriptors show:
>>
>>         bFrameIntervalType                  2
>>         dwFrameInterval( 0)           2000000
>>         dwFrameInterval( 1)           4000000
>>
>>
>> Can I tweak the UVC driver to preferentially choose the slower frame
>> rate available?
>>
>> Aside: The MJPG format doesn't seem to work, nor are any compression
>> settings visible...
>>
>>
>> Given a few hints or a patch, I can hack the kernel module to test :-)
>>
>> This is running on Gentoo, kernel 2.6.34 using the in-kernel uvc module.
>>
>> Any comment/ideas welcomed.
>>
>> Regards,
>> Martin
>>
>>
>>
>>
>> From lsusb -v (excerpt):
>>
>> VideoStreaming Interface Descriptor:
>>         bLength                            34
>>         bDescriptorType                    36
>>         bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
>>         bFrameIndex                         9
>>         bmCapabilities                   0x00
>>           Still image unsupported
>>         wWidth                           1600
>>         wHeight                          1200
>>         dwMinBitRate                   768000
>>         dwMaxBitRate                196608000
>>         dwMaxVideoFrameBufferSize     3840000
>>         dwDefaultFrameInterval        2000000
>>         bFrameIntervalType                  2
>>         dwFrameInterval( 0)           2000000
>>         dwFrameInterval( 1)           4000000
>> VideoStreaming Interface Descriptor:
>>         bLength                            42
>>         bDescriptorType                    36
>>         bDescriptorSubtype                  3 (STILL_IMAGE_FRAME)
>>         bEndpointAddress                    0
>>         bNumImageSizePatterns               9
>>         wWidth( 0)                        640
>>         wHeight( 0)                       480
>>         wWidth( 1)                        352
>>         wHeight( 1)                       288
>>         wWidth( 2)                        320
>>         wHeight( 2)                       240
>>         wWidth( 3)                        176
>>         wHeight( 3)                       144
>>         wWidth( 4)                        160
>>         wHeight( 4)                       120
>>         wWidth( 5)                        800
>>         wHeight( 5)                       600
>>         wWidth( 6)                       1280
>>         wHeight( 6)                       960
>>         wWidth( 7)                       1280
>>         wHeight( 7)                      1024
>>         wWidth( 8)                       1600
>>         wHeight( 8)                      1200
>>         bNumCompressionPatterns             9


_______________________________________________
Linux-uvc-devel mailing list
Linux-uvc-devel@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/linux-uvc-devel

Reply via email to