Share via


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) を参照すること。