Towards GStreamer 0.9
16 Aug 2005 » permalink
Thanks to Edward I got interested in what the GStreamer guys are cooking for the next release. After some some chattering on #gstreamer I got seduced into checking out gstreamer 0.9 CVS. The new API & features are very interesting and I decided to port my DIVA stuff to 0.9. Actually — “redesign to 0.9” would be a better word.
Unfortunately the 0.9 implementation is still somewhat incomplete and buggy (it’s “development” right?), and I've got a hard time here trying to achieve the same functionality I managed to get with 0.8 (using a lot of dirty tricks though). But on the other hand — there is no sense in writing for 0.8 since the new API is very video-editing friendly and more complicated GST elements can be written. Oh — and you don’t have to deal with threads on your own anymore…
I got an interesting e-mail from Alan Clontz, who proposes to use AviSynth as the video backend instead of reinventing the wheel. It’s an interesting idea but I'd rather stick to plain GStreamer. There are several reasons for this:
- Portability. Avisynth might run on Linux, but will it run on BSD/Solaris?
- Hardware bindings. The whole processing pipeline has to be modularized/scalable enough to allow easy integration of hardware devices (think: all the DV cards that decompress to screen/video output). Although we don’t have much kernel/GStreamer provisions for this now, it will hopefully be availible in future.
- We need a common interface to manipulate the properties of all the filters, effects, etc. GStreamer GObject-based elements are pretty interesting here. Even though (again) it’s still somewhat hard (now) to manipulate the properties over time.
- Hacking on AviSynth might be pretty hard as (AFAIK) a lot of stuff is written in assembler. That’s true at least for VirtualDub filters.
Some not-so-impressive screenshots of the stuff I've been dealing with lately:
In other news I've released a fresh version of Monotheka. Shamefully this release consists mostly of the patches/code other people sent me.