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