linux/Documentation/video4linux/Zoran
<<
>>
Prefs
   1Frequently Asked Questions:
   2===========================
   3subject: unified zoran driver (zr360x7, zoran, buz, dc10(+), dc30(+), lml33)
   4website: http://mjpeg.sourceforge.net/driver-zoran/
   5
   61. What cards are supported
   71.1 What the TV decoder can do an what not
   81.2 What the TV encoder can do an what not
   92. How do I get this damn thing to work
  103. What mainboard should I use (or why doesn't my card work)
  114. Programming interface
  125. Applications
  136. Concerning buffer sizes, quality, output size etc.
  147. It hangs/crashes/fails/whatevers! Help!
  158. Maintainers/Contacting
  169. License
  17
  18===========================
  19
  201. What cards are supported
  21
  22Iomega Buz, Linux Media Labs LML33/LML33R10, Pinnacle/Miro
  23DC10/DC10+/DC30/DC30+ and related boards (available under various names).
  24
  25Iomega Buz:
  26* Zoran zr36067 PCI controller
  27* Zoran zr36060 MJPEG codec
  28* Philips saa7111 TV decoder
  29* Philips saa7185 TV encoder
  30Drivers to use: videodev, i2c-core, i2c-algo-bit,
  31                videocodec, saa7111, saa7185, zr36060, zr36067
  32Inputs/outputs: Composite and S-video
  33Norms: PAL, SECAM (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps)
  34Card number: 7
  35
  36AverMedia 6 Eyes AVS6EYES:
  37* Zoran zr36067 PCI controller
  38* Zoran zr36060 MJPEG codec
  39* Samsung ks0127 TV decoder
  40* Conexant bt866  TV encoder
  41Drivers to use: videodev, i2c-core, i2c-algo-bit,
  42                videocodec, ks0127, bt866, zr36060, zr36067
  43Inputs/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.
  47Norms: PAL, SECAM (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps)
  48Card number: 8
  49Not autodetected, card=8 is necessary.
  50
  51Linux Media Labs LML33:
  52* Zoran zr36067 PCI controller
  53* Zoran zr36060 MJPEG codec
  54* Brooktree bt819 TV decoder
  55* Brooktree bt856 TV encoder
  56Drivers to use: videodev, i2c-core, i2c-algo-bit,
  57                videocodec, bt819, bt856, zr36060, zr36067
  58Inputs/outputs: Composite and S-video
  59Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps)
  60Card number: 5
  61
  62Linux Media Labs LML33R10:
  63* Zoran zr36067 PCI controller
  64* Zoran zr36060 MJPEG codec
  65* Philips saa7114 TV decoder
  66* Analog Devices adv7170 TV encoder
  67Drivers to use: videodev, i2c-core, i2c-algo-bit,
  68                videocodec, saa7114, adv7170, zr36060, zr36067
  69Inputs/outputs: Composite and S-video
  70Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps)
  71Card number: 6
  72
  73Pinnacle/Miro DC10(new):
  74* Zoran zr36057 PCI controller
  75* Zoran zr36060 MJPEG codec
  76* Philips saa7110a TV decoder
  77* Analog Devices adv7176 TV encoder
  78Drivers to use: videodev, i2c-core, i2c-algo-bit,
  79                videocodec, saa7110, adv7175, zr36060, zr36067
  80Inputs/outputs: Composite, S-video and Internal
  81Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps)
  82Card number: 1
  83
  84Pinnacle/Miro DC10+:
  85* Zoran zr36067 PCI controller
  86* Zoran zr36060 MJPEG codec
  87* Philips saa7110a TV decoder
  88* Analog Devices adv7176 TV encoder
  89Drivers to use: videodev, i2c-core, i2c-algo-bit,
  90                videocodec, sa7110, adv7175, zr36060, zr36067
  91Inputs/outputs: Composite, S-video and Internal
  92Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps)
  93Card number: 2
  94
  95Pinnacle/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 *
 101Drivers to use: videodev, i2c-core, i2c-algo-bit,
 102                videocodec, vpx3220, mse3000/adv7175, zr36050, zr36016, zr36067
 103Inputs/outputs: Composite, S-video and Internal
 104Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps)
 105Card number: 0
 106
 107Pinnacle/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
 113Drivers to use: videodev, i2c-core, i2c-algo-bit,
 114                videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36016, zr36067
 115Inputs/outputs: Composite, S-video and Internal
 116Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps)
 117Card number: 3
 118
 119Pinnacle/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
 125Drivers to use: videodev, i2c-core, i2c-algo-bit,
 126                videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36015, zr36067
 127Inputs/outputs: Composite, S-video and Internal
 128Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps)
 129Card number: 4
 130
 131Note: No module for the mse3000 is available yet
 132Note: No module for the vpx3224 is available yet
 133
 134===========================
 135
 1361.1 What the TV decoder can do an what not
 137
 138The best know TV standards are NTSC/PAL/SECAM. but for decoding a frame that
 139information is not enough. There are several formats of the TV standards.
 140And not every TV decoder is able to handle every format. Also the every
 141combination is supported by the driver. There are currently 11 different
 142tv broadcast formats all aver the world.
 143
 144The CCIR defines parameters needed for broadcasting the signal.
 145The CCIR has defined different standards: A,B,D,E,F,G,D,H,I,K,K1,L,M,N,...
 146The CCIR says not much about the colorsystem used !!!
 147And talking about a colorsystem says not to much about how it is broadcast.
 148
 149The CCIR standards A,E,F are not used any more.
 150
 151When you speak about NTSC, you usually mean the standard: CCIR - M using
 152the NTSC colorsystem which is used in the USA, Japan, Mexico, Canada
 153and a few others.
 154
 155When you talk about PAL, you usually mean: CCIR - B/G using the PAL
 156colorsystem which is used in many Countries.
 157
 158When you talk about SECAM, you mean: CCIR - L using the SECAM Colorsystem
 159which is used in France, and a few others.
 160
 161There the other version of SECAM, CCIR - D/K is used in Bulgaria, China,
 162Slovakai, Hungary, Korea (Rep.), Poland, Rumania and a others.
 163
 164The CCIR - H uses the PAL colorsystem (sometimes SECAM) and is used in
 165Egypt, Libya, Sri Lanka, Syrain Arab. Rep.
 166
 167The CCIR - I uses the PAL colorsystem, and is used in Great Britain, Hong Kong,
 168Ireland, Nigeria, South Africa.
 169
 170The CCIR - N uses the PAL colorsystem and PAL frame size but the NTSC framerate,
 171and is used in Argentinia, Uruguay, an a few others
 172
 173We do not talk about how the audio is broadcast !
 174
 175A rather good sites about the TV standards are:
 176http://www.sony.jp/support/
 177http://info.electronicwerkstatt.de/bereiche/fernsehtechnik/frequenzen_und_normen/Fernsehnormen/
 178and http://www.cabl.com/restaurant/channel.html
 179
 180Other weird things around: NTSC 4.43 is a modificated NTSC, which is mainly
 181used in PAL VCR's that are able to play back NTSC. PAL 60 seems to be the same
 182as NTSC 4.43 . The Datasheets also talk about NTSC 44, It seems as if it would
 183be the same as NTSC 4.43.
 184NTSC Combs seems to be a decoder mode where the decoder uses a comb filter
 185to split coma and luma instead of a Delay line.
 186
 187But I did not defiantly find out what NTSC Comb is.
 188
 189Philips saa7111 TV decoder
 190was introduced in 1997, is used in the BUZ and
 191can handle: PAL B/G/H/I, PAL N, PAL M, NTSC M, NTSC N, NTSC 4.43 and SECAM
 192
 193Philips saa7110a TV decoder
 194was introduced in 1995, is used in the Pinnacle/Miro DC10(new), DC10+ and
 195can handle: PAL B/G, NTSC M and SECAM
 196
 197Philips saa7114 TV decoder
 198was introduced in 2000, is used in the LML33R10 and
 199can handle: PAL B/G/D/H/I/N, PAL N, PAL M, NTSC M, NTSC 4.43 and SECAM
 200
 201Brooktree bt819 TV decoder
 202was introduced in 1996, and is used in the LML33 and
 203can handle: PAL B/D/G/H/I, NTSC M
 204
 205Micronas vpx3220a TV decoder
 206was introduced in 1996, is used in the DC30 and DC30+ and
 207can handle: PAL B/G/H/I, PAL N, PAL M, NTSC M, NTSC 44, PAL 60, SECAM,NTSC Comb
 208
 209Samsung ks0127 TV decoder
 210is used in the AVS6EYES card and
 211can handle: NTSC-M/N/44, PAL-M/N/B/G/H/I/D/K/L and SECAM
 212
 213===========================
 214
 2151.2 What the TV encoder can do an what not
 216
 217The TV encoder are doing the "same" as the decoder, but in the oder direction.
 218You feed them digital data and the generate a Composite or SVHS signal.
 219For information about the colorsystems and TV norm take a look in the
 220TV decoder section.
 221
 222Philips saa7185 TV Encoder
 223was introduced in 1996, is used in the BUZ
 224can generate: PAL B/G, NTSC M
 225
 226Brooktree bt856 TV Encoder
 227was introduced in 1994, is used in the LML33
 228can generate: PAL B/D/G/H/I/N, PAL M, NTSC M, PAL-N (Argentina)
 229
 230Analog Devices adv7170 TV Encoder
 231was introduced in 2000, is used in the LML300R10
 232can generate: PAL B/D/G/H/I/N, PAL M, NTSC M, PAL 60
 233
 234Analog Devices adv7175 TV Encoder
 235was introduced in 1996, is used in the DC10, DC10+, DC10 old, DC30, DC30+
 236can generate: PAL B/D/G/H/I/N, PAL M, NTSC M
 237
 238ITT mse3000 TV encoder
 239was introduced in 1991, is used in the DC10 old
 240can generate: PAL , NTSC , SECAM
 241
 242Conexant bt866 TV encoder
 243is used in AVS6EYES, and
 244can generate: NTSC/PAL, PAL­M, PAL­N
 245
 246The adv717x, should be able to produce PAL N. But you find nothing PAL N
 247specific in the registers. Seem that you have to reuse a other standard
 248to generate PAL N, maybe it would work if you use the PAL M settings.
 249
 250==========================
 251
 2522. How do I get this damn thing to work
 253
 254Load zr36067.o. If it can't autodetect your card, use the card=X insmod
 255option with X being the card number as given in the previous section.
 256To have more than one card, use card=X1[,X2[,X3,[X4[..]]]]
 257
 258To automate this, add the following to your /etc/modprobe.d/zoran.conf:
 259
 260options zr36067 card=X1[,X2[,X3[,X4[..]]]]
 261alias char-major-81-0 zr36067
 262
 263One thing to keep in mind is that this doesn't load zr36067.o itself yet. It
 264just automates loading. If you start using xawtv, the device won't load on
 265some systems, since you're trying to load modules as a user, which is not
 266allowed ("permission denied"). A quick workaround is to add 'Load "v4l"' to
 267XF86Config-4 when you use X by default, or to run 'v4l-conf -c <device>' in
 268one of your startup scripts (normally rc.local) if you don't use X. Both
 269make sure that the modules are loaded on startup, under the root account.
 270
 271===========================
 272
 2733. 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
 277Experience tells us that people with a Buz, on average, have more problems
 278than users with a DC10+/LML33. Also, it tells us that people owning a VIA-
 279based mainboard (ktXXX, MVP3) have more problems than users with a mainboard
 280based on a different chipset. Here's some notes from Andrew Stevens:
 281--
 282Here's my experience of using LML33 and Buz on various motherboards:
 283
 284VIA MVP3
 285        Forget it. Pointless. Doesn't work.
 286Intel 430FX (Pentium 200)
 287        LML33 perfect, Buz tolerable (3 or 4 frames dropped per movie)
 288Intel 440BX (early stepping)
 289        LML33 tolerable. Buz starting to get annoying (6-10 frames/hour)
 290Intel 440BX (late stepping)
 291        Buz tolerable, LML3 almost perfect (occasional single frame drops)
 292SiS735
 293        LML33 perfect, Buz tolerable.
 294VIA KT133(*)
 295        LML33 starting to get annoying, Buz poor enough that I have up.
 296
 297Both 440BX boards were dual CPU versions.
 298--
 299Bernhard Praschinger later added:
 300--
 301AMD 751
 302        Buz perfect-tolerable
 303AMD 760
 304        Buz perfect-tolerable
 305--
 306In general, people on the user mailinglist won't give you much of a chance
 307if you have a VIA-based motherboard. They may be cheap, but sometimes, you'd
 308rather want to spend some more money on better boards. In general, VIA
 309mainboard's IDE/PCI performance will also suck badly compared to others.
 310You'll noticed the DC10+/DC30+ aren't mentioned anywhere in the overview.
 311Basically, you can assume that if the Buz works, the LML33 will work too. If
 312the LML33 works, the DC10+/DC30+ will work too. They're most tolerant to
 313different mainboard chipsets from all of the supported cards.
 314
 315If you experience timeouts during capture, buy a better mainboard or lower
 316the quality/buffersize during capture (see 'Concerning buffer sizes, quality,
 317output size etc.'). If it hangs, there's little we can do as of now. Check
 318your IRQs and make sure the card has its own interrupts.
 319
 320===========================
 321
 3224. Programming interface
 323
 324This driver conforms to video4linux2. Support for V4L1 and for the custom
 325zoran ioctls has been removed in kernel 2.6.38.
 326
 327For programming example, please, look at lavrec.c and lavplay.c code in
 328the MJPEG-tools (http://mjpeg.sf.net/).
 329
 330Additional 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
 338   square pixel format.
 339
 340===========================
 341
 3425. Applications
 343
 344Applications known to work with this driver:
 345
 346TV viewing:
 347* xawtv
 348* kwintv
 349* probably any TV application that supports video4linux or video4linux2.
 350
 351MJPEG capture/playback:
 352* mjpegtools/lavtools (or Linux Video Studio)
 353* gstreamer
 354* mplayer
 355
 356General raw capture:
 357* xawtv
 358* gstreamer
 359* probably any application that supports video4linux or video4linux2
 360
 361Video editing:
 362* Cinelerra
 363* MainActor
 364* mjpegtools (or Linux Video Studio)
 365
 366===========================
 367
 3686. Concerning buffer sizes, quality, output size etc.
 369
 370The zr36060 can do 1:2 JPEG compression. This is really the theoretical
 371maximum that the chipset can reach. The driver can, however, limit compression
 372to a maximum (size) of 1:4. The reason for this is that some cards (e.g. Buz)
 373can't handle 1:2 compression without stopping capture after only a few minutes.
 374With 1:4, it'll mostly work. If you have a Buz, use 'low_bitrate=1' to go into
 3751:4 max. compression mode.
 376
 377100% 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
 379fields are 720x288x16/2 bits/field (2 fields/frame) = 207360 bytes/field x 2 =
 380414720 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
 3821:2 compression. For 1:4 compression, you'd have frames of half this size.
 383
 384Some additional explanation by Martin Samuelsson, which also explains the
 385importance 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
 394I woke up, and can't go to sleep again. I'll kill some time explaining why
 395this doesn't look strange to me.
 396
 397Let's do some math using a width of 704 pixels. I'm not sure whether the Buz
 398actually use that number or not, but that's not too important right now.
 399
 400704x288 pixels, one field, is 202752 pixels. Divided by 64 pixels per block;
 4013168 blocks per field. Each pixel consist of two bytes; 128 bytes per block;
 4021024 bits per block. 100% in the new driver mean 1:2 compression; the maximum
 403output becomes 512 bits per block. Actually 510, but 512 is simpler to use
 404for calculations.
 405
 406Let's say that we specify d1q50. We thus want 256 bits per block; times 3168
 407becomes 811008 bits; 101376 bytes per field. We're talking raw bits and bytes
 408here, so we don't need to do any fancy corrections for bits-per-pixel or such
 409things. 101376 bytes per field.
 410
 411d1 video contains two fields per frame. Those sum up to 202752 bytes per
 412frame, and one of those frames goes into each buffer.
 413
 414But wait a second! -b128 gives 128kB buffers! It's not possible to cram
 415202752 bytes of JPEG data into 128kB!
 416
 417This is what the driver notice and automatically compensate for in your
 418examples. Let's do some math using this information:
 419
 420128kB is 131072 bytes. In this buffer, we want to store two fields, which
 421leaves 65536 bytes for each field. Using 3168 blocks per field, we get
 42220.68686868... available bytes per block; 165 bits. We can't allow the
 423request for 256 bits per block when there's only 165 bits available! The -q50
 424option is silently overridden, and the -b128 option takes precedence, leaving
 425us with the equivalence of -q32.
 426
 427This gives us a data rate of 165 bits per block, which, times 3168, sums up
 428to 65340 bytes per field, out of the allowed 65536. The current driver has
 429another level of rate limiting; it won't accept -q values that fill more than
 4306/8 of the specified buffers. (I'm not sure why. "Playing it safe" seem to be
 431a safe bet. Personally, I think I would have lowered requested-bits-per-block
 432by one, or something like that.) We can't use 165 bits per block, but have to
 433lower it again, to 6/8 of the available buffer space: We end up with 124 bits
 434per block, the equivalence of -q24. With 128kB buffers, you can't use greater
 435than -q24 at -d1. (And PAL, and 704 pixels width...)
 436
 437The third example is limited to -q24 through the same process. The second
 438example, using very similar calculations, is limited to -q48. The only
 439example that actually grab at the specified -q value is the last one, which
 440is clearly visible, looking at the file size.
 441--
 442
 443Conclusion: the quality of the resulting movie depends on buffer size, quality,
 444whether or not you use 'low_bitrate=1' as insmod option for the zr36060.c
 445module to do 1:4 instead of 1:2 compression, etc.
 446
 447If you experience timeouts, lowering the quality/buffersize or using
 448'low_bitrate=1 as insmod option for zr36060.o might actually help, as is
 449proven by the Buz.
 450
 451===========================
 452
 4537. It hangs/crashes/fails/whatevers! Help!
 454
 455Make sure that the card has its own interrupts (see /proc/interrupts), check
 456the output of dmesg at high verbosity (load zr36067.o with debug=2,
 457load 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
 459notes given in question 3 and try lowering quality/buffersize/capturesize
 460if recording fails after a period of time.
 461
 462If all this doesn't help, give a clear description of the problem including
 463detailed hardware information (memory+brand, mainboard+chipset+brand, which
 464MJPEG card, processor, other PCI cards that might be of interest), give the
 465system PnP information (/proc/interrupts, /proc/dma, /proc/devices), and give
 466the kernel version, driver version, glibc version, gcc version and any other
 467information that might possibly be of interest. Also provide the dmesg output
 468at high verbosity. See 'Contacting' on how to contact the developers.
 469
 470===========================
 471
 4728. Maintainers/Contacting
 473
 474The driver is currently maintained by Laurent Pinchart and Ronald Bultje
 475(<laurent.pinchart@skynet.be> and <rbultje@ronald.bitfreak.net>). For bug
 476reports or questions, please contact the mailinglist instead of the developers
 477individually. For user questions (i.e. bug reports or how-to questions), send
 478an email to <mjpeg-users@lists.sf.net>, for developers (i.e. if you want to
 479help programming), send an email to <mjpeg-developer@lists.sf.net>. See
 480http://www.sf.net/projects/mjpeg/ for subscription information.
 481
 482For bug reports, be sure to include all the information as described in
 483the section 'It hangs/crashes/fails/whatevers! Help!'. Please make sure
 484you're using the latest version (http://mjpeg.sf.net/driver-zoran/).
 485
 486Previous 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
 4929. License
 493
 494This 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
 510See http://www.gnu.org/ for more information.
 511
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.