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 で宣言。

参照