Wiederherstellen nach einem Invalid-Device-Fehler (Räumlicher Sound)
Viele der Methoden der Microsoft Spatial Audio-API, z. B. ISpatialAudioClient, ISpatialAudioObjectRenderStreamund ISpatialAudioObject,geben Fehlercodes zurück, wenn das von der Clientanwendung verwendete Audioendpunktgerät ungültig wird oder das Renderingformat für räumliche Audiodaten auf dem Endpunkt geändert wird. Diese Fehlercodes geben an, dass das Endpunktgerät nicht angeschlossen wurde oder dass die Audiohardware oder die zugehörigen Hardwareressourcen neu konfiguriert, deaktiviert, entfernt, der räumliche Audiomodus geändert oder anderweitig für die Verwendung nicht verfügbar gemacht wurde. Häufig kann die Anwendung nach diesem Fehler wiederhergestellt werden.
Fehlercodes, die auf einen Fehler mit ungültigen Geräten hinweisen, umfassen Folgendes:
- SPTLAUDCLNT_E_DESTROYED
- AUDCLNT_E_DEVICE_INVALIDATED
- AUDCLNT_E_RESOURCES_INVALIDATED
- AUDCLNT_E_UNSUPPORTED_FORMAT
- SPTLAUDCLNT_E_INTERNAL
Strategien zur Behandlung von Fehlern mit ungültigen Geräten
Die empfohlene Strategie für die Wiederherstellung nach einem Fehler aufgrund eines ungültigen Geräts hängt davon ab, ob die Anwendung basierend auf internen Anforderungen automatisch ein bestimmtes Gerät auswählt oder es dem Benutzer ermöglicht, ein Gerät explizit aus einer Liste der verfügbaren Geräte auszuwählen.
Standardaudiogerät
Wenn die Anwendung automatisch das Standardgerät auswählt, verwenden Sie die folgenden Schritte, um die Wiederherstellung zu durchführen.
- Geben Sie die ISpatialAudioObjectRenderStream- und ISpatialAudioClient-Schnittstelle sowie alle anderen räumlichen Audioschnittstellen frei, die für das Rendering verwendet werden.
- Rufen Sie IMMDeviceEnumerator::GetDefaultAudioEndpoint auf, um das aktuelle Standardaudiogerät abzurufen.
- Versuchen Sie, ISpatialAudioClient auf dem Audiogerät zu aktivieren.
- Aktivieren Sie ISpatialAudioObjectRenderStream.
Speziell ausgewähltes Audiogerät
Wenn die Anwendung ein bestimmtes Audiogerät auswählt, verwenden Sie die folgenden Schritte zum Wiederherstellen.
- Geben Sie die ISpatialAudioObjectRenderStream-Schnittstelle und alle anderen räumlichen Audioschnittstellen frei, die zum Rendern verwendet werden, aber lassen Sie ISpatialAudioClient nicht frei.
- Verwenden Sie die aktuelle ISpatialAudioClient-Instanz, um ISpatialAudioObjectRenderStream zu aktivieren.
Beachten Sie, dass für beide oben aufgeführten Strategien die gleichen Schritte auf Anwendungen angewendet werden können, die die Schnittstellen ISpatialAudioObjectRenderStreamForMetadata oder ISpatialAudioObjectRenderStreamForHrtf verwenden. Ersetzen Sie einfach ISpatialAudioObjectRenderStream in den obigen Schritten durch die Metadaten- oder Hrtf-Schnittstellen.
Zugehörige Themen
- [Wiederherstellen nach einem Invalid-Device-Fehler](recovering-from-an-invalid-device-error.md) [Streamverwaltung](stream-management.md)