Re: OV511: VIDIOCMCAPTURE speed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



Hello Matias,

Since it only takes about 40 ms for a 176x144 YUV420 frame to get across
the USB bus, 60 to 85 ms is not too unreasonable. Because the driver has
to wait for a frame start before it can capture, there will be an
average latency of 20 ms added on to the 40 ms. However, this does not
account for the fact that you never get better than 60 ms. I can't
imagine that the remaining 20 ms is being consumed by context and mode
switches, or by calling ioctl().

On a reasonably fast CPU (such as yours), compression support should
increase frame rates significantly. This should improve your numbers
somewhat. However, compression support is in the experimental stage and
will take a little while longer to complete. Compression in my 1.34
driver is unreliable, but should work well enough for you to determine
whether it will help or not.

Matias Freytes wrote:

> Hello,
>         I've been playing around with Mc Clelland's
> ov511-2.2.18-backport-1.33-1 driver and a usb Creative Webcam
> III. I believe it takes too long to get one QCIF (176x144)
> YUV420 frame (60 to 85 ms). I'm running 2.2.18 on a Pentium 3
> 550MHz PC:
>
> Module                  Size  Used by
> usb-uhci               18752   0  (unused)
> ov511                  61824   0
> usbcore                42760   1  [usb-uhci ov511]
> videodev                2656   1  [ov511]
>
>         I don't care loosing some frames, but definitely need
> to capture each frame faster. This is the measured C source
> code:
>
> ....
>
> mmap.width  = 176;
> mmap.height = 144;
>
> /* Chrono started here */
>
> error = ioctl (vid, VIDIOCMCAPTURE, &mmap);
> if (error || mmap.width!=176 || mmap.height==144)
>         printf ("VIDIOCMCAPTURE ERROR:%d, %d, %d\n", error,
>                 mmap.width, map.height);
>
> error = ioctl (vid, VIDIOCSYNC, &mmap.frame);
> while (error!=0) {
>     printf ("VIDIOCSYNC ERROR:%d\n", errno);
>     error = ioctl (vid, VIDIOCSYNC, &mmap.frame);
> }
>
> /* Chrono stopped here */
>
> There're no "printf("VIDIOCSYNC ERROR:%d\n", errno)" on my
> stdout, so there are no SYNC errors. Is there any way I could
> speed this up? I need to get it done in about 30 to 40ms.
>
> Thanks in advance,
> Matias.
>
> --------------
> Matias Freytes
> Laboratorio de Comunicaciones Digitales
> Universidad Nacional de Cordoba
> Argentina

--
Mark McClelland
mmcclell@xxxxxxxxxxx






[Index of Archives]     [Linux DVB]     [Video Disk Recorder]     [Asterisk]     [Photo]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Free Photo Albums]     [Fedora Users]     [Fedora Women]     [ALSA Users]     [ALSA Devel]     [Linux USB]

Powered by Linux