[matroska-devel] Re: AVI compatibility misunderstanding

Moritz Bunkus moritz at bunkus.org
Mon Feb 17 17:48:00 CET 2003


Hi.

> Another one from the trio ;)
> 
> [17:24] <spyder482> KaxCodecPrivate - conatining subelements with codec data
> [17:24] <spyder482> MSCompatibility - containing subelements for MS shit
> 
> When the stream comes from... an MP3 file for example, KaxCodecPrivate has a
> special form and MSCompatibility is not used.
> When the source is ACM based (AVI, WAV) MSCompatibility is filled and
> KaxCodecPrivate is not filled...

Audio is the easy part. My tools will use A_PCM16IN for 'normal'
uncompressed PCM data, A_MPEGLAYER3 for MP3, A_DOL_AC3 for AC3 and
A_VORBIS for Vorbis. Obviously those formats are all well known and
shouldn't require a WAVEHEADEREX to be stored as well. Right?

So the only complicated case is Vorbis which needs three packets apart
from the data: the headers, the comments and the setup data. Those
three packets have to be stored under KaxCodecPrivate somehow.

(still no need for MSCompat...)

Video is another thing. If you use e.g. HuffYUV or MJPEG then you'll
need to store Huffman tables somewhere. Where do you store it if
KaxCodecPrivate is already filled with BITMAPINFOHEADER (or
AVIANOTHERNAMEIWILLNEVERBEABLETOREMEMBER)?

> SO KaxCodecPrivate and MSCompatibility are redundant. They are not used
> separately. That's why they are THE SAME !

Not always, I'd suppose. For audio I'd agree so far.

> Later (sooner as possible) we'll make hacks to transform some well known ACM
> codec  into native matroska streams.

Guess what, I don't understand that sentence - perhaps because I've
never done DirectShow/VfW coding. A simple question: if I use
A_MPEGLAYER3 and fill in all KaxAudio* elements, will the Windows apps
be able to handle that on their own? As in 'yes, they'll just recreate
a WAVEHEADEREX if needed and search for the corresponding codec'?

-- 
 ==> Ciao, Mosu (Moritz Bunkus)
http://matroska.org



More information about the Matroska-devel mailing list