[gst-devel] bug?

Jorn Baayen jorn at nl.linux.org
Thu May 9 08:04:05 CEST 2002


On Thu, 2002-05-09 at 11:29, Thomas Vander Stichele wrote:
> Hey Jorn,
> 
> > I bumped into something that probably is a gstreamer bug, i cannot see
> > what might be wrong here:
> > 
> > Basic monkeymedia arch:
> > 
> > [ MonkeyMediaAudioStream              ]=>[ MonkeyMediaMixer      ]
> > [ GnomeVFSSrc ]=>[ Spider ]=>[ Volume ]=>[ Volume ]=>[ Audiosink ]
> 
> between volume and volume there is an adder which does the mixing.

Not at this point - see later in this mail.

> 
> > If an EOS event is received from the gnomevfssrc, a signal is prepared
> > and
> > put in a signal queue which is processed by a timeout function in the
> > main thread, so that users dont have to worry about threading issues.
> > 
> > (BTW what would be the best place to catch EOS signals from? gnomevfssrc
> > emits it too early for proper use in monkeymedia, since it's emitted
> > when the data ends, not when the playback ends. The audiosink is not an
> > option either since it's not stream-specific in this case.)
> 
> in theory gnomevfssrc will push out an eos event right after the last 
> buffer.  When this event reaches adder, adder will send an event back that 
> tells all of the plugins to close up, or might send a signal to the app to 
> say "clean up this input pipe".
> 
> In practice, events are still to be added to allow for this to happen.

Oh, ok.

> 
> > If the mixer catches the new eos signal from the main thread it
> > disconnects the stream and the mixer, and a new stream is dragged in
> > and hooked up. So far so good, scheduler dumps, everything looks
> > alright. But when i try to set the state to GST_STATE_PLAYING again (i
> > set it to NULL before fiddling with the stream, i tried everything,
> > PAUSED, STOPPED ..), it just locks up right there in the
> > gst_element_set_state. This all happens from the main thread.
> 
> I will take a look at it.  Is this code I added or code you added ? The 
> demo mix app I put in monkey sound works for me.  At least I did when I 
> committed it ;)

I rewrote all of the mixer stuff and took the adder out for now (can be
very easily put back, but the darn thing refuses to work for me,
whatever i try), and yeah it works if i dont take the eos signal out of
the threads. So if i do all this stuff from the thread the eos signal
was emitted from, everything looks OK. But i cant do this since gtk/glib
isn't threadsafe, this stuff was the number one source of crashes in
rhythmbox.

> 
> I'll look it over as soon as I have the time.  Others are of course 
> welcome to join in ;)

Thanks :)

> 
> Thomas
> 
> -- 
> 
> The Dave/Dina Project : future TV today ! - http://davedina.apestaart.org/
> <-*-                      -*->
> Cause I wake to find there's
> nothing left of me in her
> nothing more than a heart still at war
> <-*- thomas at apestaart.org -*->
> URGent, the best radio on the Internet - 24/7 ! - http://urgent.rug.ac.be/
> 
> 






More information about the gstreamer-devel mailing list