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