New driver available! The driver presented here was designed to work with Linux kernel versions 2.2.x and 2.4.x. It is based on old kernel infrastructure and now the development of this driver is stopped. For those who is going to use DC10plus, LML33 and Iomega Buz cards, I suggest to use a new driver.
Supported hardware. This is a driver for DC10plus capture cards from Pinnacle Systems Inc., LML33 cards from Linux Media Labs and Buz from Iomega Corporation. It also works with many old Miro DC10 cards with SAA7110A TV decoder and ADV7176 TV encoder. Please, make sure that your DC10 card has these chips, otherwise the driver will not work. If you have a different (DC30-like card), please, try a new driver instead.
Support for LML33 card was added in the driver version 0.6, thanks to Vassilii Leonov from Linux Media Labs who had sent me a free sample of their product. Wolfgang Scherr, who was the first maintainer of this driver, introduced support for Iomega Buz cards in version 0.7.
The driver is Video4Linux compliant and contains extensions to provide a full motion MJPEG compression and decompression in hardware using Zoran chipset features. Since this driver initially was a derivative from the driver for Buz Iomega cards written by Dr. Rainer Johanni, http://www.johanni.de/munich-vision/buz/, they both have compatible API.
Since version 0.5 the driver compiles and works with 2.2.x and 2.4.x kernels. (I used 2.2.14, 2.2.16 and 2.4.0-test6 kernels for testing). Please, be aware that some Linux distributors supply modified kernels with their distributions and with such kernels the driver compilation may fail. Unfortunately, I don't have time and other resources to keep the driver compatible with every Linux distribution, therefore, only official Linux kernels from www.kernel.org and its mirrors will be supported.
Please, send questions and/or opinions to Serguei Miridonov <mirsev@cicese.mx>.
LML33 and Buz:
The JPEG compression ratio is adjustable,
so the data rate can be varied from 11 MBytes/s down to 1-2 MBytes/s depending
on the required image quality.
On one test run I've got 0 frames dropped during about 20 minutes of full motion NTSC (I live in Mexico) video capture with fully synchronized audio. The command was
lavrec -fa -in -d1 -l -1 -q30 -w /dos/g/capture/Linux/test%03d.avi
for recording, and
lavplay -n128 /dos/g/capture/Linux/test*.avi
for playback. (See lavtools distribution for more information).
Typical run of similar test can provide as few
as 6-8 dropped frames per half of an hour. You mileage may vary, though.
Since v0.4 the driver can be used by two applications at the same time: you can use tool like XawTV to watch the movie during recording or playing it back by lavtools: screenshot 1 shows the recording of SECAM video from a VCR using lavrec, and screenshot 2 shows the playing it back as PAL movie using xlav utility from lavtools. It might be a good feature but be careful, read warning note in README file regarding this new capability.
- XawTV, to watch video on your computer monitor;
- kwintv, the same;
- lavtools, to record and playback AVI or Quicktime files;
- Broadcast2000 reportedly (I didn't try that) can accept movies recorded by lavrec in Quicktime format for editing and then edited movie can be played back by lavplay program.
- MainActor 3.5x also can accept movies in AVI format recorded by lavrec for editing.
Copyright: This driver is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License.
No warranty: This driver is provided on AN "AS-IS" basis WITHOUT WARRANTY OF ANY KIND. YOU USE IT AT YOUR OWN RISK.
To download the latest version of this driver from CVS tree at mjpeg.sourceforge.net,
click here. For compilation
and installation instructions, please, read file README
(It is also included in the downloaded TAR archive). If you experience
some problems with the newest driver from CVS, please, try version
0.8 instead. However, be aware, this branch is not maintained any more
and it will not compile with Linux kernels later 2.4.5.
To work on this driver successfully, I need your feedback. Please, send me the portion of your log file which is related to driver loading and operation. Also I would appreciate if you send me your opinions and suggestions. Thank you.
Enjoy!
Known bugs: the driver does not always work properly with cards which have an older ZR36057 PCI interface chip instead of newer ZR36067. Typical symptom of this bug is that MJPEG compressed capture works only once with full image size and then the driver must be reloaded to get it working again. If you have this chip on your card, please, read file README, section Bug Reports and send me a message even if you can not reproduce this bug: I need more information about which hardware configurations may trigger this bug. I would also appreciate if you find a solution for this problem.
On October 17, 2000, I have received a patch from Brian Flachs <flachs@umunhum.stanford.edu> which tries to fix this problem with older ZR36057 chips. The patch is available here. It must be applied against version 0.6 of the driver. However, please, be aware that this patch may not always work and it can make the driver to operate improperly in some circumstances.
Those who used to run latest CVS driver before April 14 will not notice a difference, just the version change. This version is tagged as release-0-8 at sourceforge CVS driver-zoran tree.
- SECAM support for Iomega Buz cards,
- solved compilation problems with 2.4.3 kernels.
The second one has more changes:
This version is under CVS now and can be downloaded from mjpeg.sourceforge.net using CVS or as a tarball from here.
- FIFO threshold for MJPEG compression mode in Iomega Buz cards has been changed from 140 to 60. According to reports in MJPEG mailing list, it should reduce the number of lost frames during capture.
- Another attempt was undertaken to solve problem with ZR36057 chip (see "Known bugs" section above). So, please, test this version if you have the DC10 card with this chip and experience this problem.
- The source code of zoran.c has been changed to simplify the transition to the new I2C subsystem, though it has not been done yet.
- Some initialization stuff was removed (commented out, so far) because it was duplicated after using memset.
- And, some minor bug fixes...
Last minute note from Wolfgang Scherr: if the downloaded driver v0.3 still doesn't work on your system, try the following patch:
--- buz.c Fri Jun 9 07:21:22 2000 +++ buz-new.c Fri Jun 9 12:06:26 2000 @@ -3540,6 +3540,7 @@ /* video bus enabled */ GPIO(btv, 2, 0); + mdelay(1); GPIO(btv, 1, 0); /* display codec revision */This patch will be included in the next version.
So, I would suggest to subscribe to the mjpeg-users mailing list and post there the description of your problems. Please make sure that your message contains distinct reference to DC10/DC10plus card to avoid any confusion with similar driver for Buz cards. For the time being the drivers are different, later we will try to merge both versions into a single ZR36060/57/67 driver. Also, please include lines of your log file related to the driver loading and operation. It will help to determine the configuration of your system.
If you have a success with a driver, I would like to know your configuration too, so please, mail me your experience with the driver and tools.
Be prepared, it may or may not work on your system but please try it and send me your results. For compilation, installation and usage, read the remaining part of this page. Also, please take a look at Wolfgang Scherr page for new patched lavtools package.
Special note for Windows NT/2000 users: This is an open source driver and you may use it as a core to write a driver for Windows NT/2000. You will need to check for Linux kernel internals dealing with interrupts, DMA, i2c bus, memory allocation, driver API, etc. in order to make appropriate changes for different operating system. It is not too hard I believe, since Linux kernel source is always available. Good luck!
Before using these utilities with DC10plus board and this driver, I would recommend to read installation and usage instructions supplied with these tools. Please note, however, that DC10plus card supports only square pixel format. In contrast, the majority of TV related programs operate by default in ITU-R.601 recommended format which is different. The basic image size for DC10plus card is 640x480 (NTSC) and 768x576 (PAL) when both TV fields are captured at full resolution. Resolutions 320x240 (NTSC) and 384x288 (PAL) are also supported. So, to run the tools mentioned above successfully with this driver you will need to do some additional work:
xawtv, to work in NTSC standard, can be started with an additional option '-geometry 640x480' or '-geometry 320x240'. Accordingly, for PAL standard, set xawtv geometry to 768x576 or 384x288. Instead of running xawtv with additional options, you may add the following line to your .Xdefaults file:Xawtv*geometry: <put appropriate format here>In fact, if you run xawtv program with wrong image size, probably, it will scale the TV image accordingly. However, I could not run xawtv in full screen mode. Instead, you can run it in window mode and then adjust the resolution mode of X server using Ctrl-Alt-'+' or Ctrl-Alt-'-' hot keys (see XFree server manual page for instructions).Unfortunately, I had experienced some problems with xawtv regarding its interaction with the driver. I believe that this is not a driver issue, so probably some work should be done to xawtv source. Just in case you have similar problems, read this: If you run xawtv program and see nothing but black window on your screen, click on this window with right mouse button and change TV standard to proper one using pull down menu. If nothing happens, quit or kill xawtv, turn off your TV source or disconnect it from the DC10plus board and try to run xawtv again. Then, while the TV source is still disconnected, try to set proper TV standard and then turn the TV source on, or connect it to DC10plus board. Now the TV image should appear on the screen.
lavtools, in order to work with DC10plus board, must be patched to operate correctly in square pixel format. The patched version can be found here.
I used to run the evaluation version of commercial MainActor non-linear video editing software with this driver. However, MainActor at this time does not support hardware compression API, so to capture full motion video, I would still recommend to use lavrec utility from lavtools package. The resulting AVI files can be successfully processed by MainActor.
I did not try yet to run very nice free Broadcast
2000 video editing software with this driver. Currently, this program
also does not support MJPEG codec API for Video4Linux compliant drivers.
However, since the program is distributed with its source, you may think
of modifying it using lavtools as an example to take advantage of hardware
compression. Good luck!
Multisystem PAL/NTSC capability: Pinnacle Systems Inc. insists that DC10plus cards sold in USA are for NTSC only and the cards sold in Europe and Australia are both PAL and NTSC... Well, I can not tell for every card sold in USA but at least one of them (guess which one? ;-) supports both PAL and NTSC, however, the drivers for Windows 95/98 supplied in the box, and then upgraded to version 1.05, support NTSC only. Current Linux driver supports both PAL and NTSC standards.
Pinnacle Systems Inc. does not release neither Windows driver source code, nor the card programming specifications. This makes writing the driver a bit difficult and that's why some features are not yet supported. Luckily, complete information is available about chipsets used in this card:
Copyright © Serguei Miridonov, 2000. You may redistribute this document as long as you keep it in its current form, without any modifications. Please keep it updated if you decide to place it on a publicly accessible server.
This page is intended for information purposes only, it may contain errors, or inaccurate material. Author of this page will not be held responsible for any damage -- direct or indirect -- which may result from inaccuracies.
All statements about businesses and/or corporations and/or everything else are being offered as opinions of the author of this page only. CICESE as a service provider is not responsible for the information presented on this page.
All trademarks and trade names used on this page are the
properties of their respective owners.