(C)Copyright 2000 NTT Cyber Space Laboratories

TwinVQ データフォーマット説明書

TwinVQ Ver. 2.3

平成12年10月4日

NTT サイバースペース研究所
メディア処理プロジェクト

目次


1.導入

1.1 TwinVQ データの構造

TwinVQ ファイルは図1のように、「ヘッダ部」と「オーディオデータ部」の2つのデータブロックが順に並べられて構成されています(図1)。2つのデータブロックは欠けることなくこの順序で並んでいる必要があります。


図1: TwinVQ データの構造

1.1.1 ヘッダ部の構造

ヘッダ部は、「チャンク」と呼ばれるデータ構造で構成されています。図3のように、ヘッダ部自身がチャンクとなっており、ヘッダデータはそのサブチャンクとして記録されています。

ヘッダチャンクの ID は、4文字で構成される通常のチャンクIDと異なり、 "TWIN"+バージョン識別番号(8文字) の12文字で構成されています。現在サポートしているバージョンは1種類で、"TWIN97012000" というチャンクIDのみが有効です。

ヘッダデータを構成するサブチャンクは、コーデックの初期化に必要なパラメータが記録されている COMM チャンク以外ヘッダデータの詳細についてはセクション2を参照ください。

ヘッダデータ部は、"TWIN..." で始まるチャンクでもあるので、この説明書の中では、"TWINチャンク" とも呼びます。


図2:ヘッダ部の構成

1.1.2 オーディオデータ部

オーディオデータ部は、"DATA" の4文字始まるヘッダの後にTwinVQオーディオデータが続きます。オーディオデータ部にサイズを記録するフィールドはありません。オーディオデータのサイズはヘッダチャンク DSIZ で記述することができます。チャンクの呼び名として、"xxxx" チャンクとかかれていた場合、それは「IDが"xxxx"のチャンク」という意味です。

1.2 用語の説明

チャンク
汎用のデータ単位。図3のように、ID、サイズ、データの3つの部分で構成されます。チャンクを使うと様々に異なる型のデータを統一的に扱うことができます。TwinVQ では、ID は4文字からなる文字列で、この文字列によって情報の種類を識別します。サイズは unsigned long 型の整数で、チャンクのデータ部のサイズをバイト数で記録します。データ部にはIDに対応する種類のデータを記録します。
サブチャンク
チャンクのデータ部分に記録されているチャンク。
文字列チャンク
文字列のみで構成されているチャンク。TwinVQ の文字列チャンクでは、文字列に終端記号はなく、チャンクサイズにより文字列の長さを定義しています。
TwinVQ セットアップ情報
TwinVQ コーデックの初期化に必要なパラメータ群、COMM ヘッダチャンクに格納する。サンプルプログラムでは、これらのパラメータの受け渡しに headerInfo 構造体を使っている。
TwinVQ オーディオデータ
TwinVQ アルゴリズムを使って圧縮したオーディオデータ。
ID3v2
MP3 ファイルに補助情報をつけるためのタグフォーマット。TwinVQ フォーマットもヘッダチャンクの1つとしてこのタグを取り込むことができる。


図3:チャンク

1.3 データ型の定義

バイト数 説明
char 1 文字型
char[]   文字列型、長さは括弧内の整数で与えられる。括弧が空の場合 chunkSize により与えられる。
byte 1 1バイト符号なし整数型
byte[]   任意データ型、データは1バイト単位。長さは括弧内の整数で与えられる。括弧が空の場合 chunkSize により与えられる。
short 2 2バイト整数型
unsigned short 2 2バイト符号なし整数型
long 4 4バイト整数型
unsigned long 4 4バイト符号なし整数型
StringChunk   文字列チャンク型。以下のフィールドで構成されている。
char[4]        chunkID
unsigned long   chunkSize
byte[chunkSize] data



2.ヘッダ部を構成するサブチャンクの詳細

2.1 ヘッダチャンクの概要

ヘッダチャンクは、ヘッダ情報を記録するチャンクです。チャンク ID は4文字の文字列です。

ヘッダチャンクには、「標準チャンク」、「拡張チャンク」、「補助チャンク」という3つのカテゴリがあります。

標準チャンク
headerInfo 構造体に記録できる最小限のヘッダ情報を記録するカテゴリです。
拡張チャンク
標準チャンクに加えられた、さらに詳細な情報を記録するカテゴリです。
補助チャンク
拡張チャンクの一部ですが、文字列チャンクについて、2ヶ国語情報の副情報を記録するカテゴリです。このカテゴリは、拡張チャンク中のSCNDチャンクとして記録されます。補助チャンクにたいして、標準チャンクと(SCND以外の)補助チャンクをまとめて「通常チャンク」とも呼びます。

2.2 標準チャンクの一覧

以下の表は、標準チャンクのカテゴリに含まれるチャンクの一覧です。このうち COMM チャンクは必須チャンクです。

なお、表内の "ID3重複" の項は、ID3v2 タグのうち、同様の内容をもつフレームのIDを示しています。

表1:標準チャンクの一覧
チャンクID 内容 データフィールド フィールドの説明 ID3重複
COMM コーデックのセットアップパラメータ long channelMode
long bitRate
long samplingRate
long securityLevel
チャネル数のモード、0:モノラル, 1: ステレオ
ビットレート、1kbit/s 単位の整数
サンプリングレート、kHz 単位の切り捨て整数 (44.1 kHz ⇒ 44)
保護レベル、不使用、常に0
 
NAME 曲名 char[ ] name タイトル情報。フリーフォーム。 TIT2
COMT コメント char[ ] comment コメント情報。フリーフォーム。 COMM
AUTH 作者 char[ ] author 作者情報。フリーフォーム。 TPE1/2/3/4
(c) 著作権情報 char[ ] copyright 著作権情報。フリーフォーム。チャンク ID は、(C) の最後にスペースが入る4文字なので注意。 TCOP
FILE ファイル名 char[ ] fileName TwinVQ ファイル名称。フリーフォーム。  
DSIZ DATAチャンクのサイズ(byte) unsigned long dataSize オーディオデータのサイズ (byte) DSIZ

2.3 拡張チャンクの一覧

以下の表は、拡張チャンクのカテゴリに含まれるチャンクの一覧です。この中には、補助チャンクを格納しているSCNDチャンクも含まれています。

表2:拡張チャンクの一覧
チャンクID 内容 データフィールド 備考 ID3重複
ALBM アルバムタイトル char[ ] albumTitle   TALB
YEAR 録音された年月 short year
char month
月または年データを無効にするには 0 を入れる。 YEAR/TYER
ENCD エンコードした日付 short year
char month
char day
char hour
char minute
char timeZone
 各データフィールドを無効にするには 0 を入れる。 TDAT
TRAC トラック番号 short trackNumber   TRCK
LYRC 歌詞 char[ ] lyrics   USLT
GUID Globally Unique Identifier byte[16] guid   UFID
ISRC International Standard Record Code char[] isrc CDを特定するためのコード TSRC
WORD 作詞者 char[ ] wordsBy   TEXT
MUSC 作曲者 char[ ] musicBy   TCOM
ARNG 編曲者 char[ ] arrangedBy    
PROD プロデュース者 char[ ] producedBy    
REMX リミックス者 char[ ] remixedBy   TPE4
CDCT 指揮者 char[ ] conductedBy   TPE3
SING 歌手 char[ ] singer   TPE1
BAND バンド/オーケストラ/グループ名 char[ ] band   TPE2
PRSN 演奏者メンバー char[ ] personnel    
LABL レーベル char[ ] label   TPUB
NOTE ライナーノーツ char[ ] linerNotes    
SCND 補助情報 while ( StringChunk subChunks[ ]) ・言語の違いを吸収。文字列チャンクについて、主情報は通常のチャンクに記入するが、原題、訳詞などの補助情報は、SCNDチャンクのサブチャンクとして記入する。SCNDチャンクを使う場合に、どちらの言語を主情報として選択するかはエンコード側の判断に任せる。
・サブチャンクは文字列チャンクに限る。
・サブチャンクのデータ(文字列)の最初の2文字には、それぞれ通常のチャンクとSCNDチャンクで使われている文字コードを表す文字を格納する。各文字と文字コードの対応は以下の通り:
'0': iso-8859-1
'1': Unicode
'2': S-JIS
'3': JIS
'4': EUC
SCND/NAME⇔TIT3
EXTR 予約済み、用途は未定義      
_ID3 予約チャンク:ID3v2 タグ char[ ] data TwinVQ チャンクと重複した場合、どちらかを優先させる。  
_YMH ヤマハ様予約チャンク      
_NTT NTT 予約チャンク      

2.4 補助チャンクの一覧

補助チャンクのカテゴリに含まれるチャンクは、拡張チャンク中の SCND チャンク中にサブチャンクとして格納されています。これらのサブチャンクは、標準・補助チャンク中の文字列チャンクと同じIDを持ちます。以下のチャンクが補助チャンクとして使用可能です:
NAME, COMT, AUTH, (c) , ALBM, LYRC, WORD, MUSC, ARNG, PROD, REMX, CDCT, SING, BAND, PRSN, LABL, NOTE

3.ヘッダチャンクの扱いの基本方針