リソース交換ファイル形式 (RIFF)
この概要では、.wav ファイルで使用されるリソース交換ファイル形式 (RIFF) について説明します。 RIFF は、XAudio2 のオーディオ データを読み込む一般的な形式です。
RIFF
RIFF ファイルは、チャンクと呼ばれるデータの複数の個別のセクションで構成 されます。
FOURCC 識別子
チャンク内のデータの種類は、4 文字コード (FOURCC) 識別子によって示されます。 FOURCC は、RIFF ファイル内のチャンクの種類を識別するために使用される 4 つの ASCII 文字を連結して作成される 32 ビット符号なし整数です。 たとえば、FOURCC "abcd" は、0x64636261としてリトル エンディアン システムで表されます。 FOURCC にはスペース文字を含めることができるため、"abc" は有効な FOURCC です。 オーディオ ファイルでは、FOURCC コードを使用して、オーディオ形式のチャンク、オーディオ データ チャンク、およびオーディオ形式に固有のその他のチャンクを識別します。
次の表は、XAudio2 でサポートされているオーディオ形式で期待できる FOURCC 識別子を示しています。
フォーマット | FOURCC 識別子 | 関連情報 |
---|---|---|
PCM 0 | "RIFF"、"fmt" 、"data" | |
Adpcm | "RIFF"、"fmt"、"data"、"smpl"、"wsmpl" | ADPCM 固有の FOURCC 識別子の説明については、「ADPCM の概要」を参照してください。 |
FOURCC 識別子 "RIFF"、"fmt"、および "data" は、サポートされているすべての形式に共通です。 次の表では、サポートされているすべての形式の FOURCC 識別子について説明します。
FOURCC 識別子 | 説明 |
---|---|
"RIFF" | データ セクションの最初の 4 バイトに "WAVE" または "XWMA" の値を持つファイルの種類と、そのデータ セクションの残りの部分にあるファイル内の他のチャンクを含む Standard RIFF チャンク。 |
"fmt" | オーディオ ファイルのフォーマット ヘッダーが含まれます。 このチャンク内のデータは、 WAVEFORMATEX、 WAVEFORMATEXTENSIBLE ADPCMWAVEFORMAT のいずれかの構造体に対応します。 |
"data" | オーディオ ファイルのオーディオ データが含まれています。 XAudio2 では、データ チャンクの内容がバッファーに読み取られ、XAUDIO2_BUFFER構造体の pAudioData メンバーとしてソース音声に渡されます。 |
Chunks
RIFF ファイルは、0 個以上の他のチャンクを含む RIFF チャンクで構成されます。
RIFF チャンクの形式は次のとおりです。
"RIFF"、fileSize、fileType、data
"RIFF" はリテラル FOURCC コード "RIFF" で、 fileSize はファイル内のデータのサイズを指定する 4 バイト値で、 fileType は特定のファイルの種類を識別する FOURCC です。 fileSize の値には、fileType FOURCC のサイズと、それに続くデータのサイズが含まれますが、"RIFF" FOURCC のサイズや fileSize のサイズは含まれません。 データは、任意の順序でチャンクで構成されます。
その他のチャンクの形式は次のとおりです。
chunkID, chunkSize, data
chunkID はチャンクに含まれるデータを識別する FOURCC で、chunkSize はチャンクのデータ セクションのサイズを示す 4 バイトの値であり、データは 0 バイト以上のデータです。 データは常に最も近い WORD 境界に埋め込まれます。 chunkSize は、チャンク内の有効なデータのサイズを指定します。 埋め込み、 chunkID のサイズ、 chunkSize のサイズは含まれません。
関連トピック