Hi,

I've posted the stuff below a while ago - but I've just discovered I was actually replying privately to the original poster by mistake. So a bit late, but I will post it again to the list - just in case anybody is interested.

On 09/08/2010 03:04 PM, Martin wrote:
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.

I have managed to get 4 cameras working, at 10fps and 640x480 on one usb 2.0 controller. The only way I managed to achieve this was by using mjpeg capable cameras - and forcing the stream in mjpeg format directly from the webcam - not in raw video.

Also, according to my experiments - it looks like the compression rate varies from camera to camera (probably a characteristic of the internal chipset) - which will affect the usb bandwidth used. I have 4 different mjpeg capable webcam models - I could run some measurements.

VLC is capable of requesting mjpeg stream. FFmpeg was capable - but the syntax changed. However, it looks like it is possible to set the camera in mjpeg mode using v4l2-ctl first - which would open up the possibility of using other capture software which is not capable of requesting an mjpeg stream - I think.

One more thing - avoid Microsoft LifeCam Cinema HD - it requests a constant amount of bandwidth - regardless of resolution or compression used - so that is a no go. Unless you modify the v4l2/uvc driver - to ignore the bandwidth requests from camera.

Hope the above helps a bit,

Sebastian


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
[email protected]
https://lists.berlios.de/mailman/listinfo/linux-uvc-devel

_______________________________________________
Linux-uvc-devel mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/linux-uvc-devel

Reply via email to