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