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