Platform SDK: DirectX

ステップ 2 : キャプチャ フォーマットの設定

[Visual Basic]

ここでは、C および C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectSound Visual Basic チュートリアル」を参照すること。

[C++]

DirectSoundCapture を作成した後で、ユーザーのデバイスがサポートしているウェーブ フォーマットを選択すべきである。これを行う 1 つの方法は、最も上のフォーマットから始めて、作成メソッドが成功するまで、各フォーマットのキャプチャ バッファを順に作成することである。(さまざまなフォーマットを順に作成する方法の例は、サンプル プログラム Fdfilter 内の Fdaudio.cpp を参照すること。) このチュートリアルでは単純に、デバイスの能力をチェックして、デフォルトの 16 ビット フォーマット (WAVEFORMATEX 構造体の宣言により定義されている) がサポートされているかどうかをチェックする。サポートされていない場合、すべてのデバイスがサポートしている 8 ビット フォーマットを選択する。

次のコードは、InitDSoundCapture 関数から抜粋したものである。

    DSCCAPS dsccaps;
 
    dsccaps.dwSize = sizeof(DSCCAPS);
    if FAILED(IDirectSoundCapture_GetCaps(lpdsc, &dsccaps))
        return FALSE;
 
    if ((dsccaps.dwFormats & WAVE_FORMAT_2M16) == 0)
    {
        wfx.nSamplesPerSec = 11025;
        wfx.nAvgBytesPerSec = 11025;
        wfx.nBlockAlign = 1;
        wfx.wBitsPerSample = 8; 
    }
 

アプリケーションで DirectSound の再生も利用している場合は、プライマリ バッファのフォーマットと互換性のあるキャプチャ フォーマットを選択しなければならない。詳細については、次の「ステップ 3 : キャプチャ バッファの作成」を参照すること。