從 Invalid-Device 錯誤中復原(空間音效)
Microsoft空間音訊 API 的許多方法,例如 ISpatialAudioClient、ISpatialAudioObjectRenderStream,以及 ISpatialAudioObject,如果用戶端應用程式使用的音頻端點裝置變成無效或端點上的空間音頻轉譯格式變更,則會傳回錯誤碼。 這些錯誤碼表示,端點裝置已被拔掉,或者音效硬體或相關聯的硬體資源已重新設定、停用或移除,或者空間音訊模式已變更或其他方式無法使用。 應用程式通常會從此錯誤中復原。
指出無效裝置錯誤的錯誤碼包括:
- SPTLAUDCLNT_E_DESTROYED
- AUDCLNT_E_DEVICE_INVALIDATED
- AUDCLNT_E_RESOURCES_INVALIDATED 資源已失效
- AUDCLNT_E_UNSUPPORTED_FORMAT (格式不支援)
- SPTLAUDCLNT_E_INTERNAL
處理無效裝置錯誤的策略
從無效裝置錯誤中復原的建議策略取決於應用程式是否根據內部需求自動選取特定裝置,或允許使用者從可用的裝置清單中明確選取裝置。
默認音訊裝置
如果應用程式自動選取預設裝置,請使用下列步驟來復原。
- 發行 ISpatialAudioObjectRenderStream 和 ISpatialAudioClient 介面,以及用於轉譯的任何其他空間音訊介面。
- 呼叫 IMMDeviceEnumerator::GetDefaultAudioEndpoint 以取得目前的預設音訊裝置。
- 嘗試在音訊裝置上啟動 ISpatialAudioClient。
- 啟動 ISpatialAudioObjectRenderStream。
特別選取的音訊裝置
如果應用程式選取特定的音訊裝置,請使用下列步驟來復原。
- 釋放 ISpatialAudioObjectRenderStream 介面和用於轉譯的任何其他空間音訊介面,但不釋放 ISpatialAudioClient。
- 使用目前的 ISpatialAudioClient 實體來啟動 ISpatialAudioObjectRenderStream。
請注意,針對上述這兩種策略,相同的步驟可以套用至使用 ISpatialAudioObjectRenderStreamForMetadata 或 ISpatialAudioObjectRenderStreamForHrtf 介面的應用程式。 只需將上述步驟中的 ISpatialAudioObjectRenderStream 替換為元數據或 Hrtf 接口。
相關主題
- [從 Invalid-Device 錯誤復原](recovering-from-an-invalid-device-error.md) [串流管理](stream-management.md)