Microsoft DirectX 8.0 (Visual Basic)

キャプチャ バッファの作成

キャプチャ バッファを作成するには、DirectSoundCapture8.CreateCaptureBuffer メソッドを呼び出す。

このメソッドに渡されるパラメータの 1 つは DSCBUFFERDESC 構造体であり、これは目的のバッファの特性を記述している。fxFormat メンバは WAVEFORMATEX 型であるが、目的のウェーブ フォーマットの詳細に従ってこの型を初期化しなければならない。

アプリケーションが DirectSound8DirectSoundCapture8 の両方を使う場合、キャプチャ バッファのフォーマットがプライマリ バッファのフォーマットと異なっていると、キャプチャ バッファの作成は失敗する。一部のカードはクロックを 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)