[matroska-devel] Re: AVI compatibility misunderstanding

Steve Lhomme steve.lhomme at free.fr
Mon Feb 17 18:07:23 CET 2003


> 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?

Yup.
 
> 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.

Yup.

> (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)?

Well, I thought it was like the cbSize in WAVEFORMATEX that tells the size of
extra data private to the codec : BITMAPINFOHEADER.biSize. That's IIRC the
conclusion of the discussion I had with Cyrius. If that's not the case, we need
even more than the 2 structures mentioned (maybe removing one or 2 of them too ;).

> > 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.

Maybe a HuffPCM would need a Huffman table initialisation too...
 
> > 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'?

I think so, even though when I made the LAME ACM, I tried to fill the extra data
in the WAVEFORMATEX (MPEGL3_WAVEFORMATEX or something like that) the same way as
the Fraunhofer codec. You never know if their decoder will be able to handle
stranges cases or not.
http://matroska.org



More information about the Matroska-devel mailing list