Wiederherstellen nach einem Invalid-Device-Fehler (Räumlicher Sound)

Viele Der Methoden der Microsoft Spatial Audio-API, z. B. ISpatialAudioClient, ISpatialAudioObjectRenderStream und ISpatialAudioObject, geben Fehlercodes zurück, wenn das von der Clientanwendung verwendete Audioendpunktgerät ungültig ist oder das format für das Rendering räumlicher Audio auf dem Endpunkt geändert wird. Diese Fehlercodes deuten darauf hin, 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 nicht mehr verfügbar ist. Häufig kann die Anwendung nach diesem Fehler wiederhergestellt werden.

Fehlercodes, die auf einen Invalid-Device-Fehler hinweisen, umfassen Folgendes:

  • SPTLAUDCLNT_E_DESTROYED
  • AUDCLNT_E_DEVICE_INVALIDATED
  • AUDCLNT_E_RESOURCES_INVALIDATED
  • AUDCLNT_E_UNSUPPORTED_FORMAT
  • SPTLAUDCLNT_E_INTERNAL

Strategien für die Behandlung von Fehlern mit ungültigen Geräten

Die empfohlene Strategie für die Wiederherstellung nach einem Invalid-Device-Fehler hängt davon ab, ob die Anwendung ein bestimmtes Gerät basierend auf internen Anforderungen automatisch auswählt oder ob der Benutzer ein Gerät explizit aus einer Liste verfügbarer Geräte auswählen kann.

Standardaudiogerät

Wenn die Anwendung automatisch das Standardgerät auswählt, führen Sie die folgenden Schritte aus, um die Wiederherstellung durchzuführen.

  1. Geben Sie die ISpatialAudioObjectRenderStream - und ISpatialAudioClient-Schnittstelle sowie alle anderen räumlichen Audioschnittstellen frei, die zum Rendern verwendet werden.
  2. Rufen Sie IMMDeviceEnumerator::GetDefaultAudioEndpoint auf, um das aktuelle Standardaudiogerät abzurufen.
  3. Versuchen Sie, ISpatialAudioClient auf dem Audiogerät zu aktivieren.
  4. Aktivieren Sie ISpatialAudioObjectRenderStream.

Speziell ausgewähltes Audiogerät

Wenn die Anwendung ein bestimmtes Audiogerät auswählt, führen Sie zum Wiederherstellen die folgenden Schritte aus.

  1. Geben Sie die ISpatialAudioObjectRenderStream-Schnittstelle und alle anderen räumlichen Audioschnittstellen frei, die zum Rendern verwendet werden, aber geben Sie ISpatialAudioClient nicht frei.
  2. Verwenden Sie die aktuelle ISpatialAudioClient-instance, um ISpatialAudioObjectRenderStream zu aktivieren.

Beachten Sie, dass für beide oben aufgeführten Strategien dieselben 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.

[Wiederherstellung nach einem Invalid-Device Fehler] (recovering-from-an-invalid-device-error.md) [Streamverwaltung] (stream-management.md)