Partager via


Récupération d’une erreur de Invalid-Device (son spatial)

La plupart des méthodes de l’API Microsoft Spatial Audio, telles que ISpatialAudioClient, ISpatialAudioObjectRenderStream et ISpatialAudioObject, retournent des codes d’erreur si le périphérique de point de terminaison audio utilisé par l’application cliente devient non valide ou si le format de rendu audio spatial est modifié sur le point de terminaison. Ces codes d’erreur indiquent que l’appareil de point de terminaison a été débranché, ou que le matériel audio ou les ressources matérielles associées ont été reconfigurés, désactivés, supprimés, le mode audio spatial est modifié ou rendu indisponible. Souvent, l’application peut récupérer à partir de cette erreur.

Les codes d’erreur qui indiquent une erreur d’appareil non valide sont les suivants :

  • SPTLAUDCLNT_E_DESTROYED
  • AUDCLNT_E_DEVICE_INVALIDATED
  • AUDCLNT_E_RESOURCES_INVALIDATED
  • AUDCLNT_E_UNSUPPORTED_FORMAT
  • SPTLAUDCLNT_E_INTERNAL

Stratégies de gestion des erreurs d’appareil non valides

La stratégie recommandée pour la récupération d’une erreur d’appareil non valide varie selon que l’application sélectionne automatiquement un appareil spécifique en fonction des exigences internes ou qu’elle permet à l’utilisateur de sélectionner explicitement un appareil dans une liste d’appareils disponibles.

Périphérique audio par défaut

Si l’application sélectionne automatiquement l’appareil par défaut, procédez comme suit pour récupérer.

  1. Libérez les interfaces ISpatialAudioObjectRenderStream et ISpatialAudioClient et toutes les autres interfaces audio spatiales utilisées pour le rendu.
  2. Appelez IMMDeviceEnumerator::GetDefaultAudioEndpoint pour obtenir le périphérique audio par défaut actuel.
  3. Essayez d’activer ISpatialAudioClient sur le périphérique audio.
  4. Activez ISpatialAudioObjectRenderStream.

Périphérique audio spécifiquement sélectionné

Si l’application sélectionne un périphérique audio spécifique, procédez comme suit pour effectuer une récupération.

  1. Libérez l’interface ISpatialAudioObjectRenderStream et toutes les autres interfaces audio spatiales utilisées pour le rendu, mais ne publiez pas ISpatialAudioClient.
  2. Utilisez le instance ISpatialAudioClient actuel pour activer ISpatialAudioObjectRenderStream.

Notez que pour les deux stratégies répertoriées ci-dessus, les mêmes étapes peuvent être appliquées aux applications qui utilisent les interfaces ISpatialAudioObjectRenderStreamForMetadata ou ISpatialAudioObjectRenderStreamForHrtf . Remplacez simplement ISpatialAudioObjectRenderStream dans les étapes ci-dessus par les interfaces de métadonnées ou Hrtf.

[Récupération d’une erreur de Invalid-Device] (recovering-from-an-invalid-device-error.md) [Gestion des flux] (stream-management.md)