[Rhythmbox-devel] Plugin can now add to the GStreamer pipeline in Trunk



Hi everyone,

I've just committed a patch to SVN trunk which allows plugins to add
elements to the GStreamer pipeline. This allows you to put filters in
the pipeline to alter audio (e.g. the equaliser at [0]), or get a copy
of the audio to do stuff with (e.g. send over the network).


[0] http://bugzilla.gnome.org/show_bug.cgi?id=76522


Details for anyone who wants to use this to do things
=====================================================

There are three new interfaces that RBPlayer backends can implement,
RBPlayerGstTee, RBPlayerGstFilter and RBPlayerGstDataTee - the
RBPlayerGst backend currently implements the first two, and will
probably implement the third in the future.


Each of the interfaces adds two function, e.g. rb_player_gst_tee_add_tee
and rb_player_gst_tee_add_tee. You just pass the element you want to add
to these, if you need to add linked elements, put them in a GstBin
first.


Some sample code (in python), for a poor-mans visualisation:

goom = gst.element_factory_make ("goom")
sink = gst.element_factory_make ("ximagesink")
colour = gst.element_factory_make ("ffmpegcolorspace")

b = gst.Bin()
b.add (goom, colour, sink)
goom.link(colour)
colour.link(sink)
b.add_pad(gst.GhostPad("sink", goom.get_pad("sink")))
shell.get_player().props.player.add_tee_element(b)




If anyone has any questions, issues, or cool idea of what we could use
this for, please let us know.


Cheers,

James "Doc" Livingston
-- 
"Some people think that noise abatement should be a higher priority for
ATC. I say safety is noise abatement. You have no idea how much noise it
makes to have a 737 fall out of the sky after an accident."
    -- anon. air traffic controller



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]