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 つのチャンネルが使用されます。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 の値を定義できないため、このメンバーの値にはゼロを指定できます。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 宣言