WAVEFORMATEX 構造体

WAVEFORMATEX 構造体は、ウェーブ フォーム オーディオ データのフォーマットを定義します。この構造体には、Wave フォーム オーディオ データ形式すべてに共通のフォーマット情報のみが含まれます。追加情報が必要なフォーマットの場合は、この構造体は追加情報を含む別の構造体の最初のメンバーとして含まれます。

構文

typedef struct tWAVEFORMATEX {    WORD wFormatTag;    WORD nChannels;    DWORD nSamplesPerSec;    DWORD nAvgBytesPerSec;    WORD nBlockAlign;    WORD wBitsPerSample;    WORD cbSize;} WAVEFORMATEX, *PWAVEFORMATEX, *LPWAVEFORMATEX;

メンバー

  • wFormatTag
    Wave フォーム オーディオ フォーマット タイプです。

    さまざまな圧縮アルゴリズムのフォーマット タグが、Microsoft Corporation で登録されています。次の表に、使用可能なフォーマット タグを示します。

    Format Tag データ フォーマット WAVEFORMATEX を格納するデータ構造体
    WAVE_FORMAT_PCM 1 つまたは 2 つのチャンネルがある PCM データ。 なし
    WAVE_FORMAT_IEEE_FLOAT 1 つまたは 2 つのチャンネルがある PCM データ。 なし
    WAVE_FORMAT_EXTENSIBLE 3 つ以上のチャンネルがあるか、1 つのチャンネル マスクを使用する PCM データ。 WAVEFORMATEXTENSIBLE
    WAVE_FORMAT_ADPCM ADPCM データ。 ADPCMWAVEFORMAT
    WAVE_FORMAT_XMA2 XMA2 データ。 XMA2WAVEFORMATEX
    WAVE_FORMAT_WMAUDIO2 xWMA データ。使用するフラグが、使用するエンコーダーに関連付けられます。 PCM データと同様に、チャンネル数に応じて、なしまたは WAVEFORMATEXTENSIBLE
    WAVE_FORMAT_WMAUDIO3 xWMA データ。使用するフラグが、使用するエンコーダーに関連付けられます。 PCM データと同様に、チャンネル数に応じて、なしまたは WAVEFORMATEXTENSIBLE
  • nChannels
    Wave フォーム オーディオ データのチャンネル数です。モノラル データでは 1 つのチャンネル、ステレオ データでは 2 つのチャンネルが使用されます。nChannels は XAUDIO2_MAX_AUDIO_CHANNELS 以下でなければなりません。

  • nSamplesPerSec
    サンプリング レートは 1 秒あたりのサンプル数 (Hz) で表します。wFormatTag が WAVE_FORMAT_PCM である場合、nSamplesPerSec の共通の値は 8.0 kHz、11.025 kHz、22.05 kHz、および 44.1 kHz です。PCM フォーマットでない場合は、フォーマット タグの製造元の仕様に従ってこのメンバーを計算する必要があります。nSamplesPerSec は、XAUDIO2_MIN_SAMPLE_RATE ~ XAUDIO2_MAX_SAMPLE_RATE でなければなりません。

  • nAvgBytesPerSec
    フォーマット タグで必要な平均データ転送速度です。単位は 1 秒あたりのバイト数です。wFormatTag が WAVE_FORMAT_PCM である場合、nAvgBytesPerSecnSamplesPerSecnBlockAlign の積と等しくなる必要があります。PCM フォーマットでない場合は、フォーマット タグの製造元の仕様に従ってこのメンバーを計算する必要があります。

  • nBlockAlign
    ブロックのアライメントです (バイト単位)。ブロック アライメントは、wFormatTag フォーマット タイプのデータの最小単位です。wFormatTag が WAVE_FORMAT_PCM または WAVE_FORMAT_EXTENSIBLE である場合、nBlockAlign は、nChannelswBitsPerSample の積を 8 で割った値 (バイトあたりのビット数) と等しくなる必要があります。PCM フォーマットでない場合は、フォーマット タグの製造元の仕様に従ってこのメンバーを計算する必要があります。ソフトウェアは、データの nBlockAlign バイトの倍数を一度に処理する必要があります。デバイスに書き込むデータおよびデバイスから読み取るデータは、常に、ブロックの先頭から開始する必要があります。たとえば、サンプルの途中 (つまり、ブロックが調整されていない境界) で PCM データの再生を開始することは、無効です。

  • wBitsPerSample
    wFormatTag フォーマット タイプの、サンプリングあたりのビット数です。

    wBitsPerSample には、許容値に関する以下の制限があります。

    • wFormatTag が WAVE_FORMAT_PCM の場合、wBitsPerSample は 8 または 16 である必要があります。他の値はサポートされていません。

    • wFormatTag が WAVE_FORMAT_EXTENSIBLE である場合、この値は、8 の倍数になります。一部の圧縮方式では wBitsPerSample の値を定義できないため、このメンバーの値にはゼロを指定できます。

    • PCM フォーマットでない場合は、フォーマット タグの製造元の仕様に従ってこのメンバーを設定する必要があります。

  • cbSize
    WAVEFORMATEX 構造体の後ろに追加されるフォーマット情報のサイズ (バイト単位) です。この情報は、PCM フォーマット以外でも wFormatTag の追加属性を格納するために使用できます。wFormatTag で追加情報が必要ない場合は、このメンバーをゼロに設定する必要があります。このメンバーは、WAVE_FORMAT_PCM フォーマットの場合にのみ無視されます。

    cbSize の値は、wFormat の説明の表に示した構造体を格納する sizeof を取り、sizeof WAVEFORMATEX 構造体を減算することによって指定できます。たとえば、WAVE_FORMAT_XMA2 フォーマットの値は、次のコードによって指定できます。

    sizeof(XMA2WAVEFORMATEX) - sizeof(WAVEFORMATEX)

解説 

ゼロ以外の cbSize の値を使用し、この構造体の最後に追加のフィールドを追加することで、特定のフォーマットに対するフォーマット固有の拡張子を定義できます。

WAVEFORMATEX のメンバーは、再生されるファイルの 'fmt ' RIFF チャンクに含まれる値に対応します。このチャンクからロードされる値には、Xbox 360 にファイルをロードするときに、バイト スワップが必要になります。

要件

ヘッダー: audiodefs.h で宣言されています。

関連項目

XAudio2 の構造体