Compartir a través de


Recuperación de un error de Invalid-Device (sonido espacial)

Muchos de los métodos de la API de audio espacial de Microsoft, como ISpatialAudioClient, ISpatialAudioObjectRenderStream e ISpatialAudioObject, devuelven códigos de error si el dispositivo de punto de conexión de audio que usa la aplicación cliente se convierte en no válido o se cambia el formato de representación de audio espacial en el punto de conexión. Estos códigos de error indican que el dispositivo de punto de conexión se ha desconectado o que el hardware de audio o los recursos de hardware asociados se han reconfigurado, deshabilitado, quitado, se cambia el modo de audio espacial o, de lo contrario, no está disponible para su uso. Con frecuencia, la aplicación puede recuperarse de este error.

Los códigos de error que indican un error de dispositivo no válido incluyen lo siguiente:

  • SPTLAUDCLNT_E_DESTROYED
  • AUDCLNT_E_DEVICE_INVALIDATED
  • AUDCLNT_E_RESOURCES_INVALIDATED
  • AUDCLNT_E_UNSUPPORTED_FORMAT
  • SPTLAUDCLNT_E_INTERNAL

Estrategias para controlar errores de dispositivo no válidos

La estrategia recomendada para recuperarse de un error de dispositivo no válido depende de si la aplicación selecciona automáticamente un dispositivo específico en función de los requisitos internos o permite al usuario seleccionar explícitamente un dispositivo de una lista de dispositivos disponibles.

Dispositivo de audio predeterminado

Si la aplicación selecciona automáticamente el dispositivo predeterminado, siga estos pasos para recuperarse.

  1. Libere la interfaz ISpatialAudioObjectRenderStream e ISpatialAudioClient y cualquier otra interfaz de audio espacial que se use para la representación.
  2. Llame a IMMDeviceEnumerator::GetDefaultAudioEndpoint para obtener el dispositivo de audio predeterminado actual.
  3. Intente activar ISpatialAudioClient en el dispositivo de audio.
  4. Active ISpatialAudioObjectRenderStream.

Dispositivo de audio seleccionado específicamente

Si la aplicación selecciona un dispositivo de audio específico, siga estos pasos para recuperarse.

  1. Libere la interfaz ISpatialAudioObjectRenderStream y cualquier otra interfaz de audio espacial que se use para la representación, pero no libere ISpatialAudioClient.
  2. Use la instancia ISpatialAudioClient actual para activar ISpatialAudioObjectRenderStream.

Tenga en cuenta que para ambas estrategias enumeradas anteriormente, se pueden aplicar los mismos pasos a las aplicaciones que usan las interfaces ISpatialAudioObjectRenderStreamForMetadata o ISpatialAudioObjectRenderStreamForHrtf . Simplemente reemplace ISpatialAudioObjectRenderStream en los pasos anteriores por los metadatos o las interfaces Hrtf.

[Recuperación de un error de Invalid-Device] (recovering-from-an-invalid-device-error.md) [Administración de transmisiones] (stream-management.md)