(空间音效恢复 Invalid-Device 错误)

如果客户端应用程序所使用的音频终结点设备无效,或者终结点上的空间音频呈现格式已更改,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 接口即可。

[从 Invalid-Device 错误](recovering-from-an-invalid-device-error.md) 中恢复[流管理](stream-management.md)