The current official release of the driver
, released on September 26, 2011
by Christopher R. Baker
After more than a year of wrestling with the nuances of Microsoft's 64-bit operating systems, and with no
small quantity of assistance from a few brave testers (you know who you are!), I am proud to officially release
this next version of the CMU 1394 Digital Camera Driver, which includes:
- Support for all present 64-bit versions of Microsoft Windows XP, Vista and 7, allowing both native
(64-bit) and emulated (32-bit) applications to access camera data via a single driver interface.
- A completely new demo application, written from the ground up to support both 32-bit and 64-bit Windows.
- A litany of bugfixes, many of which were contributed by individual users (for which I am grateful!), including:
- Squashment of the nefarious BSOD on resume-from-suspend bug
- A closer-to-correct implementation of the Serial I/O functionality described in the IIDC 1.31
standard (closer = still a little quirky, but the quirks may be in the camera I am testing with)
- Verified Strobe and Parallel I/O functionality (Strobe controls are also now integrated into the same
dialog as Gain, Zoom, Focus, etc.)
- .. and many others
- New since the public beta:
- Fully automated driver installation on 64-bit systems
- Several minor bugfixes and documentation updates, but nothing that alters the API/ABI
Update: digital signatures for all kernel-mode software
All 64-bit versions of windows require a digital signature via an
certificate in order to run kernel-mode software.
I would like to thank MathWorks
for providing the funding for this certificate and allowing
this driver set to continue to be published freely to the general public. MathWorks provides an adapter to the CMU 1394 Digital Camera
driver as part of their Image Acquisition Toolkit
to allow developers quick and easy
access to images from firewire cameras within the MATLAB
Known issues and limitations
- Large-block asynchronous transfers. I have received several requests and offerance of patches
that restore the ability to issue large asychronous I/O (i.e., larger than a single quadlet/register)
requests to cameras. I am evaluating these and trying to fold them into the driver in a manner that
supports 64-bit platforms.
- Mysterious BSOD when using multiple 1394b cameras on the same bus under Windows 7. In
experimenting with various configurations of cameras, 1394b host controllers, and driver settings, I have
occasionally triggered inexplicable kernel panics while performing comparatively simple operations. Whether
this is a quirk of the new Microsoft 1394 bus driver, of some particular host controller, of the 1394 camera
driver's innards, or, most likely, of some combination thereof, remains to be seen. Using a single 1394b
camera on a single bus is quite stable, however, and the circumstances where multiple cameras trigger this
problem seem rare.
- The usual assortment of bugs and quirks. Much of the frame-handling logic had to be altered to
accommodate the curious limitations of DMA transfers on 64-bit systems. Although I have been unit-testing
this code to the greatest extent possible, my experience is that no new code is completely bug-free. My
thanks go out to the many beta testers who have helped me to this point, and further comments/questions/bug
reports/etc. are especially welcome on this front.
- using the Nullsoft Scriptable Install System
- Includes the option to automatically install the CMU driver for all presently-connected cameras
- Includes the option to install debug versions of the DLL and Demo App
- API overhaul for the 6.4 release series includes:
- Complete rework of the C1394Camera and associated class interfaces against better
Object-Oriented Design Principles (encapsulation and data-hiding).
- Migrated toward strong Model-Controller-View separation of concerns:
- Complete (if partially untested) implementation of IIDC
DCAM version 1.31, including:
- 1394b support
- Optional Functions (PIO,SIO,Strobe)
- Note: Format 6 (Stored Image) is still being ignored (does a camera even exist that supports this?).
- Behavioral Changes
- No more kernel-side frame timeouts. Previously, a frame buffer would simply
detach itself after ten seconds, causing trouble for low frame rates and/or infrequent
- OneShot and MultiShot functionality are now meaningfully exposed (see the
documentation for CAM_ACQ_START_VIDEO_STREAM for details)
- You may now stream the camera data to multiple PC's on the same 1394 bus
(see the documentation for CAM_ACQ_SUBSCRIBE_ONLY for details).
Uses Doxygen to generate 1394camera.chm, which is installed with the rest of the driver set.
We provide a free driver as well as a C++ software library for cameras that comply with the
1394 Digital Camera Specification as published by the 1394 Trade
. It is a fast, easy way to gain direct access
to camera imagery and direct control of camera features.
The advent of IEEE-1394 based digital cameras seemed to be the ideal solution for
acquiring high quality images with a regular laptop or PC. These cameras allow for both high quality images
and fast image acquisition at up to 400 mbps. When this project started in 1999, 1394 digital cameras
were just becoming commercially available. The problem at the time was a near complete lack of software
support. We chose to fill this void by writing a software driver ourselves and making it available to the
general public at no charge. The result of our efforts is a C/C++ software library (DLL) that works with any
compliant camera running on Windows 98 SE or later.
In its current incarnation, the software provides a simple interface acquiring images, the ability to
manipulate any available camera feature, and a tight, clean API. The software has been thoroughly tested
on only a few cameras (Sony DFW-V500,VL500, Pyro Webcam), but there is nothing coded specifically for these
cameras and the driver should work with any other compliant camera. The distribution also includes complete
source for a demo application (MFC) that demonstrates the functionality of the library.
We would like to thank the following people
- Iwan Ulrich: Who originally developed and freely published this driver set for the benefit of the
computer vision community. Iwan is unfortunately no longer with us. He and his wife Catherine were killed
in a severe car accident during a vacation on the West Coast on July 4, 2000. As a tribute to Iwan, we at
The Robotics Institute will continue to maintain this very popular software package.
- David Walk for lending us a camera for several months and for his support in general.
- Jerry Fife for lending us Sony cameras and for providing us with technical information
- Ben Wegbreit for funding a large part of this project.
- Mark Whitehorn for helping with the multiple camera support.
- Ruigang Yang and Greg Welch for Windows 2000 support.
- Chikayoshi Okamura for his technical support.
- Larry Klementowsky for his technical advice.
- Darlene Theriault for providing documentation.