次の方法で共有


ストリーム ルーティング用のデバイス エンドポイントの取得

Windows 7 では、Media Foundation、DirectSound、Wave API などのコア オーディオ API を使用する高度なプラットフォーム API が、既存のデバイスから新しい既定のオーディオ エンドポイントへのストリーム切り替えを処理することで、ストリーム ルーティング機能を実装します。 これらの API を使用するメディア アプリケーション (たとえば、IMMDevice オブジェクトで IDirectSound オブジェクトまたは IBaseFilter オブジェクトをアクティブ化するアプリケーション) では、ソースに変更を加えずにストリーム ルーティング動作を使用します。

高レベル API は、IMMDeviceEnumerator::GetDefaultAudioEndpoint を通じて取得されるデバイス エンドポイントのストリーム ルーティングを実装します。 アプリケーションが既定のデバイスにストリーム配信する場合、ストリーム ルーティング機能は定義どおりに動作します。 ストリームは、既定のデバイスと同じであっても、他のメカニズムによって取得された場合は新しいデバイスに切り替えられません。

コア オーディオ API を直接使用するメディア アプリケーション (WASAPI クライアント) は、レンダリングまたはキャプチャ デバイスにカスタム ストリーム ルーティング実装を提供できます。 WASAPI クライアントは、既定のデバイスとして設定されているデバイスで開かれているストリームに限定することにより、高レベル API によって提供される補完をレプリケートできます。 既定のデバイスのエンドポイントへの参照を取得するには、クライアントが IMMDeviceEnumerator::GetDefaultAudioEndpoint を呼び出す必要があります。 この呼び出しでは、クライアントは、dataFlow パラメーターを指定することにより、レンダリングの既定のデバイスまたはキャプチャの既定のデバイスへのポインターが必要かどうかを示す必要があります。 さらに、クライアントは、ERole 属性 (eConsole または eCommunications) でエンドポイントに適切なロールを指定する必要があります。 eMultimedia は使用しないでください。

アプリケーションが他のデバイスにストリーム配信する場合、アプリケーションはエンドポイント ID 文字列を指定することにより (IMMDeviceEnumerator::GetDevice を呼び出すことにより) デバイスを取得できます。

デバイスが識別された後、WASAPI クライアントは、デバイスに送信されたデバイスとオーディオ セッション通知を処理することにより、ストリーム ルーティングの実装を提供できます。 これらの通知について詳しくは、「ストリーム ルーティングに関連する通知」をご覧ください。

MMDevice API について

WASAPI について

ストリーム ルーティング