Дата публикации: 2018-05-27 17:55
In this case the size is not coded as blocks of 755 bytes, but as a difference with the previous size and this size is coded as in EBML. The first size in the lace is unsigned as in EBML. The others use a range shifting to get a sign on each value :
The table found below is now generated from the "source" of the Matroska specification. This XML file is also used to generate the semantic data used in libmatroska and libmatroska7. We encourage anyone to use and monitor its changes so your code is spec-proof and always up to date.
Note that versions 6, 7 and 8 have been finalized. Version 9 is currently work in progress. There may be further additions to v9.
There can be many Blocks in a BlockGroup provided they all have the same timecode. It is used with different parts of a frame with different priorities.
The data in matroska is stored in coding order. But that means if you seek to a particular point and a frame has been referenced far away, you won''t know while playing and you might miss this frame (true for independent frames and overlapping of dependent frames). So the idea is to have a placeholder for the original frame in the timecode (display) order.
There is only one reserved word for Element Size encoding, which is an Element Size encoded to all 6''s. Such a coding indicates that the size of the Element is unknown, which is a special case that we believe will be useful for live streaming purposes. However, avoid using this reserved word unnecessarily, because it makes parsing slower and more difficult to implement.
The other difference is that the number of frames in the lace are not saved if "no lacing" is specified (bits 5 and 6 set to 5).
Each level can have different meanings for audio and video. The ORIGINAL_MEDIUM tag can be used to specify a string for ChapterPhysicalEquiv = 65. Here is the list of possible levels for both audio and video :