| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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, | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 31 | 		videocodec, saa7111, saa7185, zr36060, zr36067 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 32 | Inputs/outputs: Composite and S-video | 
 | 33 | Norms: PAL, SECAM (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) | 
 | 34 | Card number: 7 | 
 | 35 |  | 
| Martin Samuelsson | fbe60da | 2006-04-27 10:17:00 -0300 | [diff] [blame] | 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 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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, | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 57 | 		videocodec, bt819, bt856, zr36060, zr36067 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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, | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 68 | 		videocodec, saa7114, adv7170, zr36060, zr36067 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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, | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 79 | 		videocodec, saa7110, adv7175, zr36060, zr36067 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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, | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 102 | 		videocodec, vpx3220, mse3000/adv7175, zr36050, zr36016, zr36067 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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, | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 114 | 		videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36016, zr36067 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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. | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 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. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 143 |  | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 144 | The CCIR defines parameters needed for broadcasting the signal. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 145 | The CCIR has defined different standards: A,B,D,E,F,G,D,H,I,K,K1,L,M,N,... | 
| Paolo Ornati | 670e9f3 | 2006-10-03 22:57:56 +0200 | [diff] [blame] | 146 | The CCIR says not much about the colorsystem used !!! | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 153 | and a few others. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 154 |  | 
 | 155 | When you talk about PAL, you usually mean: CCIR - B/G using the PAL | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 156 | colorsystem which is used in many Countries. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 157 |  | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 158 | When you talk about SECAM, you mean: CCIR - L using the SECAM Colorsystem | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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, | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 162 | Slovakai, Hungary, Korea (Rep.), Poland, Rumania and a others. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 163 |  | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 164 | The CCIR - H uses the PAL colorsystem (sometimes SECAM) and is used in | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 175 | A rather good sites about the TV standards are: | 
| Justin P. Mattock | 0ea6e61 | 2010-07-23 20:51:24 -0700 | [diff] [blame] | 176 | http://www.sony.jp/support/ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 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. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 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 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 192 |  | 
 | 193 | Philips saa7110a TV decoder | 
 | 194 | was introduced in 1995, is used in the Pinnacle/Miro DC10(new), DC10+ and | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 195 | can handle: PAL B/G, NTSC M and SECAM | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 196 |  | 
 | 197 | Philips saa7114 TV decoder | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 198 | was introduced in 2000, is used in the LML33R10 and | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  | 
| Martin Samuelsson | fbe60da | 2006-04-27 10:17:00 -0300 | [diff] [blame] | 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 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 227 | was introduced in 1994, is used in the LML33 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  | 
| Martin Samuelsson | fbe60da | 2006-04-27 10:17:00 -0300 | [diff] [blame] | 242 | Conexant bt866 TV encoder | 
 | 243 | is used in AVS6EYES, and | 
| John Anthony Kazos Jr | be2a608 | 2007-05-09 08:50:42 +0200 | [diff] [blame] | 244 | can generate: NTSC/PAL, PALÂM, PALÂN | 
| Martin Samuelsson | fbe60da | 2006-04-27 10:17:00 -0300 | [diff] [blame] | 245 |  | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 246 | The adv717x, should be able to produce PAL N. But you find nothing PAL N | 
| Tobias Klauser | d533f67 | 2005-09-10 00:26:46 -0700 | [diff] [blame] | 247 | specific in the registers. Seem that you have to reuse a other standard | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 248 | to generate PAL N, maybe it would work if you use the PAL M settings. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  | 
| Lucas De Marchi | 970e248 | 2012-03-30 13:37:16 -0700 | [diff] [blame] | 258 | To automate this, add the following to your /etc/modprobe.d/zoran.conf: | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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. | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 286 | Intel 430FX (Pentium 200) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  | 
| Hans Verkuil | ad1ecf8 | 2010-12-25 06:58:01 -0300 | [diff] [blame] | 324 | This driver conforms to video4linux2. Support for V4L1 and for the custom | 
 | 325 | zoran ioctls has been removed in kernel 2.6.38. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 326 |  | 
 | 327 | For programming example, please, look at lavrec.c and lavplay.c code in | 
| Hans Verkuil | ad1ecf8 | 2010-12-25 06:58:01 -0300 | [diff] [blame] | 328 | the MJPEG-tools (http://mjpeg.sf.net/). | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 | 
| Jean Delvare | 4dbf46a | 2009-03-10 23:28:17 -0300 | [diff] [blame] | 338 |    square pixel format. | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |  | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 394 | I woke up, and can't go to sleep again. I'll kill some time explaining why | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 395 | this doesn't look strange to me. | 
 | 396 |  | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 397 | Let's do some math using a width of 704 pixels. I'm not sure whether the Buz | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 398 | actually use that number or not, but that's not too important right now. | 
 | 399 |  | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 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 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 404 | for calculations. | 
 | 405 |  | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 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 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 409 | things. 101376 bytes per field. | 
 | 410 |  | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 411 | d1 video contains two fields per frame. Those sum up to 202752 bytes per | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 412 | frame, and one of those frames goes into each buffer. | 
 | 413 |  | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 414 | But wait a second! -b128 gives 128kB buffers! It's not possible to cram | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 415 | 202752 bytes of JPEG data into 128kB! | 
 | 416 |  | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 417 | This is what the driver notice and automatically compensate for in your | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 418 | examples. Let's do some math using this information: | 
 | 419 |  | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 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 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 425 | us with the equivalence of -q32. | 
 | 426 |  | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 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 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 435 | than -q24 at -d1. (And PAL, and 704 pixels width...) | 
 | 436 |  | 
| Mauro Carvalho Chehab | 48773e6 | 2006-03-25 09:21:43 -0300 | [diff] [blame] | 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 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 | (<laurent.pinchart@skynet.be> and <rbultje@ronald.bitfreak.net>). 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 <mjpeg-users@lists.sf.net>, for developers (i.e. if you want to | 
 | 479 | help programming), send an email to <mjpeg-developer@lists.sf.net>. 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 | <mirsev@cicese.mx>, Wolfgang Scherr <scherr@net4you.net>, Dave Perks | 
 | 488 | <dperks@ibm.net> 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. |