Date

Windows Vista では Core Audio API と呼ばれるオーディオデバイスを低レイテンシで制御するためのAPIがある。IMMDeviceEnumeratorを用いて、オーディオ入出力の端点を表すIMMDeviceというインターフェイスを取得することができる。

IMMDevice::Activate呼び出すことにより、実際の録音・再生を行うためのインターフェイスIAudioClientを取得する。このメソッドの引数にIBaseFilterのIIDを渡すことによりIAudioClientではなく、IBaseFilter、すなわちDirectShowフィルタとして取得できる。

1
2
3
4
// IAudioClientを使いたいとき
audio_device->Activate(__uuidof(IAudioClient), CLSCTX_ALL,NULL, (void**)&client);
// DirectShowフィルタとして取得したいとき
audio_device->Activate(__uuidof(IBaseFilter), CLSCTX_ALL,NULL, (void**)&filter);

Comments

comments powered by Disqus