從無效裝置錯誤中復原 (空間音效)

Microsoft Spatial Audio 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 Error 復原](recovering-from-an-invalid-device-error.md)[串流管理](stream-management.md)