[matroska-devel] AVI compatibility mode?

Moritz Bunkus moritz at bunkus.org
Mon Feb 17 15:04:09 CET 2003


Sunday Cyrius and I had a rather long discussion about the 'AVI
compatibility mode'. He told me he'd save the BITMAPDONTASKMETHATNAME
and the WAVEHEADEREX and other structures in KaxCodecPrivate and didn't
set all the KaxVideo* elements.

This was the first time I actually heard about such a compatibility
mode, and I was a bit confused why anyone would want to do such a
thing. That's why I'd like some clarification on that point.

Some disadvantages that I can see right now:
 - These structures are Windows specific. Neither Unix/Linux nor MacOS
knows about them.
 - These structures are stored as they are lying around in memory which
produces the usual Endianess problems.
 - Why use separate structures that are not coded in EBML if Matroska
itself contains elements for the contents? e.g. KaxVideoPixelWidth etc.

If there are any fields in those structures that are necessary or even
only important and there's no Matroska element for storing this piece
of information, then Matroska should be changed.

Another point: I now know that there are dummy frames in AVIs if B
frames are being used. I understand that you want to store that fact in
Matroska in some way. But there's alreadly KaxCodecID...

Another question: if I use 'V_MS/VFW/FOURCC' for the CodecID (as I'm
reading an AVI) - where do I store the FourCC?
says 'see codec 'private' data and use suitable decoder based on FourCC
code' but where do I then store e.g. the Huffman tables required by the
MJPEG codec? And why does the spec say that CodecID is 128bits long
with the upper half being reserved? Aaaaaaaand...

Next question. Well... I'm sure I had another question, but I can't
remember it right now ;)

 ==> Ciao, Mosu (Moritz Bunkus)

More information about the Matroska-devel mailing list