Merge tag 'media/v4.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
[sfrench/cifs-2.6.git] / Documentation / media / v4l-drivers / zoran.rst
1 The Zoran driver
2 ================
3
4 unified zoran driver (zr360x7, zoran, buz, dc10(+), dc30(+), lml33)
5
6 website: http://mjpeg.sourceforge.net/driver-zoran/
7
8
9 Frequently Asked Questions
10 --------------------------
11
12 What cards are supported
13 ------------------------
14
15 Iomega Buz, Linux Media Labs LML33/LML33R10, Pinnacle/Miro
16 DC10/DC10+/DC30/DC30+ and related boards (available under various names).
17
18 Iomega Buz
19 ~~~~~~~~~~
20
21 * Zoran zr36067 PCI controller
22 * Zoran zr36060 MJPEG codec
23 * Philips saa7111 TV decoder
24 * Philips saa7185 TV encoder
25
26 Drivers to use: videodev, i2c-core, i2c-algo-bit,
27 videocodec, saa7111, saa7185, zr36060, zr36067
28
29 Inputs/outputs: Composite and S-video
30
31 Norms: PAL, SECAM (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps)
32
33 Card number: 7
34
35 AverMedia 6 Eyes AVS6EYES
36 ~~~~~~~~~~~~~~~~~~~~~~~~~
37
38 * Zoran zr36067 PCI controller
39 * Zoran zr36060 MJPEG codec
40 * Samsung ks0127 TV decoder
41 * Conexant bt866  TV encoder
42
43 Drivers to use: videodev, i2c-core, i2c-algo-bit,
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
52 Norms: PAL, SECAM (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps)
53
54 Card number: 8
55
56 .. note::
57
58    Not autodetected, card=8 is necessary.
59
60 Linux Media Labs LML33
61 ~~~~~~~~~~~~~~~~~~~~~~
62
63 * Zoran zr36067 PCI controller
64 * Zoran zr36060 MJPEG codec
65 * Brooktree bt819 TV decoder
66 * Brooktree bt856 TV encoder
67
68 Drivers to use: videodev, i2c-core, i2c-algo-bit,
69 videocodec, bt819, bt856, zr36060, zr36067
70
71 Inputs/outputs: Composite and S-video
72
73 Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps)
74
75 Card number: 5
76
77 Linux Media Labs LML33R10
78 ~~~~~~~~~~~~~~~~~~~~~~~~~
79
80 * Zoran zr36067 PCI controller
81 * Zoran zr36060 MJPEG codec
82 * Philips saa7114 TV decoder
83 * Analog Devices adv7170 TV encoder
84
85 Drivers to use: videodev, i2c-core, i2c-algo-bit,
86 videocodec, saa7114, adv7170, zr36060, zr36067
87
88 Inputs/outputs: Composite and S-video
89
90 Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps)
91
92 Card number: 6
93
94 Pinnacle/Miro DC10(new)
95 ~~~~~~~~~~~~~~~~~~~~~~~
96
97 * Zoran zr36057 PCI controller
98 * Zoran zr36060 MJPEG codec
99 * Philips saa7110a TV decoder
100 * Analog Devices adv7176 TV encoder
101
102 Drivers to use: videodev, i2c-core, i2c-algo-bit,
103 videocodec, saa7110, adv7175, zr36060, zr36067
104
105 Inputs/outputs: Composite, S-video and Internal
106
107 Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps)
108
109 Card number: 1
110
111 Pinnacle/Miro DC10+
112 ~~~~~~~~~~~~~~~~~~~
113
114 * Zoran zr36067 PCI controller
115 * Zoran zr36060 MJPEG codec
116 * Philips saa7110a TV decoder
117 * Analog Devices adv7176 TV encoder
118
119 Drivers to use: videodev, i2c-core, i2c-algo-bit,
120 videocodec, sa7110, adv7175, zr36060, zr36067
121
122 Inputs/outputs: Composite, S-video and Internal
123
124 Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps)
125
126 Card number: 2
127
128 Pinnacle/Miro DC10(old)
129 ~~~~~~~~~~~~~~~~~~~~~~~
130
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
135 * mse3000 TV encoder or Analog Devices adv7176 TV encoder
136
137 Drivers to use: videodev, i2c-core, i2c-algo-bit,
138 videocodec, vpx3220, mse3000/adv7175, zr36050, zr36016, zr36067
139
140 Inputs/outputs: Composite, S-video and Internal
141
142 Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps)
143
144 Card number: 0
145
146 Pinnacle/Miro DC30
147 ~~~~~~~~~~~~~~~~~~
148
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
154
155 Drivers to use: videodev, i2c-core, i2c-algo-bit,
156 videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36016, zr36067
157
158 Inputs/outputs: Composite, S-video and Internal
159
160 Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps)
161
162 Card number: 3
163
164 Pinnacle/Miro DC30+
165 ~~~~~~~~~~~~~~~~~~~
166
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
172
173 Drivers to use: videodev, i2c-core, i2c-algo-bit,
174 videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36015, zr36067
175
176 Inputs/outputs: Composite, S-video and Internal
177
178 Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps)
179
180 Card number: 4
181
182 .. note::
183
184    #) No module for the mse3000 is available yet
185    #) No module for the vpx3224 is available yet
186
187 1.1 What the TV decoder can do an what not
188 ------------------------------------------
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.
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.
195
196 The CCIR defines parameters needed for broadcasting the signal.
197 The CCIR has defined different standards: A,B,D,E,F,G,D,H,I,K,K1,L,M,N,...
198 The CCIR says not much about the colorsystem used !!!
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
205 and a few others.
206
207 When you talk about PAL, you usually mean: CCIR - B/G using the PAL
208 colorsystem which is used in many Countries.
209
210 When you talk about SECAM, you mean: CCIR - L using the SECAM Colorsystem
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,
214 Slovakai, Hungary, Korea (Rep.), Poland, Rumania and a others.
215
216 The CCIR - H uses the PAL colorsystem (sometimes SECAM) and is used in
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
227 A rather good sites about the TV standards are:
228 http://www.sony.jp/support/
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
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.
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
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
246
247 Philips saa7110a TV decoder
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
252
253 Philips saa7114 TV decoder
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
258
259 Brooktree bt819 TV decoder
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
264
265 Micronas vpx3220a TV decoder
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
270
271 Samsung ks0127 TV decoder
272 ~~~~~~~~~~~~~~~~~~~~~~~~~
273
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
276
277
278 What the TV encoder can do an what not
279 --------------------------------------
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
287 ~~~~~~~~~~~~~~~~~~~~~~~~~~
288
289 - was introduced in 1996, is used in the BUZ
290 - can generate: PAL B/G, NTSC M
291
292 Brooktree bt856 TV Encoder
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)
297
298 Analog Devices adv7170 TV Encoder
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
303
304 Analog Devices adv7175 TV Encoder
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
309
310 ITT mse3000 TV encoder
311 ~~~~~~~~~~~~~~~~~~~~~~
312
313 - was introduced in 1991, is used in the DC10 old
314 - can generate: PAL , NTSC , SECAM
315
316 Conexant bt866 TV encoder
317 ~~~~~~~~~~~~~~~~~~~~~~~~~
318
319 - is used in AVS6EYES, and
320 - can generate: NTSC/PAL, PAL­M, PAL­N
321
322 The adv717x, should be able to produce PAL N. But you find nothing PAL N
323 specific in the registers. Seem that you have to reuse a other standard
324 to generate PAL N, maybe it would work if you use the PAL M settings.
325
326 How do I get this damn thing to work
327 ------------------------------------
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
333 To automate this, add the following to your /etc/modprobe.d/zoran.conf:
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
346 What mainboard should I use (or why doesn't my card work)
347 ---------------------------------------------------------
348
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:
356
357 Here's my experience of using LML33 and Buz on various motherboards:
358
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
374 Bernhard Praschinger later added:
375
376 - AMD 751
377         - Buz perfect-tolerable
378 - AMD 760
379         - Buz perfect-tolerable
380
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
395 Programming interface
396 ---------------------
397
398 This driver conforms to video4linux2. Support for V4L1 and for the custom
399 zoran ioctls has been removed in kernel 2.6.38.
400
401 For programming example, please, look at lavrec.c and lavplay.c code in
402 the MJPEG-tools (http://mjpeg.sf.net/).
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
412    square pixel format.
413
414 Applications
415 ------------
416
417 Applications known to work with this driver:
418
419 TV viewing:
420
421 * xawtv
422 * kwintv
423 * probably any TV application that supports video4linux or video4linux2.
424
425 MJPEG capture/playback:
426
427 * mjpegtools/lavtools (or Linux Video Studio)
428 * gstreamer
429 * mplayer
430
431 General raw capture:
432
433 * xawtv
434 * gstreamer
435 * probably any application that supports video4linux or video4linux2
436
437 Video editing:
438
439 * Cinelerra
440 * MainActor
441 * mjpegtools (or Linux Video Studio)
442
443
444 Concerning buffer sizes, quality, output size etc.
445 --------------------------------------------------
446
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
472 I woke up, and can't go to sleep again. I'll kill some time explaining why
473 this doesn't look strange to me.
474
475 Let's do some math using a width of 704 pixels. I'm not sure whether the Buz
476 actually use that number or not, but that's not too important right now.
477
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
482 for calculations.
483
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
487 things. 101376 bytes per field.
488
489 d1 video contains two fields per frame. Those sum up to 202752 bytes per
490 frame, and one of those frames goes into each buffer.
491
492 But wait a second! -b128 gives 128kB buffers! It's not possible to cram
493 202752 bytes of JPEG data into 128kB!
494
495 This is what the driver notice and automatically compensate for in your
496 examples. Let's do some math using this information:
497
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
503 us with the equivalence of -q32.
504
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
513 than -q24 at -d1. (And PAL, and 704 pixels width...)
514
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
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
529 It hangs/crashes/fails/whatevers! Help!
530 ---------------------------------------
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
547 Maintainers/Contacting
548 ----------------------
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
566 Driver's License
567 ----------------
568
569     This driver is distributed under the terms of the General Public License.
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
581 See http://www.gnu.org/ for more information.