Sorry for the long delay in responding. I will try these changes.

However, the scoop on the other various patches is as follows:

in 2592x1944 mode, at 10fps, 4bpp for mjpg, the fix_jpeg_bandwidth makes things worse with 3476 B/frame rather than the device specified 3060 B/frame.

At 2592x1944 mode at 5fps, 2bpp for mjpg, the fix_jpeg_bandwidth ends up at 1024 B/frame, which allows me to run the three cameras that I want.

At 2592x1944 mode at 5fps, 4bpp for mjpg, the fix_jpeg_bandwidth ends up at 1984 B/frame, which allows me to run two cameras, but not the third.

However, these numbers are funny. The frame size for 2592x1944x4bpp is 2.5 Megabytes or 20 Mbits. At 5fps, this is 100 Mbits/sec. There should be ample bandwidth to support three of these streams.

To be honest, I don't understand the units of the B/frame. Can someone explain it to me?

Philip




On 07-Mar-11 5:53 AM, Alexey Fisher wrote:
Hi Philip,

i probably will not solve your problem but i wont to take a look on it.
Can you please apply attached debug patch and send me the log.
this patch was made on top of fd2b6dd22743f7c96f7c6e97d49ff5f4b422e741

Make sure you have CONFIG_DYNAMIC_DEBUG=y enabled. To start dynamic
debug you need do as root:

echo "module uvcvideo +p">  /sys/kernel/debug/dynamic_debug/control
echo "func uvc_video_decode_end -p"
/sys/kernel/debug/dynamic_debug/control
echo "func uvc_video_decode_start -p"
/sys/kernel/debug/dynamic_debug/control
echo "func uvc_video_decode_data -p"
/sys/kernel/debug/dynamic_debug/control
echo "func uvc_video_decode_isoc -p"
/sys/kernel/debug/dynamic_debug/control
echo "func uvc_video_complete -p"
/sys/kernel/debug/dynamic_debug/control
echo "func uvc_v4l2_do_ioctl -p"
/sys/kernel/debug/dynamic_debug/control
and start video with this, it will make onlöy one shot:
gst-launch-0.10 -v v4l2src num-buffers=1 ! jpegdec ! ffmpegcolorspace !
autovideosink

Am Sonntag, den 06.03.2011, 17:30 -0500 schrieb Philip Gladstone:
It turned out that my kernel had an old uvcvideo module which didn't
have the right debug log messages, and so I'm in the process of
upgrading to a current kernel version. So far, I've managed to render my
machine unbootable [it is a little embedded linux box].

Philip

On 3/6/2011 6:14 AM, Laurent Pinchart wrote:
Hi Philip,

On Sunday 20 February 2011 21:57:24 Philip Gladstone wrote:
I attached two C910s to a small linux box, and ran into the 'Failed to
submit URB' problem.

When I look at the descriptors for this camera, I think I understand the
problem. I'm capturing at 5 Mpixels and I'm trying two cameras.

         VideoStreaming Interface Descriptor:
           bLength                            38
           bDescriptorType                    36
           bDescriptorSubtype                  7 (FRAME_MJPEG)
           bFrameIndex                        28
           bmCapabilities                   0x01
             Still image supported
           wWidth                           2592
           wHeight                          1944
           dwMinBitRate                403107840
           dwMaxBitRate                806215680
           dwMaxVideoFrameBufferSize    10077696
           dwDefaultFrameInterval        1000000
           bFrameIntervalType                  3
           dwFrameInterval( 0)           1000000
           dwFrameInterval( 1)           1333333
           dwFrameInterval( 2)           2000000

The video frame size is set to 10Mb. This is surprisingly large as
actual frames captured with MJPEG on this camera are typically 500kb or
less. When I checked the descriptor for the uncompressed version of the
same frame, it came back with the same value of dwMaxVideoFrameBufferSize
(effectively 16 bits per pixel). The values for min/max bit rate are
(correctly) calculated from the frame intervals and the buffer size.
The uvcvideo driver doesn't use the dwMaxVideoFrameBufferSize field to compute
the required bandwidth but queries the device at runtime instead.

You can enable the UVC_TRACE_VIDEO trace flag to get the driver to print the
bandwidth requested by the device to the kernel log.

Typical JPEG compression gets down to 1 bit per pixel, and 2 bits is
very unusual.

What I want to know is what the impact would be of defining a new QUIRK
that overrode the frame buffer size for compressed frames and calculated
them at (say) 2 bits per pixel?

Do other webcams get this right?
You would be surprised by how many webcams get things wrong.


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

Reply via email to