蓝牙 HFP 旁路音频流

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

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

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

用于音频 I/O 数据的 HFP 驱动程序和自定义控制驱动程序具有单独的角色,需要它们之间进行有效的通信。 此通信由一组 IOCTL 处理,IOCTL 从自定义音频驱动程序传递到 Windows HFP 驱动程序。

通常情况下,总是存在旁路连接。 即插即用 (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 假设只有一个蓝牙主机控制器。 此外,免持配置文件 (HFP) 面向无线同步连接 (SCO) 旁路支持假设只有一个旁路连接,并且通过 HFP 设备驱动程序接口打开的任何声道都与该单一连接相关联。

音频驱动器在先到先得的基础上为单个消费者仲裁该声道和单个旁路连接。 实现此目的的最简单方法是让驱动程序仅允许单个筛选器将其引脚转换为 ACQUIRE 状态。

另请参阅

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