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 つのチャンネルが使用されます。nChannels は XAUDIO2_MAX_AUDIO_CHANNELS 以下でなければなりません。nSamplesPerSec
サンプリング レートは 1 秒あたりのサンプル数 (Hz) で表します。wFormatTag が WAVE_FORMAT_PCM である場合、nSamplesPerSec の共通の値は 8.0 kHz、11.025 kHz、22.05 kHz、および 44.1 kHz です。PCM フォーマットでない場合は、フォーマット タグの製造元の仕様に従ってこのメンバーを計算する必要があります。nSamplesPerSec は、XAUDIO2_MIN_SAMPLE_RATE ~ XAUDIO2_MAX_SAMPLE_RATE でなければなりません。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 フォーマット タイプの、サンプリングあたりのビット数です。wBitsPerSample には、許容値に関する以下の制限があります。
wFormatTag が WAVE_FORMAT_PCM の場合、wBitsPerSample は 8 または 16 である必要があります。他の値はサポートされていません。
wFormatTag が WAVE_FORMAT_EXTENSIBLE である場合、この値は、8 の倍数になります。一部の圧縮方式では wBitsPerSample の値を定義できないため、このメンバーの値にはゼロを指定できます。
PCM フォーマットでない場合は、フォーマット タグの製造元の仕様に従ってこのメンバーを設定する必要があります。
cbSize
WAVEFORMATEX 構造体の後ろに追加されるフォーマット情報のサイズ (バイト単位) です。この情報は、PCM フォーマット以外でも wFormatTag の追加属性を格納するために使用できます。wFormatTag で追加情報が必要ない場合は、このメンバーをゼロに設定する必要があります。このメンバーは、WAVE_FORMAT_PCM フォーマットの場合にのみ無視されます。cbSize の値は、wFormat の説明の表に示した構造体を格納する sizeof を取り、sizeof WAVEFORMATEX 構造体を減算することによって指定できます。たとえば、WAVE_FORMAT_XMA2 フォーマットの値は、次のコードによって指定できます。
sizeof(XMA2WAVEFORMATEX) - sizeof(WAVEFORMATEX)
解説
ゼロ以外の cbSize の値を使用し、この構造体の最後に追加のフィールドを追加することで、特定のフォーマットに対するフォーマット固有の拡張子を定義できます。
WAVEFORMATEX のメンバーは、再生されるファイルの 'fmt ' RIFF チャンクに含まれる値に対応します。このチャンクからロードされる値には、Xbox 360 にファイルをロードするときに、バイト スワップが必要になります。
要件
ヘッダー: audiodefs.h で宣言されています。