[matroska-devel] Re: How UCI and Matroska could interact

Steve Lhomme steve.lhomme at free.fr
Thu Jan 23 16:47:40 CET 2003

En réponse à Cyrius <suiryc at yahoo.com>:

> In my mind there were two parts :
> 1) the matroska (or any other) library, called by the
> program (editing tool, player, whatever) to read a
> file.
> 2) the UCI (or any other) API also called by the
> program to handle/decode the data in the file.
> So in my mind the API wouldn't be directly linked to
> any container (e.g. matroska) because this would be
> strange (since UCI is meant to be 'universal' why is
> it linked to matroska or MCF ?, in this case it should
> be linked to any other container too).

Sure. This way other containers can take advantages of other codec :)
I think once UCI can cope with data i/o from Matroska, AVI and OGG it will be
rather universal. Because all of these containers have different philisophies,
but still rely on different codec at one point.
> Then what happens is that the program read data from
> the file, give the data to the library to get only the
> useful things.

The codec library (UCI) or the container library (libmatroska) ?

> Those useful things include stream headers and codec
> specific data (if any). The information contained in
> the header (Video codec type, ...) are sent to the API
> (e.g. UCI) to know if there is an available codec to
> decode those data. If so the data are sent to this
> codec through the API, decoded and returned to the
> program (through the API again).

Well, matroska offer more than streams with a codec (attachements or meta
informations for example). And that would have nothing to do with the codec API.
So the program (I call that a host) has to call libmatroska directly at one
point (so the same architecture should apply to AVI or OGG). The big questions
is : is it the container lib that calls the codec, or the host application ?
(BTW, a common host example is a DirectShow filter :)

> Do you Yahoo!?


More information about the Matroska-devel mailing list