[gst-devel] DVD Events

Martin Soto soto at informatik.uni-kl.de
Tue Mar 23 05:07:10 CET 2004


On Tue, 2004-03-23 at 01:33, Jan Schmidt wrote:
> s decoder is almost back to where I had it before, and the events so far
> are perfectly adequate. 

Great!

> Left to do:
>   Implement lipping to the current menu highlight.
>   Fix decoding of the colour LUT so the subtitles draw in the 
>     correct colours
>   Still frames

Regarding still frames, I really don't know how to do them properly. My
current hack is that the dvdnav element performs the wait by itself, but
keeps sending empty events from time to time to avoid upsetting the
scheduler that much. It sends a "still-frame" DVD event at the beginning
of the wait though, because the decoders may need to know that they have
to keep displaying the last frame until they receive new material (the
DXR3 card needs that, for example.)

This sort of works, but it isn't really that exact. Namely, you start
waiting before the still frame is being displayed, since, depending on
the amount of buffering in the pipeline, it may take a significant time
to reach the decoder. This isn't critical for still frames, but the
whole method looks somewhat unreliable.

Another option I've thought of, works according to the following
protocol:

1. dvdnav sends a "still-frame" event, containing the number of seconds
the wait lasts.

2. Upon reception of the still-frame event, the video decoder performs
the wait operation. Since it has access to a clock and can see frame
timestamps, this should work reliably.

3. Once the wait is completed, the video decoder sends an event
upstream, that tells the dvdnav element to restart sending material.

The same mechanism could be useful to implement libdvdnav's wait events,
which I'm ignoring right now in dvdnav. 

>   Convert mpeg2subt to a loop-based element
>   Figure out how we get gstplay to build the pipeline so that it includes
>     mpeg2subt at the end
> 
> More general to do:
>   Aspect ratio handling so MPEGs are displayed with the correct pixel ratio.

General question: how is this supposed to be managed in GStreamer?
Events? Stream info? Tags? Capabilities? I really have no idea.

M. S.
-- 
Martin Soto <soto at informatik.uni-kl.de>
Universität Kaiserslautern





More information about the gstreamer-devel mailing list