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 ブロックのオーディオ データに保持されるサンプル数。この値は、ブロックごとのサンプル数が一定である圧縮フォーマットにおいて、バッファの見積もりに使用される。圧縮されたオーディオ データの各ブロックに含まれるサンプル数が可変の場合は、この値を 0 に設定してかまわない。その場合、バッファの見積もりと位置情報は、別の方法で取得する必要がある。
wReserved
オペレーティング システムによる内部的な使用のために予約されている。0 に設定する。
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 |
この構造体の詳細については、www.microsoft.com で提供されているドキュメント「Multiple Channel Audio Data and WAVE Files」を参照すること。
要件
** ヘッダー:**mmreg.h、ksproxy.h で宣言。
参照