[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