[matroska-general] Re: Matroska
Christian HJ Wiesner
chris at matroska.org
Wed Mar 26 01:36:55 CET 2003
sorry about the late reply, i am currently in China for 2 weeks on
bussiness, and couldnt check my email earlier ( for some stupid reason
my domaine name doesnt resolve properly in the Chinese DNS server, so i
had to fiddle a bit :-( )
Menno Bakker wrote:
>IIRC you send me an email a long time ago about supporting Matroska, didn't
>really have time to look at it then. But at the moment I'm working for Ahead
>(Nero) and they asked me to investigate if it would be useful to support
>Matroska in Nero (and other upcoming products).
We are glad that our small project caught your interest, rest assured we
will do anything to support you on this. The email i was sending you
that time, IIRC, was to raise your interest for a new Universal Codec
API called UCI ( Universal Codec Interface ), started by a US fellow
named Alex ' Foogod' Stewart. We were pretty excited about UCI at that
time and i hoped to get some comments from you that could be useful with
respect to audio, as Alex himself is more skilled in video related things.
Very unfortunately it seems that UCI is dead, there hasnt been any
update of the existing libuci code or the specs, also Alex Stewart wont
even respond to emails from other people wanting to help administrating
the project while he cant work on it, so it seems it bound to die soon.
We havent come up with an alternative solution to UCI yet, the reason we
were supporting it from our container project was that we had done some
first work on making our own API and soon realized what a huge task that
is, so we were pretty happy somebody with a good background in MPEG and
video compression in general was making such a codec API so we could use it.
Of course there is no necessity for such a codec API to be able to
write/read spec compliant matroska files, but one day we wnat to be able
to overcome the limitations of the old VfW and ACM codec APIs on
Windows, and as this will be an opensource approach we of course want to
make it x-platform from the very start, like we did with matroska (
formerly : MCF ).
Now, concerning your question about if it was useful for Nero to support
matroska . As i see it there are 3 pontential uses for matroska from
1. Reading matroska files for transmuxing the video or audio content
from it into MP4 container ( if compatible ), creating real MPEG4
2. Creating and burning matroska mode2 form2 video and/or audio files,
similar to VCD/S-VCD ( 795 MB on 80 mins, EDC/ECC on file level for all
important stuff like headers, etc. ) but giving much more options with
respect to subtitles, menues, etc.
3. Writing MPEG4 video with non-MPEG4 compliant audio compression
formats ( such as Vorbis ) into a general use open standard container,
as an existing and working alternative to Ogg/OGM, if there are plans to
4. Allowing the user to pack a complete album ( Music CD ) into a single
file, even using different compression formats and sampliung rates, and
also attaching lyrics as either subtitles or attached files
Here my estimation of what is useful for Ahead :
At 1. : This is fully depending on the acceptance of matroska by the
users, and we wont have any illusion about how long it may take until
people will really stop using AVI. Fortunately i do have pretty good
personal with Mr. Avery Lee, the congenial developer of Virtualdub, and
although Avery hasnt said anything in public yet we still have high
hopes he will add matroska reading, writing and capturing support to
official Virtualdub one day, giving our container a big push for sure.
At 2. : This is where i see the biggest benefit for Nero, being a
burning application in very first instance. Right now we have to create
Cue/Bin files with Mode2CD maker ( http://xcd.sf.net ) first and burn
them in Nero to have mode2 form2 CDs offering more discspace, i was
dreaming already about a Nero matroska plugin so we could create them
like we can do with VCD/S-VCDs already today, but allowing *EVERY*
supported audio and video codec ( and we plan to support them all ;-) )
to be used in the file, every resolution, framerate ( even variable ),
sampling rate, etc. . In a next step Nero could also have a matroska
menue creation plugin, so people could start making menues for their
MPEG4 files ..... a dream really, to good to be true :-) !! In a first
mode2 form2 implementation it was certainly enough to allow a big
matroska file ( max. 795 MB ) and burn in in mode2 form2, a more
specialized plugin ( with sourcecode from us ) would be able to make
more than that, for example by filling available space ( say the file is
780 MB ) with additional EDC/ECC ( FEC, like Solomon-Reed )elements, so
that the 795 MB are fully used and optimal protection of the file and
the track/block headers is given.
At 3. : Dont know if you have any plans to allow this, i know there are
Vorbis plugins for Nero, but i dont know if you plan to support file
creation also. We always hear that Xiph people themselves plan to allow
MPEG4 video in Ogg with the upcoming Theora implementation, but they
dont announce anything in public, so this is just guessing. The current
OGM container implementation made by Tobias Waldvogel based on Ogg and
VfW/DShow is bound to die IMHO, as there is no work being done on the
container for months, and all people understanding it and having created
tools for OGM file creation are now team members of matroska :-) !
At 4. : matroska will allow a couple of nice things to be done for audio
users also, and be it just to help with unifying all the different
tagging standards ;) ... this is not top priority, but for sure we will
work on that one day.
>I have a few questions about Matroska:
>- How far is WIN32 compatibility? (I read somewhere that it didn't work on
- a modified version of Virtualdub that is capable of writing, reading
and editing of matroska files, made by Cyrius, the main developer of
VirtualdubMod. The link is here
http://cyrius.bunkus.org/VirtualDubMod-Matroska-Alpha3.rar : Please
goto http://sf.net/projects/virtualdubmod first, download it with all
the necessary DLLs, and then replace the virtualdub.exe with the one you
find in the link.
Cyrius is certainly one of the strongest contributor to our project, he
was adding OGM support to VirtualdubMod also and had certain his
experiences with Ogg, especially with respect to editing the files ( ;-)
), so i feel he prefers matroska also. Currently he is in the process of
cleaning up the complete sourcecode of VirtualdubMod, implementing all
the changes that Avery had introduced with Vdub 1.5.x , and making the
OGM and matroska support modules completely new and from scratch. Pls.
note that there is a bug in the audio handling still ( we know about it
already ), so you wont be able to open matroska files with audio in
matroskadub right now, this will be resolved in the new version after
We also have a working DirectShow parser now, but its crashing after 10
seconds, can only read DivX video and doesnt support audio yet :-) !!
Reason for this is that Jan 'myFUN' Schlenker, our DShow parser
developer, was on vacation for 3 weeks when libmatroska was released, so
we are a bit behind on development now but hope to have a working alpha
version soon .
>- Am I right in stating that supporting just the Matroska file format,
>automatically the codecs inside are supported? E.g. codec support is
>transparent? Or do we need to read from the Matroska file and then run the
Well, if we had the new, powerful opensource codec API already then our
plan was to call external plugins with this API, both for encoding (
from Virtualdub ) and decoding ( from our DShow parser ). But as UCI
seems to have come to a halt and our own solution is not existing yet,
we have to find other ways as an interims solution ( for Windows, Linux
is much easier, libavcodec does it ):
- For MPEG4 video we will call any existing DirectShow filter that is
capable of decoding MPEG4. Note that we can differentiate between MPEG4
Simple, Simple Advanced and Advanced Profile from matroska, we still
have to define a way how to find out what FourCC's had to be used for
each profile ( like 'dx50' and 'xvid' for SAP and 'divx' for SP ) and
then have a match table hardcoded in our parser.
- For MPEG1/2 video we do the same, we call any existing, installed
DShow filter for playback, same goes for MP2/3 audio
- Vorbis, MPC ( musepack ), FLAC will be hardcoded into the matroska
DShow parser. This is not a nice solution, but we dont have any other
sensible choice right now, at least until somebody makes nice and clean
DShow filters for them.
- In ACM compatibility mode we just call the ACM codec, same goes for
VfW, DShow and QT compatibility modes
>I could look at the specs myself, but you probably know,
>so that's much easier :)
Sure, i am glad you give me the chance to point out project out to you
>- Is it possible license-wise? It's LGPL? Then it's no problem I guess.
Well, no, unfortunately this is a little bit more complicated, but we'll
find a solution here for sure. To avoid project forks or companies like
M$ stealing our work, we decided to dual license our library code under
both GPL and QPL, and did not use a L-GPL or BSD type license like Xiph
do with libogg. Of course, the specs are fully open to any company
wanting to support matroska with a self made implementation, writing
their own libraries, but i understand this may not be an option for you
due to time and compatibility constraints. Now, the QPL license does
allow us to give commercial licenses of our library sourcecode to any
company, and its our decision what the conditions are for this.
I will discuss with Steve, Cyrius and Mosu, the main coders of the
library, about the possibility to give Ahead a commercial license of our
code, at no cost, but with a time limit ( like 5 years ? ).
Alternatively you had to release your plugin sourcecode under either a
QPL or a GPL license, or using both license types.
>If you can give me more reasons why Ahead should bring support for Matroska,
>please let me know. Greetings, Menno
Sure ! Because we are such nice people :-) . Honestly, i hope the list
given above does give you some 'ammunition' , but if you guys decide to
wait a bit until the container is actually used then its fine with us
More information about the Matroska-general