= Matroska 仕様 = == EBML Matroska は、バイナリフォーマットの XML というべき、EBML という構造に基づいている。 EBML では、基本的に {{{ pre Element ID (1-4 Byte) + Data Size (1-8 Byte) + Data (?? Byte) }}} という構造で、データを格納する。 XML で Element の内容に Element を格納できるのと同様に、Data 内部に他の Element を 含めることができる。 Element ID と Data Size は、UTF-8 に似た可変長バイトでエンコードされ、コーディング方法は、 以下のとおりである。 === Element ID {{{ pre 1xxx xxxx - Class A IDs (2^7 -1 possible values) (base 0x8X) 01xx xxxx xxxx xxxx - Class B IDs (2^14-1 possible values) (base 0x4X 0xXX) 001x xxxx xxxx xxxx xxxx xxxx - Class C IDs (2^21-1 possible values) (base 0x2X 0xXX 0xXX) 0001 xxxx xxxx xxxx xxxx xxxx xxxx xxxx - Class D IDs (2^28-1 possible values) (base 0x1X 0xXX 0xXX 0xXX) }}} === Data Size {{{ pre 1xxx xxxx - value 0 to 2^7-2 01xx xxxx xxxx xxxx - value 0 to 2^14-2 001x xxxx xxxx xxxx xxxx xxxx - value 0 to 2^21-2 0001 xxxx xxxx xxxx xxxx xxxx xxxx xxxx - value 0 to 2^28-2 0000 1xxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx - value 0 to 2^35-2 0000 01xx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx - value 0 to 2^42-2 0000 001x xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx - value 0 to 2^49-2 0000 0001 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx - value 0 to 2^56-2 }}} == Matroska Matroska は、非常に高機能のコンテナで、構成要素となる Element は多岐にわたるが、 ここでは、ミニマルな構成について述べる。 === Header EBML 構成要素で、ドキュメントタイプなど、ファイルに関する情報を保持する。Matroska では、 ドキュメントタイプに、"matroska" を設定する。 {{{ pre EBML_ID_HEADER (0x1A45DFA3) EBML_ID_DOCTYPE (0x4282) その他 }}} === Segment Matroska のルート要素で、トップレベル構造を形成している。 {{{ pre MATROSKA_ID_SEGMENT (0x18538067) MATROSKA_ID_SEEKHEAD (0x114D9B74) MATROSKA_ID_INFO (0x1549A966) MATROSKA_ID_TRACKS (0x1654AE6B) MATROSKA_ID_CLUSTER (0x1F43B675) MATROSKA_ID_CUES (0x1C53BB6B) }}} === Meta Seek Infomation 上位要素のファイル内での位置情報を格納する。この情報を元に、ファイル内の 各要素へランダムアクセスできるようになる。 {{{ pre MATROSKA_ID_SEEKHEAD (0x114D9B74) MATROSKA_ID_SEEKENTRY (0x4DBB) MATROSKA_ID_SEEKID (0x53AB) MATROSKA_ID_SEEKPOSITION (0x53AC) }}} === Segment Infomation ファイル全体の情報を格納する。 === Track ファイル内の各 Track に関する情報を格納する。 === Cluster Track 別の各メディアデータの全てが格納される。 === Cueing Data シークのためのインデックス情報を格納する。