Platform SDK: DirectX |
DirectSoundCapture オブジェクトの IDirectSoundCapture::CreateCaptureBuffer メソッドを呼び出して、キャプチャ バッファを作成する。
このメソッドに渡されるパラメータの 1 つは DSCBUFFERDESC 構造体であり、これは希望のバッファの特性を記述している。この構造体の最後のメンバは、WAVEFORMATEX 構造体であるが、希望のウェーブ フォーマットの詳細に従ってこの構造体を初期化しなければならない。この構造体のメンバの情報は、「サウンド データ」を参照すること。
アプリケーションが DirectSound と DirectSoundCapture の両方を使う場合、キャプチャ バッファのフォーマットがプライマリ バッファのフォーマットと異なっていると、キャプチャ バッファの作成は失敗する。一部のカードはクロックを 1 つしか用意していないため、2 つの異なった周波数でキャプチャと再生を行えないのが原因である。
次の例では、およそ 1 秒分のデータを保持するキャプチャ バッファを設定する。
/* この例では、pDSC が DirectSoundCapture オブジェクトへの 有効なポインタであることを想定する。*/ DSCBUFFERDESC dscbd; LPDIRECTSOUNDCAPTUREBUFFER pDSCB; WAVEFORMATEX wfx = {WAVE_FORMAT_PCM, 2, 44100, 176400, 4, 16, 0}; // wFormatTag、nChannels、nSamplesPerSec、mAvgBytesPerSec、 // nBlockAlign、wBitsPerSample、cbSize dscbd.dwSize = sizeof(DSCBUFFERDESC); dscbd.dwFlags = 0; dscbd.dwBufferBytes = wfx.nAvgBytesPerSec; dscbd.dwReserved = 0; dscbd.lpwfxFormat = &wfx; pDSCB = NULL; HRESULT hr = pDSC->CreateCaptureBuffer(&dscbd, &pDSCB, NULL);
DirectSoundCapture.CreateCaptureBuffer メソッドを呼び出して、キャプチャ バッファを作成する。
このメソッドに渡される 1 つのパラメータは DSCBUFFERDESC 型であり、これは希望のバッファの特性を記述している。fxFormat メンバは WAVEFORMATEX 型であるが、希望のウェーブ フォーマットの詳細に従ってこの型を初期化しなければならない。
アプリケーションが DirectSound と DirectSoundCapture の両方を使う場合、キャプチャ バッファのフォーマットがプライマリ バッファのフォーマットと異なっていると、キャプチャ バッファの作成は失敗する。一部のカードはクロックを 1 つしか用意していないため、2 つの異なった周波数でキャプチャと再生を行えないのが原因である。
次の例では、およそ 1 秒分のデータを保持するキャプチャ バッファを設定する。
' DSC は DirectSoundCapture オブジェクト。 Dim dscbd As DSCBUFFERDESC Dim DSCB As DirectSoundCaptureBuffer Dim waveFormat As WAVEFORMATEX ' ウェーブ フォーマットを設定する。 waveFormat.nSize = LenB(waveFormat) waveFormat.nFormatTag = WAVE_FORMAT_PCM waveFormat.nChannels = 2 waveFormat.lSamplesPerSec = 22050 waveFormat.nBitsPerSample = 16 waveFormat.nBlockAlign = _ waveFormat.nBitsPerSample / 8 * WaveFormat.nChannels waveFormat.lAvgBytesPerSec = _ waveFormat.lSamplesPerSec * waveFormat.nBlockAlign ' DSCBUFFERDESC を設定する。 dscbd.lFlags = DSCBCAPS_DEFAULT dscbd.lBufferBytes = waveFormat.lAvgBytesPerSec dscbd.fxFormat = waveFormat ' キャプチャ バッファを作成する。 Set DSCB = DSC.CreateCaptureBuffer (dscbd)