[gst-devel] dvdsrc status update, sundry questions

Jason Gerard DeRose jderose at jasonderose.org
Sat Dec 9 01:42:18 CET 2006

Hello everyone,

I wanted to give a quick status update on my dvdsrc(*) work, and also I
have three questions.

dvdsrc is now a more or less a stable replacment for dvdreadsrc, aside
from a few missing features (some which are missing in dvdreadsrc also),
and, of course, more testing.

So now I'm ready to break it apart...

I've spent some time looking through the dvdnavsrc code and have decided
it really makes sense to combine the functionality of dvdreadsrc and
dvdnavsrc. There is a lot of duplicated code between the two. If enough
developers feel that this is a bad idea, I will implement dvdnavsrc as a
sub class of dvdsrc (or perhaps have both derive from a common class).
But I personally think the single element approach is much better.

Regardless, I'm all fired up to get full DVD support into 0.10. My plan
is to add Nav support to dvdsrc, as a replacement for both dvdreadsrc
and dvdnavsrc, and to fix or rewrite dvdsubdec (which currently appears
pretty broken).

And now on with the questions:

1) Decodebin2 best practices?

This is mostly a question for Edward Hervey. I haven't dug into
decodebin2 yet, but I just wanted to ask, are there any quick pointers
you have on how I should best utilize decodebin2, ideas about where
you'd like to see GStreamer heading architecturally when it comes to
auto-plugging something like a DVD (on the source element side)?

As my new element has a different name, keep exact compatibility with
dvdreadsrc/dvdnavsrc isn't important. So if, say, new custom downstream
events are needed, I'd gladly implement them, and add any new
functionality that dvddemux might need.

I want to get any feedback I can from people working on the downstream
elements so I can make sure I'm heading in roughly the correct
direction. I mean rewriting code is fun, but... ;)

2) DVD 'table-of-contents' signal?

Part of the problem I'm having performance wise with KungFu(**) and
dvdreadsrc is quickly getting at least the number of titles on a DVD,
and the duration of each title, so I can decide which titles to

For each title, I must drop to STATE_READY, set the title, go back up to
STATE_PASED, and then query the duration. But dvdreadsrc is doing way
more work than it needs to get just this information. I'd really like
some kind of table-of-contents signal to quickly pass this information
to the application.

It seems that Tim Müller got around this problem in Thoggen by using
libdvdread directly, but KungFu is written in Python, so this isn't an
option. And it would be nice if all this could be accomplished through
the normal GStreamer API, so that anyone else who wants, say, to write a
DVD ripper, has this functionality available.

I haven't played with cdparanoia/cdiocddasrc much under 0.10, but in 0.8
the only way I knew to get the number of tracks and the duration of each
track was to do a series of segment seeks and duration queries. It would
be nice if these elements also had a similar table-of-contents signal
(or a table-of-contents event on the bus).

Anyone have any ideas on this?

3) Is 'videomixer' suitable for overlaying the decoded subtitles? Once I
have dvdsubdec working again, is 'videomixer' what should be used?


In general, if anyone has any advice on any of this, I'm all ears.


* I'm currently keeping my dvdsrc code is a Bazaar repository:

** KungFu is a gst-python based DVD ripper

More information about the gstreamer-devel mailing list