藍牙 HFP 略過音訊串流
本文說明藍牙免持式配置檔的作業和理論, (HFP) 略過音訊串流。
在略過模式中,藍牙音頻控制路徑會流經主機控制器介面以外的硬體連線, (HCI) ,例如 I2S 到藍牙控制器。 其他硬體連線通常是I2S,但可以是藍牙主機控制器所決定的任何介面。 此連線稱為「略過」或「側帶」連線。
雖然音訊 I/O 是透過略過連線進行,但無線同步連線導向 (SCO) 音訊串流仍會透過 HCI 管理。 Windows 8 提供藍牙 Hands-Free 配置檔 (HFP) 驅動程式,以簡化 Hands-Free 配置檔的管理 SCO 連線和其他層面。 不過,自定義音訊驅動程式會控制 Windows 與略過連線之間的音訊數據 I/O。
HFP 驅動程式和音訊 I/O 數據的自定義控制驅動程式有不同的角色,需要有效率的通訊。 此通訊是由從自定義音訊驅動程序傳遞至 Windows HFP 驅動程式的一組 IOCTL 所處理。
一般而言,略過連線一律存在。 隨插即用 (PnP) 服務會列舉包含此連線的硬體,並載入所需的音訊驅動程式。 不過,音訊系統可能或可能沒有任何 HFP 頭戴式裝置配對,而且略過連線只有在至少配對一個 HFP 頭戴式裝置時才有用。
針對每個配對的 HFP 裝置,Windows HFP 驅動程式會在 GUID_DEVINTERFACE_BLUETOOTH_HFP_SCO_HCIBYPASS 介面類別中註冊並啟用裝置介面。 下列條件適用於 HFP 裝置:
- 當 Windows 在開機) 期間啟動 HFP 驅動程式 (時,HFP 驅動程式會註冊並啟用每個配對 HFP 裝置的介面。
- 當 HFP 裝置第一次與 Windows 配對時,HFP 驅動程式會註冊並啟用裝置的介面。
- 如果有 n 個配對的 HFP 裝置,Windows HFP 驅動程式會註冊裝置介面的 n 個實例。
- 拿掉配對的 HFP 裝置時,Windows HFP 驅動程式會停用裝置介面。
- 當 Windows 通常會在關機或重新啟動) 期間停止 HFP 驅動程式 (時,HFP 驅動程式會停用每個配對 HFP 裝置的介面。
- 音訊驅動程式必須隨時處理介面的多個抵達和移除,而不只是在啟動或關機期間。
管理 I2S 和 SCO 資源
本節討論藍牙略過音訊串流支持設計中所做的假設。
目前,Windows 假設只有一個藍牙主機控制器。 此外,Hands-Free 配置檔 (HFP) 同步連線導向 (SCO) 略過支援假設只有一個略過連線,而且透過 HFP 設備驅動器介面開啟的任何通道都與該單一連線相關聯。
音訊驅動程式應該針對單一取用者,以第一次提供的第一個服務為基礎,來仲裁此通道和單一略過連線。 若要達成此目的,最簡單的方法是讓驅動程式只允許單一篩選將針腳轉換為 ACQUIRE 狀態。
另請參閱
下列主題提供有關聯機生命週期及其音訊驅動程式之一些設計功能的詳細資訊: