EOS sent when last sample plays?

Tim Müller tim at centricular.com
Tue Jun 17 00:57:00 PDT 2014

On Mon, 2014-06-16 at 19:26 -0700, Shawn Lewis wrote:

Hi Shawn,

> Hi, I have a question about EOS as it affects gapless playback.
> Is EOS sent when the final sample of a stream actually plays? I ask
> because it looks like playbin sends the about-to-finish signal when it
> receives drained from uridecodebin, which in turn is generated when
> EOS is received on uridecodebin's src pad.
> So if EOS is sent only when the final sample is actually played how
> does playbin get a new sample to the audio driver in time?

There is some buffering between uridecodebin and the sound card, e.g.
the audio sink's internal ringbuffer, so playbin has some time to hook
up and preroll the next file (but not a lot of time). The EOS event is
sent by uridecodebin when the internal demuxers/decoders have processed
all the data available there. An EOS message on the bus would be sent
when the audio sink has played all samples (unless another track has
been queued via about-to-finish).


Tim Müller, Centricular Ltd - http://www.centricular.com

More information about the gstreamer-devel mailing list