View Full Version : What about a new container format?
Tom|420
26th December 2003, 00:58
If you were creating a new container format, what new features would you introduce? what features from other formats would you keep? what features would you drop? would you base your new format on an existing one and only add/remove/change some features?
Please answer as a user or as a programmer, depending of your background. Please avoid any 'not another container' flames.
I have some ideas in head, and since I am far from an expert on the topic I would rather consult than spend more brain cycles on the that. Depending on your answer I will either post my ideas and possibly start a project, or just forget those. (Chances are that I will have to forget those :P). In any case I am not knowledgeable enough on the topic to work on a container format just by myself.
Tom :)
Belgabor
26th December 2003, 01:12
Ok, I hope this doesnt sound like a flame, but before anyone puts brain cycles into answering your question, let me first ask what do you think you can do better than matroska?
Koepi
26th December 2003, 01:48
...or mp4, avi or ogm. ;) As usual, don't forget that there are plenty of containers out there. :)
To stay ontopic:
- simple file format so hardware manufacturers don't need to re-invent wheels, bells and whistles.
- multiple audio languages
- (multiple subtitles)
- chapters (multilingual)
Regards
Koepi
Tom|420
26th December 2003, 02:55
Belgabor: what do you think you can do better than matroska?
Good, you parsed my question out of my post, could you answer to it now? :P
Koepi: Yes I know there are plenty of formats already, but I did a search about those features I have in head, and haven't found any which does.
You got one of the points from my list, namely 'simple file format', which is the only thing that bugs me about Matroska, which otherwise looks perfect to me now. Beside that Matroska already *could* do some of the other features I have in head.
Sorry I want to keep my idea in my head until a few other answered with was they seek in a container. I'm not the proprietary-kind however, I will share my ideas with you, cause I'm not even sure I have the knowledge (or even the time or interest) in actually working on those.
So repeating the question again: what do you like or miss in current containers? what were your criterias on selecting what is now your favorite container?
avih
26th December 2003, 04:43
Originally posted by Tom|420
So repeating the question again: what do you like or miss in current containers? what were your criterias on selecting what is now your favorite container?
please go ahead and share your ideas. no one will laugh, unless it's really silly of course ;) don't turn this thread into a guessing game, it didn't start that well already. make a point, and then discuss it.
Atamido
26th December 2003, 05:09
Originally posted by Tom|420
You got one of the points from my list, namely 'simple file format', which is the only thing that bugs me about Matroska, which otherwise looks perfect to me now. It would perhaps be more accurate to call Matroska "verbose" instead. The structure format is quite simple and is similar to XML. It looks something like this:
<Name of data> <Size of data> <Data>
It is just that over and over. So, its very simple, just a little verbose in that you have to read what each chunk of data is instead of using something like 32 bits, each representing a specific True/False flag.
As far as what I was looking for in a container, I was looking for something open that was extremely flexible.
bond
26th December 2003, 06:21
hm i am pretty happy with the features current containers provide/are working on, no idea what i could additionally want...
so to say:
no, plz not another container format (better join any of the existing projects)!!! :D
bilu
26th December 2003, 08:26
IMHO Matroska has plenty of room to grow, it's constantly growing in features.
Not intended as a bash, but from what I've seen in the forum I'd say:
Matroska: keeps growing;
OGM: has already revealed some limitations i.e. features impossible to adapt;
AVI: miracles have been made for MP3 VBR,AAC and B-frames. Never a limited container has known so much hacks :)
MP4: still lots of unexplored features, menus are being worked on a friendlier way for the first time- but menus is something still unique to MP4 I think :) ;
Bilu
Atamido
26th December 2003, 08:37
Something I forgot to mention, if you like the design of Matroska, but you dislike its verbosity, then check out its sister project MCF. (http://mcf.sourceforge.net) It has basically the same feature set of Matroska, but uses fixed field sizes instead of the variable field sizes used in Matroska(why I went with Matroska).
There hasn't been much development on it recently, but it might be what you are looking for.
ChristianHJW
26th December 2003, 10:55
Originally posted by Tom|420 I have some ideas in head, and since I am far from an expert on the topic I would rather consult than spend more brain cycles on the that. Depending on your answer I will either post my ideas and possibly start a project, or just forget those.
If you have some coding knowledge, you are more than welcome in the matroska team as a new member, and can then implement all the 'missing features' matroska doesnt offer already. If you are not a coder, and cant do anything by yourself, then i have to say your thread raises a couple of question :
- how can you judge on the 'complexity' of matroska without being a coder and really understanding it ?
- did you read up what we are planning for the future ?
- have you studied the MP4 specs closely to see whats possible with it ?
Christian
matroska project admin
Tom|420
26th December 2003, 13:04
Let's face it, Tom, you got attention but no answers :P
I wasn't playing any guessing game nor was I afraid of being laugh at, only I was interrested in seeing if there were feature you missed from current containers.
Since you asked, I am a programmer, working on the wrong OS (Windows) and the wrong tools (Borland). I have zero experience in containers, but I did take a look at Ogg and Matroska documentation (and of what exists of AVI documentation). I have recently started to play with DirectShow, merely for experimenting, but ended up with a simple movie player which became my default player now. I colloborated on a few small GPL projects in the past (mainly in translation English>French), but the main project I worked on was Web CP, a web control panel in PHP for web hosting companies written by the company I was working on at the time, on which I did a lot of bug fixes and other corrections, but really I was only a helper on that. I learn quick, usually I have no problems familiarize with a project and get into it; that said I don't see what I could be usefull for on either Ogg or Matroska, you'll need to prove me wrong :)
Well, my main idea was to have a container to allow multi streams *and* multi tracks. By multi-track I would see a full music album in one file, seekable from track to track randomly. And for the big example, I would see a full DVD including one track for the main movie, one track for the deleted scenes, another for each of the extras... with, of course, multi-stream for multi-languages :)
I seen a suggestion in another post about using the chapters in Matroska to acheive this. Maybe it's the way to go, but I have no idea if this would be doable without changing anything to it.
Please do not take this as an insult, but I find Matroska format a bit complex. Not *that* complex. When I did my first experiments with it several months ago (maybe even more than one year, I don't remember) it was way to slow for my poor Anakin (Pentium 3 @ 500), it was stopping displaying frames for several seconds as soon as action started. But now I gave it a try last week-end, and transfered one of my "DVD backup" (XviD + AC3 5.1), and to my surprise it worked more than perfectly, without a single glitch, so that I burned it in Matroska instead of Ogg as I was used to. When I compared with Ogg the CPU usage wasn't higher by more than a very small amount. So it seems that some problems were solved since my last experiment (or maybe I did tested with a very bad build at the time). The only very little problem I noticed is that video runs at 3X speed after a seek to resynchronize with the audio; while better than AVI, it is still not as good as Ogg, but I suspect there is only a small ajustment/optimization required in order to fix it since Matroska uses timestamps for synchronization.
But wouldn't Matroska be too complex for (for example) a stand-alone music/DVD/whatever player? a portable device? any slow machine dedicated to low-grade multimedia? I believe so, but if you can confirm that I am wrong than it's the last time ever that I discuss this issue :)
So my full idea was of a format which would support:
- multi-track
- multi-stream
- any multimedia content (video, audio, photo album (similar to Kodak Photo CD), presentation (similar to PowerPoint)
While following those objectives:
- Very simple/fast parsing (it's ok if we have to accept a longer file creation period to achieve faster parser afterward)
- Fast and seamless seeking (of course timestamped synching)
- Low overhead
- Checksums everywhere so that any corruption is detected
Features not desired:
- Steamability (I do not expect a multi-track/multi-stream media to be streamed, that wouldn't be much efficient)
- Easily editable (I would rather concentrate on simplicity and easy parsability than in-place edition, there are a lot of format already suitable for intermediate edition)
This is pretty much my full ideas. I must have smoked 3 or 4 cigarettes while exporting the content of my brain to this post. So let me know if there is anything good in it and what we can do about it. I guess (and you seem to be more on that idea) that it's possible to add features to Matroska rather than design a new wheel.
Happy boxing day!
bond
26th December 2003, 13:25
Originally posted by Tom|420
So my full idea was of a format which would support:
- multi-trackas you described it this is already possible with matroska afaik
- multi-streamif you mean something like multiple audio streams (multiple languages) than this is also already possible in as good as all containers
mp4 and ogm can also store multiple video streams already
- any multimedia content (video, audio, photo album (similar to Kodak Photo CD), presentation (similar to PowerPoint)also possible with matroska and mp4
sorry :(
SeeMoreDigital
26th December 2003, 13:37
What about a new container format!!!!
I'm frightened... very, very frightened!
Koepi
26th December 2003, 13:43
Originally posted by bond
mp4 can also store multiple video streams already
also possible with matroska and mp4
sorry :(
Also possible with OGM (in fact, that was my very first test i did with Tobias' OggDS before implementing oggmux).
Two music videos i randomly mixed together - video stream was switchable and audio too. Quite useless, but possible.
Koepi
ChristianHJW
26th December 2003, 17:41
Originally posted by Tom|420 that said I don't see what I could be usefull for on either Ogg or Matroska, you'll need to prove me wrong :)
Tom, everything you were proposing is possible with MKV, MP4 and Ogg/OGM already. We had good use for a Delphi programmer, dont worry. In fact, the TCMP (http://corecoded.com) team needs more coders desperately, but there are plenty of other tasks also such as
- a nice tagging program in Delphi, using libmatroska, and the new tagging standard
- a file repair program, based on the additional track headers we plan to add to the files soon to increase safety
- a nice XCD GUI to make matroska 800 MB XCDs, on top of xcdcreator
etc. pp
About matroska's complexity, please allow me to tell you that we can play MKvs on Pocket PCs now with an alpha version of PocketMVP, so please just get over this first bad experience, whatever has been the reason for that, and how often you even heard that matroska is bloated and complex, its just not true. Compared to the necessary CPU power to decode the upcoming MPEG4/10 ( AVC/h.264 ) video standard, parsing a 25 track matroska file is just peanuts ...
Atamido
26th December 2003, 18:20
Originally posted by Tom|420
Well, my main idea was to have a container to allow multi streams *and* multi tracks. By multi-track I would see a full music album in one file, seekable from track to track randomly. And for the big example, I would see a full DVD including one track for the main movie, one track for the deleted scenes, another for each of the extras... with, of course, multi-stream for multi-languages :)
I seen a suggestion in another post about using the chapters in Matroska to acheive this. Maybe it's the way to go, but I have no idea if this would be doable without changing anything to it.This would be done using chapters. In Matroska you can even do nested chapters that use a variety of audio and video tracks, so it should be very possible.Please do not take this as an insult, but I find Matroska format a bit complex. Not *that* complex. When I did my first experiments with it several months ago (maybe even more than one year, I don't remember) it was way to slow for my poor Anakin (Pentium 3 @ 500)With a CPU this fast, it should take less than 1% of you CPU usage to parse a Matroska file in real time. Any more than that is due to either a b0rked file or a b0rked parser.The only very little problem I noticed is that video runs at 3X speed after a seek to resynchronize with the audio; while better than AVI, it is still not as good as OggThis is just part of the design of the splitter. There has been some discussion before about allowing seeking options to be selectable, so you can choose your prefered seek method.
So my full idea was of a format which would support:
- multi-track
- multi-stream
- any multimedia content (video, audio, photo album (similar to Kodak Photo CD), presentation (similar to PowerPoint)Matroska supports all of this, and I even mentioned the image storage (http://forum.doom9.org/showthread.php?s=&threadid=66690) idea a few weeks ago, but got no responses so assumed noone was interested.While following those objectives:
- Very simple/fast parsing (it's ok if we have to accept a longer file creation period to achieve faster parser afterward)
- Fast and seamless seeking (of course timestamped synching)
- Low overhead
- Checksums everywhere so that any corruption is detectedParsing a Matroska file is not the simplest thing to do, but on any modern system (including embedded systems) it is such a small percentage of CPU usage as to not be a worry.
In alexnoe's tests Matroska had the lowest overhead of any general container.
You can already include checksums in the file. Currently nothing uses them, but it shouldn't be hard to add that ability to programs. At the least you could make a program that would display the location of errors in a file.[/QUOTE]
Tom|420
26th December 2003, 20:43
Ah! *Now* I am *satisfied*!
ChristianHJW I am using Borland C++Builder, not Delphi. Not that I don't like Delphi, but I don't know of that language. It's quite easi to read however, and I am usually able to use a Delphi source as a reference/example eventhough I never wrote a single line of code in Delphi.
if you mean something like multiple audio streams (multiple languages) than this is also already possible in as good as all containers
mp4 and ogm can also store multiple video streams already
I already know what is multi-stream, and I know it's supported even by Avi, I mentionned it in order to demonstrate that I knew what was the difference between a stream and a track, but seems like I having emphazised *multi-tracks* enough :P What I want is a multi-track in addition to multi-stream. I will study how Matroska stored chapters to see if it does it in a way which satisfies me.
I am not sure where I am going from here, but I will get the source code to Matroska and see where I can go. But being very interrested in a music album in a single file for "backup and archiving purpose" this is the first thing I will look into... oh and I should add chapter support to my homemade media player :)
I must catch a bus to get to the boxing day now... Hope I will survive my first boxing day (first time in my life I have more than $10 left after x-mas) :)
Atamido
27th December 2003, 10:51
Originally posted by Tom|420
...I am using Borland C++Builder, not Delphi. Good. Most of the code around Matroska is done in C++, as are the 'official' libs.I knew what was the difference between a stream and a track, but seems like I having emphazised *multi-tracks* enough :P What I want is a multi-track in addition to multi-stream. I will study how Matroska stored chapters to see if it does it in a way which satisfies me. There is a problem in the semantics of it. First, you should note that the words used were decided on by someone in France, so they don't always work the best in North American English.
In Matroska:
Track == A data stream. It can be Video, Audio, Video Overlay, etc.
Chapter == A seperate list of start and stop timecodes in specific Tracks with names attached.
So, in Matroska, a Track would be the equivalent of a whole Audio CD, and the Chapters would be the equivalent of Audio CD tracks.I am not sure where I am going from here, but I will get the source code to Matroska and see where I can go. But being very interrested in a music album in a single file for "backup and archiving purpose" this is the first thing I will look into... oh and I should add chapter support to my homemade media player :) Here is an example file. A whole CD was encoded as a single MP3 stream. It was imported into Matroska with the Audio track times set as chapters. Tags were added for additional info, and the CD cover was added as an attachment and will show as the thumbnail if the Shell Extension is installed. If you play the file in Media Player Classic you can skip to each Chapter and it will display the names of each. If you play the file in foobar2000 it will list each chapter as a seperate song and show each song as being individually tagged.
ELiZA WREN - Living on the Outside.mka (http://www.jkfanclub.com:81/ELiZA%20WREN%20-%20Living%20on%20the%20Outside.mka)
Note to mods, I have permission to distribute this file.
Koepi
27th December 2003, 12:03
Originally posted by Pamel
Note to mods, I have permission to distribute this file.
Phew, you can't imagine the look on my face when i saw that file :)
Best regards
Koepi
Tom|420
27th December 2003, 18:33
Originally posted by Pamel
[B]There is a problem in the semantics of it. First, you should note that the words used were decided on by someone in France, so they don't always work the best in North American English.
The dialect used in North America is called 'American' :)
Originally posted by Pamel
In Matroska:
Track == A data stream. It can be Video, Audio, Video Overlay, etc.
Chapter == A seperate list of start and stop timecodes in specific Tracks with names attached.
Ah! Let's accept the new semantics! A chapter really is the same as in my language, however 'Track' as described above corresponds to what I was refering to a 'Stream', where in my language a 'Track' was each of the independant contents which could be played sequentially or randomly, such as each music track on a music CD.
Originally posted by Pamel
So, in Matroska, a Track would be the equivalent of a whole Audio CD, and the Chapters would be the equivalent of Audio CD tracks. Here is an example file. A whole CD was encoded as a single MP3 stream. It was imported into Matroska with the Audio track times set as chapters. Tags were added for additional info, and the CD cover was added as an attachment and will show as the thumbnail if the Shell Extension is installed. If you play the file in Media Player Classic you can skip to each Chapter and it will display the names of each. If you play the file in foobar2000 it will list each chapter as a seperate song and show each song as being individually tagged.
This seems ok to me, however I wasn't able to play the attached file. Acutally it crashed both MPC and my homemade player (with a message about Visual C++ Runtime being requested to close unexpectedly), and Media Player played a different file which is in the same directory(!!). It might be that I have a problem which no one else has, or that I do not have the extensions you refered to (are they included with the Matroska DS filters or are they available as a seperate download?).
I will visit the Matroska website and get updated with everything. But not today, I'm kind of suffering the day after a night with way too much alcohol :P (Is there a word in English for that mood? In French it's called 'gueule de bois' [which is approximatelly 'wood mouth'])
Atamido
27th December 2003, 18:36
Originally posted by Tom|420
I'm kind of suffering the day after a night with way too much alcohol :P (Is there a word in English for that mood? I think the term you are looking for is "hang over".
Rash
6th January 2004, 04:45
I have one wish for Matroska. I wish it became the standard container pretty fast. I wish Windows Media Player supported it natively like AVI nowadays (no I don't use WMP, but newbies do). I wish Winamp supported it from install as well. I wish the new MPEG-4 standalone players could play Matroska files out of the box. I wish that when someone looked at a .mkv file said: "Oh, a video file" instead of "What kind of file is that?". But I know my wishes are not shared amongst many people in this forum. Most people here like it the way it is today, for enthusiasts.
Well, I know this would be almost impossible. The day Microsoft supports something open-source from fresh install, Microsoft won't be Micro$oft anymore. And if I had to bet on which container would become the future standard one I'd bet on mp4. The one with native support on programs, the one with native support on standalone players and the one newbies will recognize easier.
Gee, I said too much. :eek:
bilu
6th January 2004, 10:51
@Rash
Wrong thread - you should have posted here instead ;)
Wishes for 2004
http://forum.doom9.org/showthread.php?s=&threadid=67828
Bilu
Rash
6th January 2004, 16:10
Hihihi, sorry. :D
I only posted it here because those were my Matroska wishes. Most of the things I wanted for 2004 you guys already said on that topic. ;)
Blight
7th January 2004, 21:09
I think what tom wants is basically the DVD structure, but without the limit to support MPEG or the splitting to multiple files.
MPEG2 gives everything, multiple streams, tracks, branching tree playback, menus, you name it.
Frankly, if you have enough time on your hands, you can recreate a 100% compatible directshow DVD Navigator filter, that instead of navigating DVDs, it would inter-connect media file/s. But by maintaining the same DirectShow interface as the DVD Navigator filter, it would be somewhat trivial to make it work without having to write tons of menuing code.
This is something I could patch into Zoom Player in a day probably. And it would be the ultimate format.
The thing is, authoring something like that would be a pain, you'd have to have an authoring similar in scale to DVD Authoring tools. Lots of scripting involved in serious DVD Authoring, it's definately not for newbies.
ChristianHJW
8th January 2004, 18:21
Originally posted by Blight
[B]I think what tom wants is basically the DVD structure, but without the limit to support MPEG or the splitting to multiple files.
MPEG2 gives everything, multiple streams, tracks, branching tree playback, menus, you name it.
Frankly, if you have enough time on your hands, you can recreate a 100% compatible directshow DVD Navigator filter, that instead of navigating DVDs, it would inter-connect media file/s.
The matroska menue system specs are almost ready, and we hope to be able to start coding soon. I guess robux4 kept the system similar to DVD specs, to allow easy porting of existing DVD menues into matroska files ...
Blight
9th January 2004, 13:09
Christian:
The whole point of my post was that if you create a filter that is spec-identical to the DVD Navigator filter, nearly no special code would need to be written.
However, with a matroska specific menu system, you would have to write the entire menu code... It would probably mean a lot of work to support it player-side.
callmeace
9th January 2004, 18:00
My main concerns for any A/V container (as a user) is that:
(1)It is easy to port & non-proprietary. I want to be able to have the option to play my files on the O/S & platform of my choice. I don't want to be obliged to use - or tied to, an O/S or company (like M$). I want to be free, & have peace of mind that if some company stops supporting an O/S and 10 years from now a hardware architecture is not widely available I can still play my precious video backups on another platform.
(2)It works well. At the end of the day all I want as a user is to have a good immersive experience playing back my media without annoyances.
(3)Sure lots of nice options are good. And if they are designed well from the start & ground up this wouldn't necasserily involve having to have a plethora of unnecassery options for the user to choose though, i.e.:- one example of this is to really have a brainstorming session when designing your container on what TAGS should be available; the categories should just be there ready to easily view or fill in as desired as a standard. This just makes things quick and easy for the end user that has many files, it makes them less of a headache to sort when there aren't custom tag headings. If designed well there could be a range of non-ambiguous & non-vague tags that cover what is needed for all users. Other things like fast seeking & jump-to-time/frame, replay range etc are always nice
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.