蓝牙 HFP 旁路音频流

本文介绍蓝牙免提配置文件(HFP)绕过音频流式传输的操作和理论。

在旁路模式下,蓝牙音频控制路径通过主机控制器接口(如 I2S)以外的硬件连接流向蓝牙控制器。 此其他硬件连接通常是 I2S,但可以是蓝牙主机控制器确定的任何接口。 此连接称为“绕过”或“旁带”连接。

当音频 I/O 通过旁路连接发生时,面向无线同步连接(SCO)的音频流仍通过 HCI 进行管理。 Windows 8 提供蓝牙 Hands-Free 配置文件(HFP)驱动程序,以简化管理 SCO 连接以及 Hands-Free 配置文件的其他方面。 但是,自定义音频驱动程序控制 Windows 与旁路连接之间的音频数据 I/O。

用于音频 I/O 数据的 HFP 驱动程序和自定义控制驱动程序具有单独的角色,需要它们之间的高效通信。 此通信由一组从自定义音频驱动程序传递到 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 状态。

另请参阅

以下主题提供有关 HFP 设备及其音频驱动程序的连接生命周期及其一些设计功能的详细信息: