GNOME Bugzilla – Bug 424123
[basesink?] doesn't preroll with sparse data?
Last modified: 2011-05-18 12:59:10 UTC
On DVD playback, subpicture data is not always available. If there's no data, dvdsubdec won't produce any buffers. If a sink only sources from dvdsubdec (if you don't use a videomixer, for example), it will not finish prerolling. This blocks the pipeline. zaheerm proposed to send an emty buffer when a new segment starts. This worked for me on the begin, but not on after a newsegment with flush (for example when entering a dvd menu). I probably implemented it the wrong way, though.
The mpeg demuxer should send newsegment events with update=TRUE to indicate that there isn't any data coming for a while (I believe this is implemented as well, at least in -ugly CVS). Not sure what the right thing to do here is. Sounds more like a basesink issue to me though (ie. should basesink preroll if it gets a segment update?) Moving to core component until further comment.
core now has the async=false property on sinks that can be used to handle sparse streams correctly.
Lets close this bug then, it's handled correctly everywhere and sparse stream sinks simply should never be part of prerolling.