次の方法で共有


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

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 について

ストリーム ルーティング