[gst-devel] Proper way to handle source devices which can only be opened once?

Eric Jonas jonas at MIT.EDU
Wed Dec 7 17:21:01 CET 2005

So I've been working on a video source element to get IIDC firewire
video sources to work in gstreamer. It works, at the moment, for
single-cameras. This is largely due to the people in #gstreamer who
have been amazingly helpful.

However, for my application I need to be able to read off of one
high-speed scientific imaging camera and then a few iSights,
simultaneously. The problem is that the library I'm using, dc1394,
requires that you explicitly use multi-camera functions if you want to
do this, in-process our out of process. Basically: 

1. only one program can ever try and talk to these firewire cameras at

2. if you want to talk to more than one camera -within- your
program, you need to use special functions.

Sadly, this means that you can't just create two of my dc1394src
elements in your app, point them to different camera numbers, and go.

This means that I'll need to modify dc1394src to either have
inter-element coordination, or create a single dc1394src element that
would dynamically create a pad for each of N cameras.

The former sounds like a threading nightmare, but the latter sounds
like I'll have to abandon the very nice GstPushSrc, which has made my
life much easier.

Since I plan on trying to get this into plugins-good at somepoint in
the future, I figured I'd ask for everyones advice on this. Are there
any other source elements which have this sort of behavior that would
be good examples to follow?

Thanks, and congrats again on 0.10! 

More information about the gstreamer-devel mailing list