[gst-devel] Syncronising multiple pipelines

izak marais izakmarais at yahoo.com
Thu Nov 3 03:33:31 CET 2005


I'm using python gstreamer 0.8.9 in an interactive
(pitch-tracking) kareoke app I'm writing. At the
moment I have two pipelines: one for playing the .wav
file in the background (basically: filesrc ! alsasink)
and one for tracking the pitch from the mic (alsasrc !

My sink plugin determines the pitch of the voice
singing into the mic and sets the most recent pitch as
a property for the app to get. The plugin currently
has no clocking capablities. How time sync currently
"works" (it doens't) is that I iterate the two
pipelines alternatly in a single python thread. After
each set of iterations, I call get_time() on the
alsasink in the filesrc pipeline, get the pitch
property from the other pipeline and send the
resulting (time, pitch) pair on to my app for
displaying in the wxPython GUI.

What I want to do is syncronise these pipelines (or
combine them into a single pipeline, if such a thing
is possible) so that when the wav file starts playing,
the mic starts delivering data and everything has the
same clock and is syncronised. I would also like to do
away with "manual" iteration and use a gst thread, but
then I would need some mecanism to post the (time,
pitch) events from inside the thread to my GUI.

How do I share a single clock between two pipelines?
How do I post events from inside a gstreamer plugin
that python can catch? Is there a better way of
setting this up?

Izak Marais

Yahoo! FareChase: Search multiple travel sites in one click.

More information about the gstreamer-devel mailing list