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_PCM1 つまたは 2 つのチャンネルがある PCM データ。なし
    WAVE_FORMAT_IEEE_FLOAT1 つまたは 2 つのチャンネルがある PCM データ。なし
    WAVE_FORMAT_EXTENSIBLE3 つ以上のチャンネルがあるか、1 つのチャンネル マスクを使用する PCM データ。WAVEFORMATEXTENSIBLE
    WAVE_FORMAT_ADPCMADPCM データ。ADPCMWAVEFORMAT
    WAVE_FORMAT_XMA2XMA2 データ。XMA2WAVEFORMATEX
    WAVE_FORMAT_WMAUDIO2xWMA データ。使用するフラグが、使用するエンコーダーに関連付けられます。PCM データと同様に、チャンネル数に応じて、なしまたは WAVEFORMATEXTENSIBLE
    WAVE_FORMAT_WMAUDIO3xWMA データ。使用するフラグが、使用するエンコーダーに関連付けられます。PCM データと同様に、チャンネル数に応じて、なしまたは WAVEFORMATEXTENSIBLE
  • nChannels
    Wave フォーム オーディオ データのチャンネル数です。モノラル データでは 1 つのチャンネル、ステレオ データでは 2 つのチャンネルが使用されます。

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

  • 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 フォーマット タイプの、サンプリングあたりのビット数です。wFormatTag が WAVE_FORMAT_PCM である場合、wBitsPerSample は 8 または 16 と等しくなる必要があります。PCM フォーマットでない場合は、フォーマット タグの製造元の仕様に従ってこのメンバーを設定する必要があります。wFormatTag が WAVE_FORMAT_EXTENSIBLE である場合、この値は、8 の倍数になります。一部の圧縮方式では wBitsPerSample の値を定義できないため、このメンバーの値にはゼロを指定できます。

  • cbSize
    WAVEFORMATEX 構造体の後ろに追加されるフォーマット情報のサイズ (バイト単位) です。この情報は、PCM フォーマット以外でも wFormatTag の追加属性を格納するために使用できます。wFormatTag で追加情報が必要ない場合は、このメンバーをゼロに設定する必要があります。このメンバーは、WAVE_FORMAT_PCM フォーマットの場合にのみ無視されます。 cbSize の値は、wFormat の説明の表に示した構造体を格納する sizeof を取り、sizeofWAVEFORMATEX 構造体を減算することによって指定できます。たとえば、WAVE_FORMAT_XMA2 フォーマットの値は、次のコードによって指定できます。

      sizeof(XMA2WAVEFORMATEX) - sizeof(WAVEFORMATEX)
    

解説 

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

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

要件

ヘッダー: Audiodefs.h 宣言

関連項目

XAudio2 の構造体