libdc1394 Homepage

What is libdc1394?

libdc1394 is a library that provides a complete high level application programming interface (API) for developers who wish to control IEEE 1394 based cameras that conform to the 1394-based Digital Camera Specifications (also known as the IIDC or DCAM Specifications). The library is currently the only one to run on all three major platforms (Linux, Mac OSX and Windows). On Linux, both the legacy drivers (raw1394/video1394) and the new "juju" stack (firewire-ohci) are supported and auto-detected.

libdc1394 provides a complete API that includes camera detection (hotplug coming soon), broadcast commands, bus ressource management (basic), full feature controls (including absolute values), memory channels, external and software trigger, support for all video modes (including 16bit modes and 1394B modes at 800Mb/s), video capture using DMA and full Format_7 control. Moreover, libdc1394 also includes a number extras such as the support of vendor specific features for Allied Vision Technologies (AVT), Basler and PixelInk. The library also includes video conversion tools such as color space conversion (YUV, RGB, MONO, etc...) and the demosaicing of Bayer color pattern images (with 8 different algorithms and including 16bit modes). All these features in combination with the multi-platform compatibility makes libdc1394 the most versatile and performant SDK for IIDC cameras. Moreover, it's open source (license: LGPL) and it's free! Several examples are also provided to put you quickly on the right tracks.

libdc1394 works with every camera that follows the IIDC standard, which is about 500 models. Check the IEEE1394 Digital Camera List for more information.

Brief project history

  • 2000-07The libdc1394 project was started by Gord Peters in July 2000. At the time the offer of IIDC cameras was very limited but the advantages of Firewire cameras quickly brought help from other early developers such as Chris Urmson, Dan Dennedy and myself. It was the only API available that was not vendor dependent (more exist now). The project lived its little quiet life for four years, adapting to new version of the IIDC standard.
  • 2004-09: Version 1.0 released.
  • 2005-03: Work starts on version 2.0.
  • 2006-08: David Moore ports the library to Mac OSX: at last we're multiplatform!
  • 2007: First Windows port proposed.
  • 2008-01: Version 2.0 released.
  • 2012-02: Second Windows port released (uses the CMU driver as base).

News:

  • 2012-04-01: Website update.
  • 2012-03-06: Release 2.2.0, the first that runs on all three major platforms (Linux, OSX, Windows)
  • 2012-03-03: FAQ updated.
  • 2012-01-26: A Windows port is now available in the GIT repo!!
  • 2009-01-29: Support for some IIDC-over-USB cameras (currently only from Point Grey). Full Juju support at runtime.
  • 2008-01-05: A first set of fixes have been released (version 2.0.1)
  • 2008-01-05: The official version 2.0.0 has been released.
  • 2007-12-13: The long-awaited 2.0.0-rc8 is released. The migration page has been roughly updated. The description of the API is still not up-to-date.
  • 2007-08-08: A little website cleanup.
  • 2007-06-06: Release 2.0.0-RC7 is out.
  • 2007-05-30: A windows patch has been submitted. Is windows compatibility finally in sight??
  • 2007-01-21: Release 2.0.0-RC5 is out.
  • 2006-12-04: The migration guide has been synch'ed to SVN version 331.
  • 2006-08-08: Release 2.0.0-RC3 is out.
  • 2006-08-01: David Moore has translated libdc1394 to work on Mac OSX!! The code is functional but still beta at this point. Beta testers are wanted and can download the library on the Sourceforge CVS (branch "Version_2_0"). This is a nice real translation that shares the same API as the classic Linux API (IOW same header file). The code is merged within libdc1394 and the proper version (Linux/MacOSX) will be decided automatically at compilation time. So, to summarize, libdc1394 works now on two architectures: Linux and OSX. Who's making a windows port? ;-)
  • 2006-07-23: The first release candidate of 2.0.0 has just been released!
  • 2006-06-12: Work in being done in order to compile libdc1394 in OSX. Thanks to David Moore for his efforts!
  • 2006-06-10: I'm slowly updating the description of the API of version 2.

Source code:

For official releases of the source code of libdc1394 you can go to the Sourceforge website. The source code will allow to build the library on Linux, Mac OSX and Windows (the latter via the MinGW compiler). Source packages may be available for your Linux distribution, but these are not maintained by the libdc1394 team.

For bleeding edge code you can also access the project's GIT repository, also on Sourceforge. For example, to get the latest tree type:

git clone git://libdc1394.git.sourceforge.net/gitroot/libdc1394/libdc1394/

You can also read the code, make diffs, check the history, etc... via the web-based GIT interface.

Binaries:

Binaries are currently not available on Sourceforge. However, most linux distributions have libdc1394 binaries in their package management system (APT, RPM, YUM, etc...) so you should be able to get them instantly. If you intent to develop code, don't forget to get the "-dev" or "-devel" package which contains the header files, among others.

No binaries are provided for Mac OSX or Windows at this time.

Patches:

  • The EdgeSenseII algorithm being patented, it has been removed from libdc1394. However, the patent is valid only in the USA. Moreover, even in the USA it could be used for some non-commercial purposes. The following patch can therefore be applied to reinstate the EdgeSenseII code for those who are allowed to use it.

Links:

  • libdc1394 on SourceForge for sources, binaires, CVS and the mailing list.
  • The libdc1394 FAQ for v1.x and v2.x: read it first!
  • libdc1394 on Ubuntu's Launchpad page.
  • Coriander is the GUI for IIDC cameras under Linux.
  • A list of cameras which indicates, among others, which camera is IIDC compatible and therefor can be used with libdc1394 and coriander.
  • 1394 drivers wiki, where you will find information about the kernel drivers and other 'low level' stuff.
  • The 1394 Trade Associtation which edits the IIDC specifications. Note that you can't download the specs on their website. However, I have permission from the IIDC Committee to provide the IIDC/DCAM specs. Enjoy!
  • There is a nice bunch of tutorials and other informations about cameras, optics, etc... on the 1394 Imaging website.
  • The Knowledge Base of Point Grey Research is a mine of information that is not limited to users of PGR cameras.
  • The archives of the project's mailing list.

Credits:

libdc1394 was programmed and debugged by the following individuals. Let me know if your name is missing, incomplete, misspelled or should not be mentionned here.

  • Christophe Achard
  • AgBr
  • Simon Andersson
  • Peter Antoniac
  • Samuel Audet
  • Vladimir Avdonin
  • D. Bahadir
  • Matthias Barkhoff
  • Etienne Bieber
  • Argentum Brom
  • Tim Canham
  • Hugo Costelha
  • danalien
  • Damien Delannay
  • Kristoffer Delforge
  • Dan Dennedy
  • Peter De Schrijver
  • Desmond
  • Frederic Devernay
  • Damien Douxchamps
  • Daniel Drake
  • Irv Elshoff
  • David Ergo
  • Tim Evers
  • Dirk Farin
  • Chris French
  • Christoph Ganser
  • Kero van Gelder
  • Georg Glock
  • Andy Gotz
  • Martin Gramatke
  • Brant Gurganus
  • Tony Hague
  • Matthias Hanel
  • Robert Harle
  • Olaf Hering
  • Kristian Høgsberg
  • Yves Jaeger
  • Per Dalgas Jakobsen
  • Ferenc Kahlesz
  • Seemant Kulleen
  • Phil Lamoreaux
  • Joshua Lamorie
  • Aidan Lane
  • Rudi Leitgeb
  • Jason Meltzer
  • Li Ming
  • David Moore
  • Jack Morisson
  • Mark Munte
  • Don Murray
  • Audun Jan Myrhol
  • Markus Niebel
  • Obelix
  • Mikael Olenfalk
  • Robert Olsen
  • Yasutoshi Onishi
  • Thomas Passot
  • Alain Perrier
  • Gord Peters
  • Karl Regier
  • Matt Robinson
  • Diego Ruiz
  • Johann Schoonees
  • James Sherman
  • Jon Schewe
  • Stian Skjelstad
  • Fabien Spindler
  • John Stanley
  • Aravind Sundaresan
  • Toshiyuki Umeda
  • Chris Urmson
  • Thomas Woellert
  • Daniel Westhoff
  • Boris Zingerman