この概要では、.wav ファイルで使用されるリソース交換ファイル形式 (RIFF) について説明します。 RIFF は、XAudio2 のオーディオ データの読み込み元となる一般的な形式です。
リフ
RIFF ファイルは、チャンクと呼ばれる複数の個別のデータ セクションで構成されます。
FOURCC 識別子
チャンク内のデータの種類は、4 文字コード (FOURCC) 識別子によって示されます。 FOURCC は、RIFF ファイル内のチャンク型を識別するために使用される 4 つの ASCII 文字を連結して作成された 32 ビット符号なし整数です。 たとえば、FOURCC "abcd" は、リトル エンディアン システムでは0x64636261として表されます。 FOURCC にはスペース文字を含めることができるため、"abc" は有効な FOURCC です。 オーディオ ファイルでは、FOURCC コードを使用して、オーディオ形式のチャンク、オーディオ データ チャンク、およびオーディオ形式に固有のその他のチャンクを識別します。
次の表は、XAudio2 でサポートされているオーディオ形式で期待できる FOURCC 識別子を示しています。
形式 | FOURCC 識別子 | 追加情報 |
---|---|---|
PCM | "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 メンバーとしてソースボイスに渡されます。 |
チャンク
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 のサイズ含まれません。
関連トピック
-
方法: XAudio2 でサウンドを再生する