Поделиться через


Восстановление из ошибки недопустимого устройства (пространственный звук)

Многие методы API пространственного звука Майкрософт, такие как ISpatialAudioClient, ISpatialAudioObjectRenderStream и ISpatialAudioObject, возвращают коды ошибок, если клиентское приложение использует недопустимое или формат отрисовки пространственного звука изменяется в конечной точке. Эти коды ошибок указывают на то, что устройство конечной точки было отключено или что звуковое оборудование или связанные аппаратные ресурсы были перенастроены, отключены, удалены, пространственный звуковой режим изменен или недоступен для использования. Часто приложение может восстановиться после этой ошибки.

Коды ошибок, указывающие на ошибку недопустимого устройства, включают следующее:

  • SPTLAUDCLNT_E_DESTROYED
  • AUDCLNT_E_DEVICE_INVALIDATED
  • AUDCLNT_E_RESOURCES_INVALIDATED
  • AUDCLNT_E_UNSUPPORTED_FORMAT
  • SPTLAUDCLNT_E_INTERNAL

Стратегии обработки ошибок недопустимого устройства

Рекомендуемая стратегия восстановления из ошибки недопустимого устройства зависит от того, выбирает ли приложение определенное устройство на основе внутренних требований или позволяет пользователю явно выбрать устройство из списка доступных устройств.

Звуковое устройство по умолчанию

Если приложение автоматически выбирает устройство по умолчанию, выполните следующие действия для восстановления.

  1. Выпуск интерфейса ISpatialAudioObjectRenderStream и ISpatialAudioClient и других пространственных звуковых интерфейсов, используемых для отрисовки.
  2. Вызовите IMMDeviceEnumerator::GetDefaultAudioEndpoint , чтобы получить текущее звуковое устройство по умолчанию.
  3. Попытайтесь активировать ISpatialAudioClient на звуковом устройстве.
  4. Активируйте ISpatialAudioObjectRenderStream.

Специально выбранное звуковое устройство

Если приложение выбирает определенное звуковое устройство, выполните следующие действия для восстановления.

  1. Выпустите интерфейс ISpatialAudioObjectRenderStream и любые другие пространственные звуковые интерфейсы, используемые для отрисовки, но не выпускайте ISpatialAudioClient.
  2. Используйте текущий экземпляр ISpatialAudioClient для активации ISpatialAudioObjectRenderStream.

Обратите внимание, что для обоих стратегий, перечисленных выше, к приложениям, используюющим интерфейсы ISpatialAudioObjectRenderStreamForMetadata или ISpatialAudioObjectRenderStreamForHrtf . Просто замените ISpatialAudioObjectRenderStream на приведенные выше действия метаданными или интерфейсами Hrtf.

[Восстановление после ошибки недопустимого устройства] (recovering-from-an-invalid-device-error.md) [Управление потоками] (stream-management.md)