Last update on : Mon Nov 27 17:38:33 PST 2006

VLC dc1394 input module on Linux

LAST UPDATES

This module is now included in the vlc mainstream distribution since 0.8.6.
I will not maintain this page anymore.
Refer to the vlc website and mailinglists if you want to track changes or if you need support or customizations.


UPDATES OF 2006/10/11:


UPDATES OF 2005/12/18:


UPDATES OF 2005/04/07:


The story begins

I integrated vlc as a streaming solution in a work-related project. One requirement of that project was to use some firewire digital cameras as input devices (apple iSight), and I found soon that vlc (on Linux) lacks support for such devices (it supports v4l interface and v4l doesn't support those cameras. v4l2 does, but it is still unstable and not supported by vlc). Many userspace programs support firewire digital cameras via libdc1394 and libraw1394, and they seem to work very well. Even ffmpeg supports firewire cameras using both dv1394 and dc1394 interfaces (via libavformat). dv1394 is for another kind of video devices (DV camcorders), so it is not good for my iSight digital camera ... libdc1394 was what I needed. I then decided to write down a vlc access module using libavformat routines to access the camera and grab video, but ffmpeg didn't work when using dc1394 interface ... it gave me floating point exceptions while going to death :/ ... (it seems that with dv1394 interface it works very well....but I didn't need that feature) I tried out other userspace programs that were using that library, and they all worked well... so I assumed that ffmpeg dc1394 implementation was buggy and that I had to write the access module directly linking libdc1394. In my documentation research I found out a little tool to grab video frames using libdc1394 and printout them on standard output to be used with ffmpeg (piping stdout and stdin)... and it worked very well. You can find this tool (and some other useful infos on this subject) on "http://www.rmatsumoto.org/camera/dc1394-ohphone.html" I then decided to use that tool as basecode to implement the vlc access module, and as result it is now perfectly working on my videoservers with isight cameras.

The module

Actually this access module can grab only video from a firewire device ( so you can't use the isight microphone =/ ), but you can still use another audio device (for example /dev/dsp or /dev/audio) to obtain audio data and mux them with video coming from the dc1394 camera.
At this time vlc lacks support for uyv444 chroma conversion , used by libdc1394 when grabbing at a video size of 160x120, so I temporarily disabled the use of this video mode until uyv444 support is implemented.
I based my work on vlc-0.8.1 release even if it should work well on future releases if module API remains unchanged. Actually vlc-0.8.4a is the last supported version (patch for 0.8.4a should work correctly also on 0.8.4) You can download vlc-0.8.4a codebase Here or directly on videolan homepage . My patch can be downloaded Here but if you want you can also download an already patched source base Here . configure.ac and Modules.am have been modified to let module compile correctly and "configure" script is also patched so you have not to exec "bootstrap". If needed, an already compiled shared object is available Here , it works for sure on debian unstable (2005/12/18) but probably can work correctly on other distributions (just check for library dependencies).All you have to do is to download and copy it in your vlc access library dir (usually /usr/lib/vlc/access on debian installations) and it should be loaded by vlc on run-time when 'dc1394:' MRL is used as input (look below in the Usage section).

Installation

Usage

Examples

Files

Summary of downloadable files


If you have any question just ask me.
Andrea Guzzo (xant) <xant@xant.net>

if you like visuals, have a look to vanilla's website at http://www.movietown.it