[gst-devel] DVD menu support

Bastien Nocera hadess at hadess.net
Thu Jun 12 15:15:07 CEST 2003


On Thu, 2003-06-12 at 22:49, Martin Soto wrote:
> Hello all!
> 
> First of all, some background and (hopefully) good news.  During the
> last few months, I've been hacking many components of GStreamer to be
> able to play DVDs in my home theater.  I hacked the dvdnavsrc element to
> support a number of features that were missing in order to completely
> support the DVD menus.  Basically, I added support for DVD still frames
> (commonly used as menu backgrounds) and for subpicture highlights. 
> Together with my DXR3 elements (already in gstreamer CVS), a number of
> changes to the mpegdemux element (also already in CVS) and a python
> script based on David Lehn's most excellent gst-python, I can play DVDs
> with (almost) full menu support.  I also hacked in support for an old RF
> based remote from x10.com, so that the whole setup works like a normal
> standalone DVD player.  Actually, my only way to watch DVDs in the last
> few months has been that, and it works pretty well :-)
> 
> The whole hack is however in a state that makes it difficult to release
> as an usable complete application.  Part of the problem is that my
> changes to the dvdnavsrc are extremely ugly, and not really suitable for
> general consumption.  The DVD menu highligths are based on the
> subpicture mechanism (the same thing used for the DVD subtitles), and
> require that a number of information bits travel from the dvd decoder
> element to the subpicture decoding unit:
> 
> - The actual encoded pictures.
> - The Color LookUp Table (CLUT).
> - The highlighted regions and corresponding color palettes.
> - The information contained in DVD nav packets (PCI and DSI structures).
> 
> In my current implementation, only the actual pictures are being
> transfered as normal data buffers.  The remaining bits are handled by
> the application, that connects to some signals in the dvdnavsrc to get
> the information, and sets it in the subpicture decoder by firing signals
> defined there for the purpose.  Of course, this causes a lack of
> sincronization between the pictures (that are buffered in the pipeline)
> and the remaining information elements, resulting in some very annoying
> artifacts in the menu display.
> 
> My proposed solution would be to put all that information in downstream
> events.  Since this is all DVD specific, extending GstEvent doesn't seem
> to be a good idea.  Ronald suggested that I could subclass GstEvent and 
> I'm ok with that, but I don't really know how to do it.  Where should I
> put such a subclass?  How do I compile and install it to make it
> available to all plugins needing to produce or consume the DVD events? 
> Is this thing related to the "interaction" work that is being done now
> in 0.7?  Should I somehow integrate my work with that?
> 
> Thanks for the help, and please keep the good work on GStreamer.

What about putting the code for the menu specific stuff in libgstplay?
Both Julien and myself would thank you for  adding DVD support to totem
;)

Cheers

-- 
Bastien Nocera <hadess at hadess.net>





More information about the gstreamer-devel mailing list