[gst-devel] Continuing work on DVD (long)

Jan Schmidt jan at slug.org.au
Sat Jan 31 01:08:28 CET 2004


On Sat, 2004-01-31 at 00:38, Martin Soto wrote:

Hi Martin,

> The channels wouldn't necessary be that complicated, but I agree that
> the events are enough in this case, since we are sending small bits of
> information.

I agree here - I think it would make things too complicated to define a
new stream 'video/mpeg-with-dvd-info' without having to more or less
reinvent mpegdemux to cope. I prefer the events. I think adding a new
enum 'GST_EVENT_PRIVATE' to gstevent.h is sufficient. 

The only drawback I can see is not very important to me: I won't be able
to "tee ! filesink" the information coming out of dvdnavsrc and play it
back with the same subtitle display later because it won't preserve
colour tables and such.

> The question is, how do I go implementing this stuff?  Is there any
> example of private events being used in gst-plugins?  Additionally, in
> order to communicate with the actual subpicture decoder, I'd rather 
> forward the events, since the capabilities don't actually fit the bill
> (color tables keep changing in DVDs, specially when moving out from and
> into menus).  Should I simply add some new event types to GstEvent, or
> define a new class (GstDVDEvent) somewhere, for interested elements to
> share?

This is how I've implemented the software DVD player that I have so far
- you can check out the patch I attached to my original mail a week or
so ago.

> It is important that we define and document this protocol, because many
> elements are going to share it.  By the way, Jan, it'd be great to hear
> from you regarding this ideas.

Agreed - I haven't written down the events yet. I've been creating
events as I needed them, because I'm learning the details of DVD
playback as I go. What I've done so far (a little hacky, wanted to get
it work, needs revising, etc) but not committed is:

* dvdnavsrc generates events of type GST_EVENT_NAVIGATION, which have an
attached GstStructure and sends them downstream. 
* mpegdemux forwards those out the video and subtitle pads. Thus far
mpegdemux has needed very little changing to support the playback.
* My rewritten mpeg2subt takes video frames and applies the menu
buttons/subtitles to them according to the events it has received.

The events I'm using so far:
still_frame - contains a duration (in seconds) that the frame just sent
needs to be displayed for
spu-highlight - contains the palette and crop area for the current
button.
spu-clut - contains the 16 uint32 variables defining the new subtitle
colour table.

> Agreed.  As already stated in my answer to Benjamin, my plan is to clean
> up mpegdemux somewhat, and derive a dvddemux from it.

This sounds good. 

I'd like to take a look at the changes that you've made to dvdnavsrc and
compare with what I've been doing.

I'll write more later - I have to run out the door to catch a train.

Cheers,
Jan.

-- 
Jan Schmidt                                  thaytan at mad.scientist.com

Have you been half-asleep? Have you heard voices?
I've heard them calling my name...
 -Kermit the Frog (Rainbow Connection)




More information about the gstreamer-devel mailing list