I love it when the planets align…
So, for the last few days I’ve been working on a new plugin for IFX’s Piranha, that allows for Deck Control of 1394 devices (ie, MiniDV Cameras). I wasn’t sure exactly what I was in for when I offered to do it, but, really how hard could it be?
This was the same mentality that got me in trouble when I offered to do the FFmpeg plugin for them back in November. Its still not what I would call finished. But it works. Sometimes that is the best you can hope for.
Anyway, so, I start digging around looking for some libraries to use. I knew there was kernel modules for dv1394, raw1394, video1394, etc, etc. Libdv, libavc1394, libraw1394, the lists go on.
To make a long story short, imagine my surprise when I read that module dv1394 creates a device on /dev/dv1394/* that mimics a DV file. You read from it just like you would from a RAW DV file, and guess what.. it works. That little discovery led me to yesterdays ffmpeg time-lapse goodie.
So, today, time to implement that into Piranha. Lucky me, I had done some DV tests with the FFmpeg plugin, and I knew that it worked better than most. So, I copied over some of my code from that project, and plugged it in. Within about 2 hours, it was working. Slicker than snot on a hot skillet.
The plugin is a bit heavier than I’d like, given that it relies on libraw1394, libavc1394 (for deck control), and libavutil, libavcodec, libavformat for DV decoding. The upside is that, in theory, this same plugin should be usable for HDV, DVCPRO-50, and DVCPROHD footage (basically any format the FFmpeg supports, over ieee1394), once they are all available in FFmpeg (DVCPROHD is pending approval). I think this is a worthy tradeoff.
I still have a little more work to do to capture audio, but the bulk of the work is done.