다음을 통해 공유


Invalid-Device 오류에서 복구(공간 소리)

ISpatialAudioClient, ISpatialAudioObjectRenderStream 및 ISpatialAudioObject와 같은 Microsoft Spatial Audio API의 많은 메서드는 클라이언트 애플리케이션이 사용하는 오디오 엔드포인트 디바이스가 유효하지 않거나 공간 오디오 렌더링 형식이 엔드포인트에서 변경되면 오류 코드를 반환합니다. 이러한 오류 코드는 엔드포인트 디바이스가 분리되었거나 오디오 하드웨어 또는 관련 하드웨어 리소스가 다시 구성, 비활성화, 제거, 공간 오디오 모드가 변경되었거나 사용할 수 없음을 나타냅니다. 애플리케이션이 이 오류에서 복구할 수 있는 경우가 자주 있습니다.

잘못된 디바이스 오류를 나타내는 오류 코드에는 다음이 포함됩니다.

  • SPTLAUDCLNT_E_DESTROYED
  • AUDCLNT_E_DEVICE_INVALIDATED
  • AUDCLNT_E_RESOURCES_INVALIDATED
  • AUDCLNT_E_UNSUPPORTED_FORMAT
  • SPTLAUDCLNT_E_INTERNAL

잘못된 디바이스 오류를 처리하기 위한 전략

잘못된 디바이스 오류로부터 복구하기 위한 권장 전략은 애플리케이션이 내부 요구 사항에 따라 특정 디바이스를 자동으로 선택하는지 또는 사용자가 사용 가능한 디바이스 목록에서 디바이스를 명시적으로 선택할 수 있는지에 따라 달라집니다.

기본 오디오 디바이스

애플리케이션이 자동으로 기본 디바이스를 선택하는 경우 다음 단계를 사용하여 복구합니다.

  1. ISpatialAudioObjectRenderStreamISpatialAudioClient 인터페이스 및 렌더링에 사용되는 기타 공간 오디오 인터페이스를 해제합니다.
  2. IMMDeviceEnumerator::GetDefaultAudioEndpoint를 호출하여 현재 기본 오디오 디바이스를 가져옵니다.
  3. 오디오 디바이스에서 ISpatialAudioClient 를 활성화하려고 시도합니다.
  4. ISpatialAudioObjectRenderStream을 활성화합니다.

특히 선택한 오디오 장치

애플리케이션이 특정 오디오 디바이스를 선택하는 경우 다음 단계를 사용하여 복구합니다.

  1. ISpatialAudioObjectRenderStream 인터페이스 및 렌더링에 사용되지만 ISpatialAudioClient를 해제하지 않는 기타 공간 오디오 인터페이스를 해제합니다.
  2. 현재 ISpatialAudioClient instance 사용하여 ISpatialAudioObjectRenderStream을 활성화합니다.

위에 나열된 두 전략 모두 ISpatialAudioObjectRenderStreamForMetadata 또는 ISpatialAudioObjectRenderStreamForHrtf 인터페이스를 사용하는 애플리케이션에 동일한 단계를 적용할 수 있습니다. 위의 단계에서 ISpatialAudioObjectRenderStream 을 메타데이터 또는 Hrtf 인터페이스로 바꾸기만 하면 됩니다.

[Invalid-Device 오류에서 복구] (recovering-from-an-invalid-device-error.md) [스트림 관리] (stream-management.md)