[gst-devel] Proposition for a media test suite

Ronald S. Bultje rbultje at ronald.bitfreak.net
Tue Nov 15 06:42:07 CET 2005

On Tue, 2005-11-15 at 13:30 +0100, Wim Taymans wrote:
> The demuxer pushes out video and subtitles in the same thread (although
> a queue should ideally be placed in front of the video-decoder). Here
> the video-mixer can operate in chain-based mode. Whenever it receives a
> subtitle, it stores it and renders it when the corresponding
> video-frames pass by. When the duration of the subtitle expires or a new
> subtitle is chained, it renders the new subtitle to the video-frames.
> This assumes video-mixer is not using collectpads. If video-mixer was
> using collectpads, a filler event would be needed to make sure video is
> mixed even if there is no subtitle yet. 
> So, case 1 ideally needs a collectpads video-mixer, case 2, ideally a
> pure chain-based mixer. Not sure yet how to signal the scheduling mode
> to the mixer or maybe we need two kinds of mixers..

Unless you write a generic baseclass for this, this "we need two kind of
X elements" is not going to work.

It's not just the mixer. It's also all muxers and several other
stream-combining elements. So it's a generic problem, not all related to
live display. It introduces the risk of buffers arriving too late for
use with all kind of nice evil side-effects (we may randomly lose data
permanently because it arrived too late at the muxer; "hey, I added a
subtitle there, why won't it show on this DVD that I just created using
"Fluendo DVD Creator Pro" which costed me $199?!? Linux sucks!"). Just
add fillers to collectpads and the subclasses don't even need to bother.

> Other uses of fillers in 0.8 where to make the audioclock advance when
> no audio was fed to the audiosink, which is not needed anymore in 0.9.
> This used to be the case for DVD menus, for example.

Live display is not all we do... So even so, it is still needed, unless
you implement the same "clock bookkeeping thread" in collectpads, which
is not a good idea if you ask me.

Really, I know Thomas calls all my stuff in the 0.8 branch a hack, but
it isn't. My initial thinking (including several wrong assumptions) on
this is in docs/random/bbb/subtitles (possibly 0.8 only, dunno; check
webcvs), and if you add some discussion from later on between people
that tried to solve the problem, you'll see why I did what I did and why
it was the correct choice back then, and probably still is today.


More information about the gstreamer-devel mailing list