[Matroska-devel] conflicts between EBML specs and MKV specs

Dave Rice dave at dericed.com
Sun Jul 19 22:26:26 CEST 2015

Hi all,
There is some overlap between the EBML specs at http://matroska-org.github.io/libebml/specs.html and the Matroska specs at http://matroska.org/technical/specs/index.html. I propose at some point that the EBML specs are removed from the Matroska specs and referenced rather than introduced redundantly, but for now here is a list of where these two specifications disagree.

Within the EBML spec DocType has no default value while the Matroska spec says that ‘mastroska’ is the default value. Thus a Matroska parser would consider an EBML doc with no DocType element to be a matroska file while an EBML parser would read that as undefined or invalid.

“Global Elements”
In the EBML spec CRC-32 and Void Elements may appear at level 1 and higher. In the Matroska spec CRC-32 and Void are global elements "can be found at any level”. MKV specs allow Void/CRC at Level 0, but this is invalid for EBML. Is there anything out there that writes Void or CRC at level 0?

The MKV spec adds this phrase to the CRC Element defintiion: "The CRC in use is the IEEE CRC32 Little Endian”. Is this complete?

There are a lot of level disagreements between the greyed out part of the Matroska spec and the EBML spec.

For these conflicts is it safe to presume that the EBML spec is correct (‘matroska’ is not default for DocType, Void/CRC are level 1+)?

Best Regards,
Dave Rice

More information about the Matroska-devel mailing list