Abrufen des Geräteendpunkts für das Streamrouting
In Windows 7 implementieren allgemeine Plattform-APIs, die Core-Audio-APIs wie Media Foundation, DirectSound und Wave-APIs verwenden, das Streamroutingfeature, indem sie den Streamwechsel von einem vorhandenen Gerät zu einem neuen Standardaudioendpunkt verarbeiten. Medienanwendungen, die diese APIs verwenden (z. B. eine Anwendung, die ein IDirectSound - oder IBaseFilter-Objekt für ein IMMDevice-Objekt aktiviert) verwenden das Streamroutingverhalten ohne Änderungen an der Quelle.
Die allgemeinen APIs implementieren das Streamrouting für den Geräteendpunkt, der über IMMDeviceEnumerator::GetDefaultAudioEndpoint abgerufen wird. Wenn eine Anwendung an das Standardgerät streamt, funktioniert das Streamroutingfeature wie definiert. Streams werden nicht auf das neue Gerät umgestellt, wenn es von einem anderen Mechanismus abgerufen wird, auch wenn es mit dem Standardgerät identisch ist.
Eine Medienanwendung, die Core Audio-APIs direkt (WASAPI-Client) verwendet, kann eine benutzerdefinierte Streamroutingimplementierung für jedes Rendering- oder Aufnahmegerät bereitstellen. Ein WASAPI-Client kann die von den allgemeinen APIs bereitgestellte Implemetation replizieren, indem er sie auf Datenströme beschränkt, die auf Geräten geöffnet werden, die als Standardgerät festgelegt sind. Um einen Verweis auf den Endpunkt des Standardgeräts abzurufen, muss der Client IMMDeviceEnumerator::GetDefaultAudioEndpoint aufrufen. In diesem Aufruf muss der Client angeben, ob er einen Zeiger auf das Renderingstandardgerät oder das Standardgerät für die Aufnahme erfordert, indem er den dataFlow-Parameter angibt. Der Client muss auch die entsprechende Rolle für den Endpunkt im ERole-Attribut (eConsole oder eCommunications) angeben. Verwenden Sie nicht eMultimedia.
Wenn die Anwendung an ein anderes Gerät streamt, kann die Anwendung das Gerät abrufen, indem sie eine Endpunkt-ID-Zeichenfolge angibt (durch Aufrufen von IMMDeviceEnumerator::GetDevice).
Nachdem das Gerät identifiziert wurde, kann der WASAPI-Client die Implementierung für das Streamrouting bereitstellen, indem er die für das Gerät gesendeten Geräte- und Audiositzungsbenachrichtigungen verarbeitet. Weitere Informationen zu diesen Benachrichtigungen finden Sie unter Relevante Benachrichtigungen für das Streamrouting.
Zugehörige Themen