Microsoft DirectX 8.0 (Visual Basic) |
キャプチャ バッファを作成するには、DirectSoundCapture8.CreateCaptureBuffer メソッドを呼び出す。
このメソッドに渡されるパラメータの 1 つは DSCBUFFERDESC 構造体であり、これは目的のバッファの特性を記述している。fxFormat メンバは WAVEFORMATEX 型であるが、目的のウェーブ フォーマットの詳細に従ってこの型を初期化しなければならない。
アプリケーションが DirectSound8 と DirectSoundCapture8 の両方を使う場合、キャプチャ バッファのフォーマットがプライマリ バッファのフォーマットと異なっていると、キャプチャ バッファの作成は失敗する。一部のカードはクロックを 1 つしか用意していないため、2 つの異なった周波数でキャプチャと再生を行えないのが原因である。
次の例では、およそ 1 秒分のデータを保持するキャプチャ バッファを設定する。
' dsc は DirectSoundCapture8 オブジェクトである。 Dim dscbd As DSCBUFFERDESC Dim dscb As DirectSoundCaptureBuffer8 ' ウェーブ フォーマットを設定する。 With dscbd.fxFormat .nFormatTag = WAVE_FORMAT_PCM .nChannels = 2 .lSamplesPerSec = 22050 .nBitsPerSample = 16 .nBlockAlign = _ .nBitsPerSample / 8 * WaveFormat.nChannels .lAvgBytesPerSec = _ waveFormat.lSamplesPerSec * waveFormat.nBlockAlign .nSize = 0 ' WAVE_FORMAT_PCM の場合は無視される。 End With dscbd.lFlags = DSCBCAPS_DEFAULT dscbd.lBufferBytes = dscbd.fxFormat.lAvgBytesPerSec Set dscb = dsc.CreateCaptureBuffer (dscbd)