从无效设备错误恢复(空间音效)

如果客户端应用程序使用的音频终结点设备变为无效或终结点上的空间音频呈现格式更改,则 Microsoft 空间音频 API 的许多方法(例如 ISpatialAudioClientISpatialAudioObjectRenderStreamISpatialAudioObject)返回错误代码。 这些错误代码指示终结点设备已被拔出,或者音频硬件或关联的硬件资源已重新配置、禁用、删除、空间音频模式已更改或者无法使用。 应用程序通常可以从此错误中恢复。

指示无效设备错误的错误代码包括:

  • 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 实例激活 ISpatialAudioObjectRenderStream

请注意,对于上面列出的两种策略,相同的步骤可以应用于使用 ISpatialAudioObjectRenderStreamForMetadataISpatialAudioObjectRenderStreamForHrtf 接口的应用程序。 只需将上述步骤中的 ISpatialAudioObjectRenderStream 替换为元数据或 Hrtf 接口。

[从无效设备错误恢复](recovering-from-an-invalid-device-error.md)[流管理](stream-management.md)