Microsoft DirectX 8.0 (C++)

WAVEFORMATEX

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

この構造体は Platform SDK の一部であり、Dsound.h では宣言されない。便宜上ここで説明している。

typedef struct { 
    WORD  wFormatTag; 
    WORD  nChannels; 
    DWORD nSamplesPerSec; 
    DWORD nAvgBytesPerSec; 
    WORD  nBlockAlign; 
    WORD  wBitsPerSample; 
    WORD  cbSize; 
} WAVEFORMATEX; 
 

メンバ

wFormatTag
ウェーブフォーム オーディオ フォーマットのタイプ。多くの圧縮アルゴリズムのフォーマット タグが、Microsoft で登録されている。フォーマット タグの完全なリストは、ヘッダー ファイル Mmreg.h に記述されている。1 チャンネルまたは 2 チャンネル PCM データの場合、この値は WAVEFORMAT_PCM となる。
nChannels
ウェーブフォーム オーディオ データのチャンネル数。モノラル データは 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 である場合、nBlockAlignnChannelswBitsPerSample の積を 8 で割った値 (バイトあたりのビット数) に等しくなる必要がある。PCM フォーマットでない場合、このメンバはメーカーのフォーマット タグの仕様に従って計算する必要がある。

ソフトウェアは、複数の nBlockAlign バイトを、一度に処理しなければならない。デバイスに書き込むデータ、およびデバイスから読み込むデータは、常にブロックの先頭から開始しなければならない。たとえば、PCM データの再生を、サンプルの中間 (つまり、非ブロック整列の境界) で開始することは不正である。

wBitsPerSample
wFormatTag フォーマット タイプの、サンプリングあたりのビット数。wFormatTag が WAVE_FORMAT_PCM である場合、wBitsPerSample は 8 または 16 とする。wFormatTag が WAVE_FORMAT_EXTENSIBLE である場合は、任意の 8 の倍数を設定できる。
cbSize
WAVEFORMATEX 構造体の後ろに追加されるフォーマット情報のサイズ (バイト単位)。この情報を非 PCM フォーマットで使用して、wFormatTag の追加属性を格納することができる。wFormatTag で必要な追加情報がない場合、このメンバは 0 に設定しなければならない。WAVE_FORMAT_PCM フォーマットでは、このメンバは無視される。

動作環境

  ヘッダー : mmreg.h で宣言。

参照

WAVEFORMATEXTENSIBLE