WAVEFORMATEX
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 データの場合、この値は WAVE_FORMAT_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 である場合、nAvgBytesPerSec は nSamplesPerSec と nBlockAlign の積に等しくなければならない。PCM フォーマットでない場合は、メーカーのフォーマット タグの仕様に従ってこのメンバを計算する必要がある。
nBlockAlign
ブロック アライメント (バイト単位)。ブロック アライメントは、wFormatTag フォーマット タイプのデータの最小単位である。wFormatTag が WAVE_FORMAT_PCM または WAVE_FORMAT_EXTENSIBLE である場合、nBlockAlign は nChannels と wBitsPerSample の積を 8 で割った値 (バイトあたりのビット数) に等しくなければならない。PCM フォーマットでない場合は、メーカーのフォーマット タグの仕様に従ってこのメンバを計算する必要がある。
ソフトウェアは、データの複数の nBlockAlign バイトを、一度に処理しなければならない。デバイスに書き込むデータ、デバイスから読み込むデータは、常にブロックの先頭から開始しなければならない。たとえば、PCM データの再生を、サンプルの中間 (つまり、非ブロック アライメントの境界) で開始することは不正である。
wBitsPerSample
wFormatTag フォーマット タイプの、サンプリングあたりのビット数。wFormatTag が WAVE_FORMAT_PCM である場合、wBitsPerSample は 8 または 16 でなければならない。PCM フォーマットでない場合は、メーカーのフォーマット タグの仕様に従ってこのメンバを設定する必要がある。wFormatTag が WAVE_FORMAT_EXTENSIBLE である場合は、任意の 8 の倍数を設定できる。 圧縮スキームが wBitsPerSample の値を定義できないこともあるので、このメンバは 0 となる。
cbSize
WAVEFORMATEX 構造体の後ろに追加されるフォーマット情報のサイズ (バイト単位)。この情報を非 PCM フォーマットで使って、wFormatTag の追加属性を格納することができる。wFormatTag で必要な追加情報がない場合、このメンバは 0 に設定しなければならない。WAVE_FORMAT_PCM フォーマットでは (そして WAVE_FORMAT_PCM フォーマットの場合に限り)、このメンバは無視される。
要件
** ヘッダー:**mmreg.h で宣言。
参照