Based on kernel version 3.12. Page generated on 2013-11-13 22:00 EST.
1 Frequently Asked Questions: 2 =========================== 3 subject: unified zoran driver (zr360x7, zoran, buz, dc10(+), dc30(+), lml33) 4 website: http://mjpeg.sourceforge.net/driver-zoran/ 5 6 1. What cards are supported 7 1.1 What the TV decoder can do an what not 8 1.2 What the TV encoder can do an what not 9 2. How do I get this damn thing to work 10 3. What mainboard should I use (or why doesn't my card work) 11 4. Programming interface 12 5. Applications 13 6. Concerning buffer sizes, quality, output size etc. 14 7. It hangs/crashes/fails/whatevers! Help! 15 8. Maintainers/Contacting 16 9. License 17 18 =========================== 19 20 1. What cards are supported 21 22 Iomega Buz, Linux Media Labs LML33/LML33R10, Pinnacle/Miro 23 DC10/DC10+/DC30/DC30+ and related boards (available under various names). 24 25 Iomega Buz: 26 * Zoran zr36067 PCI controller 27 * Zoran zr36060 MJPEG codec 28 * Philips saa7111 TV decoder 29 * Philips saa7185 TV encoder 30 Drivers to use: videodev, i2c-core, i2c-algo-bit, 31 videocodec, saa7111, saa7185, zr36060, zr36067 32 Inputs/outputs: Composite and S-video 33 Norms: PAL, SECAM (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) 34 Card number: 7 35 36 AverMedia 6 Eyes AVS6EYES: 37 * Zoran zr36067 PCI controller 38 * Zoran zr36060 MJPEG codec 39 * Samsung ks0127 TV decoder 40 * Conexant bt866 TV encoder 41 Drivers to use: videodev, i2c-core, i2c-algo-bit, 42 videocodec, ks0127, bt866, zr36060, zr36067 43 Inputs/outputs: Six physical inputs. 1-6 are composite, 44 1-2, 3-4, 5-6 doubles as S-video, 45 1-3 triples as component. 46 One composite output. 47 Norms: PAL, SECAM (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) 48 Card number: 8 49 Not autodetected, card=8 is necessary. 50 51 Linux Media Labs LML33: 52 * Zoran zr36067 PCI controller 53 * Zoran zr36060 MJPEG codec 54 * Brooktree bt819 TV decoder 55 * Brooktree bt856 TV encoder 56 Drivers to use: videodev, i2c-core, i2c-algo-bit, 57 videocodec, bt819, bt856, zr36060, zr36067 58 Inputs/outputs: Composite and S-video 59 Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) 60 Card number: 5 61 62 Linux Media Labs LML33R10: 63 * Zoran zr36067 PCI controller 64 * Zoran zr36060 MJPEG codec 65 * Philips saa7114 TV decoder 66 * Analog Devices adv7170 TV encoder 67 Drivers to use: videodev, i2c-core, i2c-algo-bit, 68 videocodec, saa7114, adv7170, zr36060, zr36067 69 Inputs/outputs: Composite and S-video 70 Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) 71 Card number: 6 72 73 Pinnacle/Miro DC10(new): 74 * Zoran zr36057 PCI controller 75 * Zoran zr36060 MJPEG codec 76 * Philips saa7110a TV decoder 77 * Analog Devices adv7176 TV encoder 78 Drivers to use: videodev, i2c-core, i2c-algo-bit, 79 videocodec, saa7110, adv7175, zr36060, zr36067 80 Inputs/outputs: Composite, S-video and Internal 81 Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) 82 Card number: 1 83 84 Pinnacle/Miro DC10+: 85 * Zoran zr36067 PCI controller 86 * Zoran zr36060 MJPEG codec 87 * Philips saa7110a TV decoder 88 * Analog Devices adv7176 TV encoder 89 Drivers to use: videodev, i2c-core, i2c-algo-bit, 90 videocodec, sa7110, adv7175, zr36060, zr36067 91 Inputs/outputs: Composite, S-video and Internal 92 Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) 93 Card number: 2 94 95 Pinnacle/Miro DC10(old): * 96 * Zoran zr36057 PCI controller 97 * Zoran zr36050 MJPEG codec 98 * Zoran zr36016 Video Front End or Fuji md0211 Video Front End (clone?) 99 * Micronas vpx3220a TV decoder 100 * mse3000 TV encoder or Analog Devices adv7176 TV encoder * 101 Drivers to use: videodev, i2c-core, i2c-algo-bit, 102 videocodec, vpx3220, mse3000/adv7175, zr36050, zr36016, zr36067 103 Inputs/outputs: Composite, S-video and Internal 104 Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) 105 Card number: 0 106 107 Pinnacle/Miro DC30: * 108 * Zoran zr36057 PCI controller 109 * Zoran zr36050 MJPEG codec 110 * Zoran zr36016 Video Front End 111 * Micronas vpx3225d/vpx3220a/vpx3216b TV decoder 112 * Analog Devices adv7176 TV encoder 113 Drivers to use: videodev, i2c-core, i2c-algo-bit, 114 videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36016, zr36067 115 Inputs/outputs: Composite, S-video and Internal 116 Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) 117 Card number: 3 118 119 Pinnacle/Miro DC30+: * 120 * Zoran zr36067 PCI controller 121 * Zoran zr36050 MJPEG codec 122 * Zoran zr36016 Video Front End 123 * Micronas vpx3225d/vpx3220a/vpx3216b TV decoder 124 * Analog Devices adv7176 TV encoder 125 Drivers to use: videodev, i2c-core, i2c-algo-bit, 126 videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36015, zr36067 127 Inputs/outputs: Composite, S-video and Internal 128 Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) 129 Card number: 4 130 131 Note: No module for the mse3000 is available yet 132 Note: No module for the vpx3224 is available yet 133 134 =========================== 135 136 1.1 What the TV decoder can do an what not 137 138 The best know TV standards are NTSC/PAL/SECAM. but for decoding a frame that 139 information is not enough. There are several formats of the TV standards. 140 And not every TV decoder is able to handle every format. Also the every 141 combination is supported by the driver. There are currently 11 different 142 tv broadcast formats all aver the world. 143 144 The CCIR defines parameters needed for broadcasting the signal. 145 The CCIR has defined different standards: A,B,D,E,F,G,D,H,I,K,K1,L,M,N,... 146 The CCIR says not much about the colorsystem used !!! 147 And talking about a colorsystem says not to much about how it is broadcast. 148 149 The CCIR standards A,E,F are not used any more. 150 151 When you speak about NTSC, you usually mean the standard: CCIR - M using 152 the NTSC colorsystem which is used in the USA, Japan, Mexico, Canada 153 and a few others. 154 155 When you talk about PAL, you usually mean: CCIR - B/G using the PAL 156 colorsystem which is used in many Countries. 157 158 When you talk about SECAM, you mean: CCIR - L using the SECAM Colorsystem 159 which is used in France, and a few others. 160 161 There the other version of SECAM, CCIR - D/K is used in Bulgaria, China, 162 Slovakai, Hungary, Korea (Rep.), Poland, Rumania and a others. 163 164 The CCIR - H uses the PAL colorsystem (sometimes SECAM) and is used in 165 Egypt, Libya, Sri Lanka, Syrain Arab. Rep. 166 167 The CCIR - I uses the PAL colorsystem, and is used in Great Britain, Hong Kong, 168 Ireland, Nigeria, South Africa. 169 170 The CCIR - N uses the PAL colorsystem and PAL frame size but the NTSC framerate, 171 and is used in Argentinia, Uruguay, an a few others 172 173 We do not talk about how the audio is broadcast ! 174 175 A rather good sites about the TV standards are: 176 http://www.sony.jp/support/ 177 http://info.electronicwerkstatt.de/bereiche/fernsehtechnik/frequenzen_und_normen/Fernsehnormen/ 178 and http://www.cabl.com/restaurant/channel.html 179 180 Other weird things around: NTSC 4.43 is a modificated NTSC, which is mainly 181 used in PAL VCR's that are able to play back NTSC. PAL 60 seems to be the same 182 as NTSC 4.43 . The Datasheets also talk about NTSC 44, It seems as if it would 183 be the same as NTSC 4.43. 184 NTSC Combs seems to be a decoder mode where the decoder uses a comb filter 185 to split coma and luma instead of a Delay line. 186 187 But I did not defiantly find out what NTSC Comb is. 188 189 Philips saa7111 TV decoder 190 was introduced in 1997, is used in the BUZ and 191 can handle: PAL B/G/H/I, PAL N, PAL M, NTSC M, NTSC N, NTSC 4.43 and SECAM 192 193 Philips saa7110a TV decoder 194 was introduced in 1995, is used in the Pinnacle/Miro DC10(new), DC10+ and 195 can handle: PAL B/G, NTSC M and SECAM 196 197 Philips saa7114 TV decoder 198 was introduced in 2000, is used in the LML33R10 and 199 can handle: PAL B/G/D/H/I/N, PAL N, PAL M, NTSC M, NTSC 4.43 and SECAM 200 201 Brooktree bt819 TV decoder 202 was introduced in 1996, and is used in the LML33 and 203 can handle: PAL B/D/G/H/I, NTSC M 204 205 Micronas vpx3220a TV decoder 206 was introduced in 1996, is used in the DC30 and DC30+ and 207 can handle: PAL B/G/H/I, PAL N, PAL M, NTSC M, NTSC 44, PAL 60, SECAM,NTSC Comb 208 209 Samsung ks0127 TV decoder 210 is used in the AVS6EYES card and 211 can handle: NTSC-M/N/44, PAL-M/N/B/G/H/I/D/K/L and SECAM 212 213 =========================== 214 215 1.2 What the TV encoder can do an what not 216 217 The TV encoder are doing the "same" as the decoder, but in the oder direction. 218 You feed them digital data and the generate a Composite or SVHS signal. 219 For information about the colorsystems and TV norm take a look in the 220 TV decoder section. 221 222 Philips saa7185 TV Encoder 223 was introduced in 1996, is used in the BUZ 224 can generate: PAL B/G, NTSC M 225 226 Brooktree bt856 TV Encoder 227 was introduced in 1994, is used in the LML33 228 can generate: PAL B/D/G/H/I/N, PAL M, NTSC M, PAL-N (Argentina) 229 230 Analog Devices adv7170 TV Encoder 231 was introduced in 2000, is used in the LML300R10 232 can generate: PAL B/D/G/H/I/N, PAL M, NTSC M, PAL 60 233 234 Analog Devices adv7175 TV Encoder 235 was introduced in 1996, is used in the DC10, DC10+, DC10 old, DC30, DC30+ 236 can generate: PAL B/D/G/H/I/N, PAL M, NTSC M 237 238 ITT mse3000 TV encoder 239 was introduced in 1991, is used in the DC10 old 240 can generate: PAL , NTSC , SECAM 241 242 Conexant bt866 TV encoder 243 is used in AVS6EYES, and 244 can generate: NTSC/PAL, PALÂM, PALÂN 245 246 The adv717x, should be able to produce PAL N. But you find nothing PAL N 247 specific in the registers. Seem that you have to reuse a other standard 248 to generate PAL N, maybe it would work if you use the PAL M settings. 249 250 ========================== 251 252 2. How do I get this damn thing to work 253 254 Load zr36067.o. If it can't autodetect your card, use the card=X insmod 255 option with X being the card number as given in the previous section. 256 To have more than one card, use card=X1[,X2[,X3,[X4[..]]]] 257 258 To automate this, add the following to your /etc/modprobe.d/zoran.conf: 259 260 options zr36067 card=X1[,X2[,X3[,X4[..]]]] 261 alias char-major-81-0 zr36067 262 263 One thing to keep in mind is that this doesn't load zr36067.o itself yet. It 264 just automates loading. If you start using xawtv, the device won't load on 265 some systems, since you're trying to load modules as a user, which is not 266 allowed ("permission denied"). A quick workaround is to add 'Load "v4l"' to 267 XF86Config-4 when you use X by default, or to run 'v4l-conf -c <device>' in 268 one of your startup scripts (normally rc.local) if you don't use X. Both 269 make sure that the modules are loaded on startup, under the root account. 270 271 =========================== 272 273 3. What mainboard should I use (or why doesn't my card work) 274 275 <insert lousy disclaimer here>. In short: good=SiS/Intel, bad=VIA. 276 277 Experience tells us that people with a Buz, on average, have more problems 278 than users with a DC10+/LML33. Also, it tells us that people owning a VIA- 279 based mainboard (ktXXX, MVP3) have more problems than users with a mainboard 280 based on a different chipset. Here's some notes from Andrew Stevens: 281 -- 282 Here's my experience of using LML33 and Buz on various motherboards: 283 284 VIA MVP3 285 Forget it. Pointless. Doesn't work. 286 Intel 430FX (Pentium 200) 287 LML33 perfect, Buz tolerable (3 or 4 frames dropped per movie) 288 Intel 440BX (early stepping) 289 LML33 tolerable. Buz starting to get annoying (6-10 frames/hour) 290 Intel 440BX (late stepping) 291 Buz tolerable, LML3 almost perfect (occasional single frame drops) 292 SiS735 293 LML33 perfect, Buz tolerable. 294 VIA KT133(*) 295 LML33 starting to get annoying, Buz poor enough that I have up. 296 297 Both 440BX boards were dual CPU versions. 298 -- 299 Bernhard Praschinger later added: 300 -- 301 AMD 751 302 Buz perfect-tolerable 303 AMD 760 304 Buz perfect-tolerable 305 -- 306 In general, people on the user mailinglist won't give you much of a chance 307 if you have a VIA-based motherboard. They may be cheap, but sometimes, you'd 308 rather want to spend some more money on better boards. In general, VIA 309 mainboard's IDE/PCI performance will also suck badly compared to others. 310 You'll noticed the DC10+/DC30+ aren't mentioned anywhere in the overview. 311 Basically, you can assume that if the Buz works, the LML33 will work too. If 312 the LML33 works, the DC10+/DC30+ will work too. They're most tolerant to 313 different mainboard chipsets from all of the supported cards. 314 315 If you experience timeouts during capture, buy a better mainboard or lower 316 the quality/buffersize during capture (see 'Concerning buffer sizes, quality, 317 output size etc.'). If it hangs, there's little we can do as of now. Check 318 your IRQs and make sure the card has its own interrupts. 319 320 =========================== 321 322 4. Programming interface 323 324 This driver conforms to video4linux2. Support for V4L1 and for the custom 325 zoran ioctls has been removed in kernel 2.6.38. 326 327 For programming example, please, look at lavrec.c and lavplay.c code in 328 the MJPEG-tools (http://mjpeg.sf.net/). 329 330 Additional notes for software developers: 331 332 The driver returns maxwidth and maxheight parameters according to 333 the current TV standard (norm). Therefore, the software which 334 communicates with the driver and "asks" for these parameters should 335 first set the correct norm. Well, it seems logically correct: TV 336 standard is "more constant" for current country than geometry 337 settings of a variety of TV capture cards which may work in ITU or 338 square pixel format. 339 340 =========================== 341 342 5. Applications 343 344 Applications known to work with this driver: 345 346 TV viewing: 347 * xawtv 348 * kwintv 349 * probably any TV application that supports video4linux or video4linux2. 350 351 MJPEG capture/playback: 352 * mjpegtools/lavtools (or Linux Video Studio) 353 * gstreamer 354 * mplayer 355 356 General raw capture: 357 * xawtv 358 * gstreamer 359 * probably any application that supports video4linux or video4linux2 360 361 Video editing: 362 * Cinelerra 363 * MainActor 364 * mjpegtools (or Linux Video Studio) 365 366 =========================== 367 368 6. Concerning buffer sizes, quality, output size etc. 369 370 The zr36060 can do 1:2 JPEG compression. This is really the theoretical 371 maximum that the chipset can reach. The driver can, however, limit compression 372 to a maximum (size) of 1:4. The reason for this is that some cards (e.g. Buz) 373 can't handle 1:2 compression without stopping capture after only a few minutes. 374 With 1:4, it'll mostly work. If you have a Buz, use 'low_bitrate=1' to go into 375 1:4 max. compression mode. 376 377 100% JPEG quality is thus 1:2 compression in practice. So for a full PAL frame 378 (size 720x576). The JPEG fields are stored in YUY2 format, so the size of the 379 fields are 720x288x16/2 bits/field (2 fields/frame) = 207360 bytes/field x 2 = 380 414720 bytes/frame (add some more bytes for headers and DHT (huffman)/DQT 381 (quantization) tables, and you'll get to something like 512kB per frame for 382 1:2 compression. For 1:4 compression, you'd have frames of half this size. 383 384 Some additional explanation by Martin Samuelsson, which also explains the 385 importance of buffer sizes: 386 -- 387 > Hmm, I do not think it is really that way. With the current (downloaded 388 > at 18:00 Monday) driver I get that output sizes for 10 sec: 389 > -q 50 -b 128 : 24.283.332 Bytes 390 > -q 50 -b 256 : 48.442.368 391 > -q 25 -b 128 : 24.655.992 392 > -q 25 -b 256 : 25.859.820 393 394 I woke up, and can't go to sleep again. I'll kill some time explaining why 395 this doesn't look strange to me. 396 397 Let's do some math using a width of 704 pixels. I'm not sure whether the Buz 398 actually use that number or not, but that's not too important right now. 399 400 704x288 pixels, one field, is 202752 pixels. Divided by 64 pixels per block; 401 3168 blocks per field. Each pixel consist of two bytes; 128 bytes per block; 402 1024 bits per block. 100% in the new driver mean 1:2 compression; the maximum 403 output becomes 512 bits per block. Actually 510, but 512 is simpler to use 404 for calculations. 405 406 Let's say that we specify d1q50. We thus want 256 bits per block; times 3168 407 becomes 811008 bits; 101376 bytes per field. We're talking raw bits and bytes 408 here, so we don't need to do any fancy corrections for bits-per-pixel or such 409 things. 101376 bytes per field. 410 411 d1 video contains two fields per frame. Those sum up to 202752 bytes per 412 frame, and one of those frames goes into each buffer. 413 414 But wait a second! -b128 gives 128kB buffers! It's not possible to cram 415 202752 bytes of JPEG data into 128kB! 416 417 This is what the driver notice and automatically compensate for in your 418 examples. Let's do some math using this information: 419 420 128kB is 131072 bytes. In this buffer, we want to store two fields, which 421 leaves 65536 bytes for each field. Using 3168 blocks per field, we get 422 20.68686868... available bytes per block; 165 bits. We can't allow the 423 request for 256 bits per block when there's only 165 bits available! The -q50 424 option is silently overridden, and the -b128 option takes precedence, leaving 425 us with the equivalence of -q32. 426 427 This gives us a data rate of 165 bits per block, which, times 3168, sums up 428 to 65340 bytes per field, out of the allowed 65536. The current driver has 429 another level of rate limiting; it won't accept -q values that fill more than 430 6/8 of the specified buffers. (I'm not sure why. "Playing it safe" seem to be 431 a safe bet. Personally, I think I would have lowered requested-bits-per-block 432 by one, or something like that.) We can't use 165 bits per block, but have to 433 lower it again, to 6/8 of the available buffer space: We end up with 124 bits 434 per block, the equivalence of -q24. With 128kB buffers, you can't use greater 435 than -q24 at -d1. (And PAL, and 704 pixels width...) 436 437 The third example is limited to -q24 through the same process. The second 438 example, using very similar calculations, is limited to -q48. The only 439 example that actually grab at the specified -q value is the last one, which 440 is clearly visible, looking at the file size. 441 -- 442 443 Conclusion: the quality of the resulting movie depends on buffer size, quality, 444 whether or not you use 'low_bitrate=1' as insmod option for the zr36060.c 445 module to do 1:4 instead of 1:2 compression, etc. 446 447 If you experience timeouts, lowering the quality/buffersize or using 448 'low_bitrate=1 as insmod option for zr36060.o might actually help, as is 449 proven by the Buz. 450 451 =========================== 452 453 7. It hangs/crashes/fails/whatevers! Help! 454 455 Make sure that the card has its own interrupts (see /proc/interrupts), check 456 the output of dmesg at high verbosity (load zr36067.o with debug=2, 457 load all other modules with debug=1). Check that your mainboard is favorable 458 (see question 2) and if not, test the card in another computer. Also see the 459 notes given in question 3 and try lowering quality/buffersize/capturesize 460 if recording fails after a period of time. 461 462 If all this doesn't help, give a clear description of the problem including 463 detailed hardware information (memory+brand, mainboard+chipset+brand, which 464 MJPEG card, processor, other PCI cards that might be of interest), give the 465 system PnP information (/proc/interrupts, /proc/dma, /proc/devices), and give 466 the kernel version, driver version, glibc version, gcc version and any other 467 information that might possibly be of interest. Also provide the dmesg output 468 at high verbosity. See 'Contacting' on how to contact the developers. 469 470 =========================== 471 472 8. Maintainers/Contacting 473 474 The driver is currently maintained by Laurent Pinchart and Ronald Bultje 475 (<firstname.lastname@example.org> and <email@example.com>). For bug 476 reports or questions, please contact the mailinglist instead of the developers 477 individually. For user questions (i.e. bug reports or how-to questions), send 478 an email to <firstname.lastname@example.org>, for developers (i.e. if you want to 479 help programming), send an email to <email@example.com>. See 480 http://www.sf.net/projects/mjpeg/ for subscription information. 481 482 For bug reports, be sure to include all the information as described in 483 the section 'It hangs/crashes/fails/whatevers! Help!'. Please make sure 484 you're using the latest version (http://mjpeg.sf.net/driver-zoran/). 485 486 Previous maintainers/developers of this driver include Serguei Miridonov 487 <firstname.lastname@example.org>, Wolfgang Scherr <email@example.com>, Dave Perks 488 <firstname.lastname@example.org> and Rainer Johanni <Rainer@Johanni.de>. 489 490 =========================== 491 492 9. License 493 494 This driver is distributed under the terms of the General Public License. 495 496 This program is free software; you can redistribute it and/or modify 497 it under the terms of the GNU General Public License as published by 498 the Free Software Foundation; either version 2 of the License, or 499 (at your option) any later version. 500 501 This program is distributed in the hope that it will be useful, 502 but WITHOUT ANY WARRANTY; without even the implied warranty of 503 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 504 GNU General Public License for more details. 505 506 You should have received a copy of the GNU General Public License 507 along with this program; if not, write to the Free Software 508 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 509 510 See http://www.gnu.org/ for more information.