GNOME Bugzilla – Bug 727421
Why eos event is converted to gap event when no stream data was seen
Last modified: 2014-04-02 13:02:41 UTC
Hi: We have an mp4 file with normal video and bad audio, when try to play, both video and audio decoders are created and demux sends data to decoders. As all audio data was not decoded by audio decoder, we tried to stop audio stream and let video played alone. we send EOS event to demux's audio pad and it was forwarded to stream synchronizer, then it was converted to gap event and send to alsasink, but base audio sink report "Sink not negotiated before GAP event." because no segment event was send to audio sink and the pipeline stops. I wonder why eos event is converted to gap event when no stream data was seen in streamsynchronizer. No more data was sent after eos event and I want to know why audio sink still want to preroll.
You need to send a CAPS event before the EOS. streamsynchronizer converts the EOS to a gap event to keep the audio chain alive, for potential gapless playback at the end of this sequence.