[gst-devel] Re: libvisual / GStreamer

Benjamin Otte in7y118 at public.uni-hamburg.de
Thu May 13 04:06:02 CEST 2004


(cc'ing gst-devel to get some more opinions)

On Thu, 13 May 2004, Dennis Smit wrote:

> Regarding the on irc libvisual does a lot comment. It does indeed
> a lot, i want it to be really really easy for application developers
> to include visualisation support, and i don't want them to need ANY
> clue at all about gfx coding, i want libvisual to be VERY easy to use
> yet powerful, so there is both api to do things very simple and quickly
> and to have full control.
>
I've been thinking about what approach to take with wrapping a bit since
yesterday.

For the rest:
Libvisual takes audio data and produces data in the desired format using
any visualization plugin it supports (or combinations thereof). This is
done by having 3 types of plugins: input (for getting audio data), actors
(the visualizations) and video (for doing transforms of the video, like
colorspace transforms, centering, fading from one visualization to
another...)
The point here is that GStreamer does input and video plugins itself
(colorspace and audio input are certainly far better in gst than in
libvisual), so I've just wrapped the actors, since it's all that we need.
But it might be quite a bit more complicated to do some things, like setup
a smooth transform from one visualization to another (you'd need to setup
the pipeline yourself where you do this - would look something like audio
! tee ! vis1 ! colorspace ! merge  tee0. ! vis2 ! colorspace ! merge0. )
which is apparently not just as easy as calling 2 functions or so on
libvisual.
OTOH libvisual builds pipelines internally so all it does is really
nothing more than could be done by writing a special visualization element
for GStreamer.

Maybe it's an idea to do 2 things: a) wrap the actors and b) wrap the
whole libvisual thing, so you can chose between fine-grained control and
just using the big blob.
I'm not sure really. It would have been much easier had you just written a
fancy GSTreamer element in the first place ;)

Benjamin





More information about the gstreamer-devel mailing list