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