Ripristino da un errore di dispositivo non valido (suono spaziale)
Molti dei metodi dell'API Audio spaziale Microsoft, ad esempio ISpatialAudioClient, ISpatialAudioObjectRenderStream e ISpatialAudioObject, restituiscono codici di errore se il dispositivo endpoint audio usato dall'applicazione client non è valido o il formato di rendering audio spaziale viene modificato nell'endpoint. Questi codici di errore indicano che il dispositivo endpoint è stato scollegato o che l'hardware audio o le risorse hardware associate sono state riconfigurate, disabilitate, rimosse, la modalità audio spaziale viene modificata o altrimenti resa non disponibile per l'uso. Spesso, l'applicazione può recuperare da questo errore.
I codici di errore che indicano un errore di dispositivo non valido includono quanto segue:
- SPTLAUDCLNT_E_DESTROYED
- AUDCLNT_E_DEVICE_INVALIDATED
- AUDCLNT_E_RESOURCES_INVALIDATED
- AUDCLNT_E_UNSUPPORTED_FORMAT
- SPTLAUDCLNT_E_INTERNAL
Strategie per la gestione degli errori dei dispositivi non validi
La strategia consigliata per il ripristino da un errore di dispositivo non valido dipende dal fatto che l'applicazione selezioni automaticamente un dispositivo specifico in base ai requisiti interni o consenta all'utente di selezionare in modo esplicito un dispositivo da un elenco di dispositivi disponibili.
Dispositivo audio predefinito
Se l'applicazione seleziona automaticamente il dispositivo predefinito, seguire questa procedura per eseguire il ripristino.
- Rilasciare l'interfaccia ISpatialAudioObjectRenderStream e ISpatialAudioClient e qualsiasi altra interfaccia audio spaziale usata per il rendering.
- Chiama IMMDeviceEnumerator::GetDefaultAudioEndpoint per ottenere il dispositivo audio predefinito corrente.
- Tentare di attivare ISpatialAudioClient nel dispositivo audio.
- Attivare ISpatialAudioObjectRenderStream.
Dispositivo audio specifico selezionato
Se l'applicazione seleziona un dispositivo audio specifico, seguire questa procedura per eseguire il ripristino.
- Rilasciare l'interfaccia ISpatialAudioObjectRenderStream e qualsiasi altra interfaccia audio spaziale usata per il rendering, ma non rilasciare ISpatialAudioClient.
- Usare l'istanza di ISpatialAudioClient corrente per attivare ISpatialAudioObjectRenderStream.
Si noti che per entrambe le strategie elencate in precedenza, gli stessi passaggi possono essere applicati alle applicazioni che usano le interfacce ISpatialAudioObjectRenderStreamForMetadata o ISpatialAudioObjectRenderStreamForHrtf . Sostituire semplicemente ISpatialAudioObjectRenderStream nei passaggi precedenti con i metadati o le interfacce Hrtf.
Argomenti correlati
- [Ripristino da un errore di dispositivo non valido] (recovering-from-an-invalid-device-error.md) [Gestione flusso] (stream-management.md)