WAVEFORMATEX 構造体 (mmeapi.h)

WAVEFORMATEX 構造体は Waveform オーディオ データの形式を定義します。 この構造には、すべての波形オーディオ データ形式に共通の書式情報のみが含まれます。 追加情報を必要とする形式の場合、この構造体は、追加情報と共に、別の構造体の最初のメンバーとして含まれます。

2 つ以上のチャネルまたは 16 ビットを超えるサンプル サイズをサポートする形式は、WAVEFORMAT 構造体を含む WAVEFORMATEXTENSIBLE 構造体で記述できます。

構文

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

メンバー

wFormatTag

波形オーディオ形式の種類。 書式タグは、多くの圧縮アルゴリズムのために Microsoft Corporation に登録されています。 書式タグの完全な一覧は、Mmreg.h ヘッダー ファイルにあります。 1 チャネルまたは 2 チャネルの PCM データの場合、この値はWAVE_FORMAT_PCMする必要があります。 この構造体が WAVEFORMATEXTENSIBLE 構造体に含まれている場合、この値はWAVE_FORMAT_EXTENSIBLEする必要があります。

nChannels

波形オーディオ データ内のチャネルの数。 モナラル データは 1 つのチャネルを使用し、ステレオ データは 2 つのチャネルを使用します。

nSamplesPerSec

サンプル レート (1 秒あたりのサンプル数 (ヘルツ)。 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 に等しい必要があります。 PCM 以外の形式の場合、このメンバーは、製造元の書式タグの仕様に従って設定する必要があります。 wFormatTag がWAVE_FORMAT_EXTENSIBLEの場合、この値は 8 の整数の倍数にすることができ、必ずしもサンプル サイズではないコンテナー サイズを表します。たとえば、20 ビットのサンプル サイズは 24 ビット コンテナー内にあります。 一部の圧縮スキームでは wBitsPerSample の値を定義できないため、このメンバーは 0 にすることができます。

cbSize

WAVEFORMATEX 構造体の末尾に追加された追加の書式情報のサイズ (バイト単位)。 この情報は、PCM 以外の形式で使用して 、wFormatTag の追加の属性を格納できます。 wFormatTag で追加情報が必要ない場合は、このメンバーを 0 に設定する必要があります。 WAVE_FORMAT_PCM形式 (およびWAVE_FORMAT_PCM形式のみ) の場合、このメンバーは無視されます。 この構造体が WAVEFORMATEXTENSIBLE 構造体に含まれている場合、この値は少なくとも 22 である必要があります。

解説

追加情報を使用する形式の例として、Microsoft Adaptive Delta Pulse Code Modulation (MS-ADPCM) 形式があります。 MS-ADPCM の wFormatTag がWAVE_FORMAT_ADPCM。 通常、cbSize メンバーは 32 に設定されます。 WAVE_FORMAT_ADPCMに格納される追加情報は、波形オーディオ データのエンコードとデコードに必要な係数ペアです。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
Header mmeapi.h (Mmreg.h を含む)

関連項目

波形オーディオ

波形構造