Platform SDK: DirectX |
IDirectSound と IDirectSoundCapture は、固定周波数のサウンドによって構成されるウェーブフォーム オーディオ データを使って機能を果たす。サウンドの特定のフォーマットは、WAVEFORMATEX 構造体を使って記述できる。この構造体は Platform SDK ドキュメントの「Multimedia Structures」でドキュメント化されているが、簡便のためにここでも簡単に説明する。
typedef struct { WORD wFormatTag; WORD nChannels; DWORD nSamplesPerSec; DWORD nAvgBytesPerSec; WORD nBlockAlign; WORD wBitsPerSample; WORD cbSize; } WAVEFORMATEX;
wFormatTag メンバは、Microsoft が割り当てた一意の識別子を保持する。完全なリストはヘッダー ファイル Mmreg.h に記述されている。DirectSound で有効な唯一のタグは WAVE_FORMAT_PCM である。このタグは PCM (Pulse Code Modulation)、つまり各サンプルがサンプリング時点での振幅の信号を表す非圧縮フォーマットを意味する。DirectSoundCapture は、Audio Compression Manager を使うことにより、他のフォーマットのデータもキャプチャできる。
DirectSound で PCM 以外のデータを扱う方法の詳細については、「圧縮ウェーブ フォーマット」を参照すること。
nChannels メンバは、チャンネルの数を記述する。通常は 1 (モノラル) か 2 (ステレオ) である。ステレオ データの場合、サンプルはインターリーブされる。nSamplesPerSec メンバは、サンプリング レート (サンプリング周波数) をヘルツ (Hz) 単位で記述する。標準的な値は、11,025、22,050、44,100 である。
wBitsPerSample メンバは、各サンプルのサイズを記述する。通常は 8 ビットか 16 ビットである。nBlockAlign の値は、完全なサンプルを記録するのに必要なバイト数を意味し、PCM フォーマットでは (wBitsPerSample * nChannels / 8) に等しい値になる。nAvgBytesPerSec の値は、nBlockAlign と nSamplesPerSec の積である。
最後に、cbSize は特別なウェーブ フォーマットを記述するのに必要な追加フィールドのサイズを示す。PCM フォーマットでは、このメンバの値は常に 0 である。
DirectSound と DirectSoundCapture は、固定周波数のサウンドによって構成されるウェーブフォーム オーディオ データを使って機能を果たす。サウンドのフォーマットは、WAVEFORMATEX 型を使って記述できる。