Matroska 사양

멀티미디어 : 2009. 9. 23. 15:17
반응형
출처 : http://sourceforge.jp/projects/qtheora/wiki/MatroskaSpec
Matroska 사양

EBML EBML

Matroska は、バイナリフォーマットの XML というべき、EBML という構造に基づいている。 Matroska는 바이너리 형식의 XML로 불리우는, EBML라는 구조에 근거한다.

EBML では、基本的に EBML에서는 기본적으로

 Element ID (1-4 Byte) + Data Size (1-8 Byte) + Data (?? Byte) Element ID (1-4 Byte) + Data Size (1-8 Byte) + Data (? Byte) 

という構造で、データを格納する。 는 구조로 데이터를 저장한다.

XML で Element の内容に Element を格納できるのと同様に、Data 内部に他の Element を含めることができる。 XML의 Element의 내용에 Element를 저장할 수있는 것처럼, Data 내부에 다른 Element를 포함할 수있다.

Element ID と Data Size は、UTF-8 に似た可変長バイトでエンコードされ、コーディング方法は、以下のとおりである。 Element ID와 Data Size는 UTF - 8로 유사한 가변 바이트 인코딩, 코딩 방법은 다음과 같다.

Element ID Element ID

 1xxx xxxx                                  - Class A IDs (2^7 -1 possible values) (base 0x8X) 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) 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) 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) 0001 xxxx xxxx xxxx xxxx xxxx xxxx xxxx - Class D IDs (2 ^ 28-1 possible values (base 0x1X 0xXX 0xXX 0xXX) 

Data Size Data Size

 1xxx xxxx                                                                              - value 0 to  2^7-2 1xxx xxxx - value 0 to 2 ^ 7-2 
 01xx xxxx  xxxx xxxx                                                                   - value 0 to 2^14-2 01xx xxxx xxxx xxxx - value 0 to 2 ^ 14-2 
 001x xxxx  xxxx xxxx  xxxx xxxx                                                        - value 0 to 2^21-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 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 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 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 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 0000 0001 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx - value 0 to 2 ^ 56-2 

Matroska Matroska

Matroska は、非常に高機能のコンテナで、構成要素となる Element は多岐にわたるが、ここでは、ミニマルな構成について述べる。 Matroska는 아주 고급 컨테이너에서 구성 요소가되는 Element는 다방면에 걸친 그러나 여기에서는 미니멀한 구성에 대해 언급한다.

Header Header

EBML 構成要素で、ドキュメントタイプなど、ファイルに関する情報を保持する。 EBML 구성 요소의 문서 형식 등 파일 정보를 유지한다. Matroska では、ドキュメントタイプに、"matroska" を設定する。 Matroska는 문서 형식에 "matroska"을 설정합니다.

 EBML_ID_HEADER (0x1A45DFA3) EBML_ID_HEADER (0x1A45DFA3) 
   EBML_ID_DOCTYPE (0x4282) EBML_ID_DOCTYPE (0x4282) 
   その他 기타 

Segment Segment

Matroska のルート要素で、トップレベル構造を形成している。 Matroska의 루트 요소 최상위 구조를 형성하고있다.

 MATROSKA_ID_SEGMENT (0x18538067) MATROSKA_ID_SEGMENT (0x18538067) 
   MATROSKA_ID_SEEKHEAD (0x114D9B74) MATROSKA_ID_SEEKHEAD (0x114D9B74) 
   MATROSKA_ID_INFO     (0x1549A966) MATROSKA_ID_INFO (0x1549A966) 
   MATROSKA_ID_TRACKS   (0x1654AE6B) MATROSKA_ID_TRACKS (0x1654AE6B) 
   MATROSKA_ID_CLUSTER  (0x1F43B675) MATROSKA_ID_CLUSTER (0x1F43B675) 
   MATROSKA_ID_CUES     (0x1C53BB6B) MATROSKA_ID_CUES (0x1C53BB6B) 

Meta Seek Infomation Meta Seek Infomation

上位要素のファイル内での位置情報を格納する。 상위 요소 파일의 위치 정보를 저장한다. この情報を元に、ファイル内の各要素へランダムアクセスできるようになる。 이 정보를 파일의 각 요소에 램 수있게된다.

 MATROSKA_ID_SEEKHEAD (0x114D9B74) MATROSKA_ID_SEEKHEAD (0x114D9B74) 
   MATROSKA_ID_SEEKENTRY (0x4DBB) MATROSKA_ID_SEEKENTRY (0x4DBB) 
     MATROSKA_ID_SEEKID       (0x53AB) MATROSKA_ID_SEEKID (0x53AB) 
     MATROSKA_ID_SEEKPOSITION (0x53AC) MATROSKA_ID_SEEKPOSITION (0x53AC) 

Segment Infomation Segment Infomation

ファイル全体の情報を格納する。 파일에서 정보를 저장한다.

Track Track

ファイル内の各 Track に関する情報を格納する。 파일의 각 Track에 대한 정보를 저장합니다.

Cluster Cluster

Track 別の各メディアデータの全てが格納される。 Track 다른 각 미디어 데이터 전체가 포함된다.

Cueing Data Cueing Data

シークのためのインデックス情報を格納する。 탐색을위한 인덱스 정보를 저장한다.

Cluster Cluster

Cluster 要素内には、全てのメディアデータが格納される。 Cluster 요소는 모든 미디어 데이터가 저장된다. 一般的に Cluster 要素は、ファイル内に複数個存在する。 일반적으로 Cluster 요소는 파일에 복수개 존재한다.

ランダムアクセスの際の処理単位となるため、粒度は適切な大きさであることが望ましい。 랜덤 액세스시의 처리 단위로하며, 입도는 적당한 크기다는 것이 바람직하다.

 MATROSKA_ID_CLUSTER (0x1F43B675) MATROSKA_ID_CLUSTER (0x1F43B675) 
   MATROSKA_ID_CLUSTERTIMECODE (0xE7) MATROSKA_ID_CLUSTERTIMECODE (0xE7) 
   MATROSKA_ID_SIMPLEBLOCK (0xA3) MATROSKA_ID_SIMPLEBLOCK (0xA3) 
   MATROSKA_ID_BLOCKGROUP (0xA0) MATROSKA_ID_BLOCKGROUP (0xA0) 
     MATROSKA_ID_BLOCK (0xA1) MATROSKA_ID_BLOCK (0xA1) 
     MATROSKA_ID_BLOCKDURATION (0x9B) MATROSKA_ID_BLOCKDURATION (0x9B) 
     MATROSKA_ID_BLOCKREFERENCE (0xFB) MATROSKA_ID_BLOCKREFERENCE (0xFB) 

Cluster には、タイムスタンプ (MATROSKA_ID_CLUSTERTIMECODE) が付加される。 Cluster 타임 스탬프 (MATROSKA_ID_CLUSTERTIMECODE)가 추가된다.

各 Track 別のメディアデータは、Block に格納される。 각 Track 다른 미디어 데이터는 Block에 저장된다. Block に付加データが必要ない場合は、 MATROSKA_ID_SIMPLEBLOCK が、付加データがある場合は、MATROSKA_ID_BLOCKGROUP, MATROSKA_ID_BLOCK が使用される。 Block 추가 데이터가 필요없는 경우 MATROSKA_ID_SIMPLEBLOCK 그러나 추가 데이터가있는 경우 MATROSKA_ID_BLOCKGROUP, MATROSKA_ID_BLOCK가 사용된다.

一般的に、Cluster 内には、複数の Block が格納される。 일반적으로 Cluster에 여러 개의 Block이 포함된다.

Lacing Lacing

デコードアクセス単位となる Frame の大きさの粒度が小さい場合、データ格納効率を向上させるため、 Block 内に複数の Frame を格納することができる。 디코딩 액세스 단위가되는 Frame 크기의 입자 크기가 작으면 데이터 저장 효율을 향상시키기 위해, Block 내에 여러 개의 Frame을 저장할 수있다.

Block 内で、各 Frame の区切りをエンコードするため、次の4つのモードが規定されている。 Block에서 각 Frame의 분리를 인코딩하기 위해 다음 4 가지 모드가 규정되어있다.

  1. なし (Block == Frame) 없음 (Block == Frame)
  2. 固定長 고정 길이
  3. Xiph lacing Xiph lacing
  4. EBML lacing EBML lacing
반응형

'멀티미디어' 카테고리의 다른 글

Matroska Header  (0) 2009.09.29
리눅스에서 Mplayer 컴파일하기  (0) 2009.09.21
MPEG1 Audio Layer3 (mp3 파일구조) AAU  (0) 2009.09.20
Posted by Real_G