Am Donnerstag, den 31.03.2011, 15:04 +0400 schrieb "Клиентский отдел
\"Кибернет\"":
> Thanks to all for your answers.
> 
> Current disposition:
> 
> Gentoo linux: 2.6.36-r8 (kernel uvcvideo driver). I'm testing
> 2.6.37.5-zen patched kernel (zen-kernel.org). It slightly reduce total
> cpu utilisation.
> But in embedded usb-bus and uvc drivers I found no changes.
> Yesterday I installed ZoneMinder 1.24.3 (trunk).
> I'm loading uvcvideo as module with quirks=128. This is allow me to use
> 4 webcams A4Tech PK-836MJ on each usb-root hub with 352x288 YUYV 30FPS
> streaming at the same time.
> 
> I'm using asus AT5MN10-I with Atom-330 (dual-core). It has only 1 root
> usb2.0 hub (4 embedded usb connectors) and 1 PCI slot with VIA VT6212L
> chip - another usb 2.0 root hub with 5 additional usb connectors.
> 
> When I attempt to change streaming resolution of any camera in the hub
> to 640x480 - other three cameras stop streaming with an error - "no
> space on left device". As I understood this error means that whole
> bandwith of usb-bus related to the user utilised. 8 streaming cameras
> with apache, ffmpeg, zoneminder and other processes itilizin less than
> 60% of my CPUs. How can I tweak uvcvideo driver or maybe usb-bus to
> recalculate the bandwith of my cameras to start working with 640x480
> resolution.
> 
> This worksation doesn't have X and other non-server environment. I'm
> using p/s2 keyboard and ssh. There is no plans to use any other usb-type
> devices, web-cams only.
> 
> Camera information from luvcview. Zoneminder can work with cameras only
> when I use YUYV. When I attempt to change streaming to RGB3 - only one
> camera streaming, 3 other stop responding. I think this happens bacause
> "quirk" parametr belong only to YUYV stareaming.

uvcvideo recalculate all uncompressed pixel formats. 

RGB3 consume more band width than YUYV.

RGB3 and BGR3 use 3 Bytes, also 24 bits.
640 * 480 * 24bit * 30fps / 8 = 26 MByte/s  (max 2 cams)
YUYV - 16 bit
... = 17 MByte/s
YU12, YV12 - 12 bit
... = 13 MByte/s

YU12 or YV12 should be the best solution.

> Theoretical calculations tells me that 4 cameras with 640x480 YUYV with
> 25-30fps can stream at the same time...

YOur calculation is over optemistic. In my previous email i told you
maximal 3.4 cams, the 0.4 do not count. 

Sebastian pointed "Don't forget that the 480Mbit/s is the theoretical
maximum speed". In real live it is less.


> SDL information:
>   Video driver: x11
>   A window manager is available
> Device information:
>   Device path:  /dev/video0
> { pixelformat = 'YUYV', description = 'YUV 4:2:2 (YUYV)' }
> { discrete: width = 640, height = 480 }
>     Time interval between frame: 1/30,
> { discrete: width = 352, height = 288 }
>     Time interval between frame: 1/30,
> { discrete: width = 320, height = 240 }
>     Time interval between frame: 1/30,
> { discrete: width = 176, height = 144 }
>     Time interval between frame: 1/30,
> { discrete: width = 160, height = 120 }
>     Time interval between frame: 1/30,
> { pixelformat = 'RGB3', description = 'RGB3' }
> { discrete: width = 640, height = 480 }
>     Time interval between frame: 1/30,
> { discrete: width = 352, height = 288 }
>     Time interval between frame: 1/30,
> { discrete: width = 320, height = 240 }
>     Time interval between frame: 1/30,
> { discrete: width = 176, height = 144 }
>     Time interval between frame: 1/30,
> { discrete: width = 160, height = 120 }
>     Time interval between frame: 1/30,
> { pixelformat = 'BGR3', description = 'BGR3' }
> { discrete: width = 640, height = 480 }
>     Time interval between frame: 1/30,
> { discrete: width = 352, height = 288 }
>     Time interval between frame: 1/30,
> { discrete: width = 320, height = 240 }
>     Time interval between frame: 1/30,
> { discrete: width = 176, height = 144 }
>     Time interval between frame: 1/30,
> { discrete: width = 160, height = 120 }
>     Time interval between frame: 1/30,
> { pixelformat = 'YU12', description = 'YU12' }
> { discrete: width = 640, height = 480 }
>     Time interval between frame: 1/30,
> { discrete: width = 352, height = 288 }
>     Time interval between frame: 1/30,
> { discrete: width = 320, height = 240 }
>     Time interval between frame: 1/30,
> { discrete: width = 176, height = 144 }
>     Time interval between frame: 1/30,
> { discrete: width = 160, height = 120 }
>     Time interval between frame: 1/30,
> { pixelformat = 'YV12', description = 'YV12' }
> { discrete: width = 640, height = 480 }
>     Time interval between frame: 1/30,
> { discrete: width = 352, height = 288 }
>     Time interval between frame: 1/30,
> { discrete: width = 320, height = 240 }
>     Time interval between frame: 1/30,
> { discrete: width = 176, height = 144 }
>     Time interval between frame: 1/30,
> { discrete: width = 160, height = 120 }
>     Time interval between frame: 1/30,

I do not need this information. I need result of "lsusb -vd xxxx:xxxx",
xxxx - is the usb id of your webcam.


-- 
Regards,
        Alexey

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

Reply via email to