[Matroska-devel] [Fwd: Re: Dirac mapping for Matroska]

Sebastian Dröge sebastian.droege at collabora.co.uk
Tue Jul 1 14:44:19 CEST 2008

Ok, thanks for all your comments, I'm answering some below.

The current draft can be found on

Steve Lhomme wrote:
> Sebastian Dröge wrote:
> > Ok, after talking to one of the Dirac developers I'd like to change the
> > previous proposal completely ;)
> > 
> > The plan would now be:
> > - CodecID is "V_DIRAC"
> > - No CodecPrivate, no changing of the stream
> > - A Matroska block/lace contains all Dirac packets up to and
> >   including a picture. This means, all padding, maybe a sequence
> >   header and maybe auxiliary data and then the picture for which
> >   all this previous data was. This makes demuxing much easier
> >   and prevents broken streams created by a muxer or demuxer.
> I liked the previous proposal better. Is there a reason why you to store 
> metadata in the "playback blocks" ? Only data needed for decoding should 
> be put in a cluster. There is room for plenty of metadata elsewhere 
> (tracks, tags, chapters and more can be added if necessary). Does it 
> also include padding ???

Dirac frames can contain abitrary metadata in auxiliary packets and of
course the padding packets. But as you and David have agreed later on
the elementary Dirac stream should not be changed.

> > - A block is a keyframe whenever it contains a sequence header.
> >   Sequence headers are added to the stream by the encoder at
> >   places that are meant as "seek points" and on which decoding
> >   could start. There's no easy way of detecting whether a picture
> >   can be decoded on it's own in any other way.
> That means only those frames with a sequence header should be marked as 
> keyframes in SimpleBlock. I'm not use using the other "reference system" 
> is necessary.

There's only one "reference frame" system now in the above draft. Either
by using SimpleBlocks which are marked as keyframe whenever they contain
a sequence header or by using normal Blocks and the ReferenceFrame pointing
backwards to the previous frame until the frame having the sequence header.

Does this sound good to you?

David Flynn wrote:
> There is no carraige of 'nonessential' metadata in a dirac elementary
> stream.  A sequence header is essential.

>From what I understood padding and auxiliary data is not essential for
decoding and could in theory be dropped. But I agree that this should
not be done for the reasons you mention later.

> > You mean it's as close to the original as possible. Except it doesn't 
> > take of matroska to store the data in the appropriate place. Using VfW 
> > will give the same (bad) result.
> Please could you elaborate on 'appropriate place' and what the bad
> result is?

A Matroska block can contain additional data in a separate place
(BlockAdditional) but for the above reasons this should not
be used for auxiliary data packets, etc.

So to summarize, is the above draft fine for the Dirac and Matroska
developers? Is there anything that should be clarified or corrected
or can this be added to the Matroska spec already?

More information about the Matroska-devel mailing list