[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