WAVEFORMATEXTENSIBLE 構造体
WAVEFORMATEXTENSIBLE 構造体は、3 つ以上のチャンネルを持つフォーマットの波形オーディオ データのフォーマットを定義する。
この構造体は Platform SDK の一部で、Mmreg.h で宣言されているが、便宜上このドキュメントにも記載している。
構文
typedef struct {
WAVEFORMATEX Format;
union {
WORD wValidBitsPerSample;
WORD wSamplesPerBlock;
WORD wReserved;
} Samples;
DWORD dwChannelMask;
GUID SubFormat;
} WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
メンバ
Format
基本的なフォーマットを指定する WAVEFORMATEX 構造体。wFormatTag メンバは、Mmreg.h に定義された WAVE_FORMAT_EXTENSIBLE でなければならない。cbSize メンバには少なくとも 22 を指定する必要がある。
wValidBitsPerSample
信号の精度のビット数。通常は WAVEFORMATEX.wBitsPerSample と等しい。
wSamplesPerBlock
オーディオ データの 1 つの圧縮ブロックに含まれるサンプル数。この値は、バッファ見積もりに使われる。この値は、各ブロックに固定数のサンプルを持つ圧縮フォーマットと共に使われる。圧縮オーディオ データの各ブロックに可変数のサンプルが含まれる場合は、この値をゼロに設定してもかまわない。この場合、バッファ見積もりと位置情報は、別の方法で取得する必要がある。
wReserved
オペレーティング システムの内部使用のために予約済み。ゼロに設定すること。
dwChannelMask
スピーカ位置へのストリーム内のチャンネル割り当てを指定するビットマスク。「注意」を参照すること。
SubFormat
KSDATAFORMAT_SUBTYPE_PCM など、データのサブフォーマット。サブフォーマット情報は、WAVEFORMATEX 構造体の wFormatTag メンバのタグで提供される情報と似ている。
注意
dwChannelMask メンバは、マルチチャンネル ストリームにどのチャンネルがあるかを指定する。最下位ビットは左前スピーカに対応し、次の最下位ビットは右前スピーカに対応する、という具合である。次に示すように、各ビットは Ksmedia.h および Mmreg.h で順に定義されている。
スピーカ位置 | フラグ ビット |
SPEAKER_FRONT_LEFT | 0x1 |
SPEAKER_FRONT_RIGHT | 0x2 |
SPEAKER_FRONT_CENTER | 0x4 |
SPEAKER_LOW_FREQUENCY | 0x8 |
SPEAKER_BACK_LEFT | 0x10 |
SPEAKER_BACK_RIGHT | 0x20 |
SPEAKER_FRONT_LEFT_OF_CENTER | 0x40 |
SPEAKER_FRONT_RIGHT_OF_CENTER | 0x80 |
SPEAKER_BACK_CENTER | 0x100 |
SPEAKER_SIDE_LEFT | 0x200 |
SPEAKER_SIDE_RIGHT | 0x400 |
SPEAKER_TOP_CENTER | 0x800 |
SPEAKER_TOP_FRONT_LEFT | 0x1000 |
SPEAKER_TOP_FRONT_CENTER | 0x2000 |
SPEAKER_TOP_FRONT_RIGHT | 0x4000 |
SPEAKER_TOP_BACK_LEFT | 0x8000 |
SPEAKER_TOP_BACK_CENTER | 0x10000 |
SPEAKER_TOP_BACK_RIGHT | 0x20000 |
この構造体の詳細については、ドキュメント「Multiple Channel Audio Data and WAVE Files」(www.microsoft.com) を参照すること。