0
0

EBMLについて

Posted at

EBML (Extensible Binary Meta Language) はMatroska (.mkv) やWebM (.webm) などで使われるオープンなバイナリデータフォーマットです。

要素

EBMLの基本的な構成要素は要素です。要素はタグとデータからなります。

タグは名前とIDによって識別されます。名前は人間向けのドキュメンテーションなどで使われ、IDは直列化の際に使われます。例えば、Matroskaファイルのルート要素のタグの名前はSegment、IDは0x18538067です

要素はデータの種類によって次の8つに分類されます。

要素 データ
符号付き整数要素 符号付き整数
符号なし整数要素 符号なし整数
浮動小数点数要素 binary32またはbinary64
文字列要素 ASCII文字列
UTF-8要素 Unicode文字列
日付要素 ナノ秒精度の時刻
マスター要素 0つ以上の子要素
バイナリ要素 バイト列

EBML文書

EBML文書はEBMLヘッダーとEBML本体からなります。

EBMLヘッダーにはEBML文書についてのメタデータが記載されます (RFC 8794 11.2を参照) 。

EBML本体はルート要素と大域要素からなります。ルート要素にはEBML文書の本体データ (音声データや映像データなど) が格納されます。大域要素についてはRFC 8794 11.3を参照。

ルート要素の直接の子要素のことをトップレベル要素といいます。

EBMLストリーム

1つ以上のEBML文書を並べたものをEBMLストリームといいます。

直列化

要素は次のように直列化されます。

Element:
 +------+------+--------//---+
 |  ID  | Size | Data   //   |
 +------+------+--------//---+
  • ID タグのID
  • Size Dataの長さ
  • Data 直列化されたデータ

IDとSizeはいずれも可変長整数形式で直列化されます (RFC 8794 4を参照) 。データの直列化の方法は次の通りです。

データ 直列化
符号付き整数 2の補数表現、ビッグエンディアン
符号なし整数 ビッグエンディアン
浮動小数点数 binary32またはbinary64
文字列 ASCII
UTF-8 UTF-8
日付 2001-01-01T00:00:00Z からの経過時間 (ナノ秒) 、符号付き整数
マスター 子要素の直列化の連結
バイナリ そのまま

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0