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 of whether your application acquires the full
framerate or just samples at one frame per second. Hence, trying to set
a low framerate in your user application has no effect to reduce the
bandwidth from the webcam. The webcam is still streaming at the maximum
framerate regardless.

I'm guessing that the video stream is being 'pushed' out by the webcam
firmware and so the UVC driver must take all that it is given...


*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?



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