核心规范V5.2中增加ISO流特性是低功耗蓝牙协议中一个全新的概念。熟悉A2DP和HFP协议的读者都知道其拓扑结构局限不灵活。HFP具有双向一对一的链路,典型场景是电话和耳机或免提设备之间。A2DP是一个更简单的单播链路,定义Source设备产生音频数据,Sink设备通常是耳机,扬声器,放大器或录音设备,用来接收音频数据。

iOS 蓝牙音频开发_链路

        蓝牙低功耗音频建立在一个基本不对称的协议:一个设备是主设备,负责ISO链路的创建及其链路控制,主设备可连接很多外围设备,主设备和外围设备通过ISO链路交互音频数据。这里提及不对称一定程度是指外围设备比主设备要求更低功耗。CIS与经典蓝牙音频配置文件相比,主设备更擅长配置ISO流程,以达到影响音频质量,延迟和电池寿命。对于BIS,主设备控制所有链路配置,外围设备决定想要接收的ISO流。

         重复第3.3节术语描述的,从低往上整体研究蓝牙低功耗音频协议栈,我们可能会看到各种不同的名字代表设备执行的角色。在核心规范中,定义主设备和外围设别。在BAPS系列规范中,设备被称为客户端和服务端,在CAP协议中,变成发起者和接受者,发起者一定是主设备,其负责ISO链路的调度,接受者通常接收这些流的设备。一定有一个设备是发起者,但是可以有许多接受者。

iOS 蓝牙音频开发_iOS 蓝牙音频开发_02

         在顶部的配置文件中,会出现大量的新角色名称,包括发送者,广播者和接收者。为了更好地介绍蓝牙低功耗音频,我们只使用发起者和接受者,而忽略其他角色名称。当在核心规范中没有涉及音频流时,会退回使用客户端和服务端。

         除广播模式BIS以外,任何设备既可以作为音频源产生音频数据,也可以作为音频接收者,接收数据。发起者和接受者都可以同时作为音频源设备和音频接收设备,并且他们都可以包含多个蓝牙低功耗音频中的接收设备和源设备。

         对于谁生成音频数据和谁接收和渲染音频数据的讨论内容,与谁是发起者和接受者的内容,两者是截然不同的。极其重要的一点内容是:发起者的设备负责计算每次音频数据发送的时间点,该工作可以成为调度。接受者的设备主要负责接收这些音频数据流。这个概念定义同样也适用于单播和多播。一个接受者也可以产生音频数据例如同从头戴耳机的麦克风中采集你的声音,但是发起者负责决定发回数据的时机。

         由于发起者角色远远比接受者角色更复杂,通常发起者是手机设备,电视设备和平板,这些设备的特点是拥有更大的电池容量和更多的资源。链路调度必须要考虑其他无线连接,例如:Wi-Fi连接,其他蓝牙连接等,这些都是芯片设计工程师需要处理的棘手问题。但是,正如我们稍后介绍的,蓝牙低功耗音频方案的上层应用程序拥护很大的权限来影响适配链路调度,这就是为什么让开发工程师需要熟练地掌握底层协议栈ISO的工作原理。

         对于单播的蓝牙低功耗音频,其拥有更灵活的网络拓扑结构,如图4.3。可以使用与HFP或A2DP类似的网络拓扑结构,一个手机连接一个外围设备(耳机),建立一条音频链路。在这个拓扑基础上,蓝牙技术允许一个发起者与2个甚至更多的接受者进行通信。典型的应用场景是手机可以连接一对耳机或者助听器。这个耳机或者助听器不需要是同一个厂商制作,原因是蓝牙低功耗音频设备是一种可互操作的标准协议。

         可以通过增加额外的单播流,来支持一对以上的耳机,或者连接环绕声系统中的多个扬声器。图4.3中显示添加了中央低音扬声器。

iOS 蓝牙音频开发_接受者_03

         理论上,该协议规范支持多达31个独立的单播ISO流,即可以连接31个不同设备。但是这对音频方案是不现实的,实际当达到3个或者4个音频流时,蓝牙的无线带宽就会被耗尽。核心规范中限制31个设备的原因不仅是为音频方案设计的,是ISO流特性是被设计支持关键分时应用程序,比音频方案占用的带宽更少。当我们查看LC3编解码器时,必须要在音频质量,延时和鲁棒性之间做出权衡,这限制了实际应用程序可以支持音频流的数据量。

         蓝牙低功耗音频方案中使用广播模式的原因之一是单播模式限制ISO流数量。如图4.4所示,单个广播者可以与多个接受者进行通信对话,此时的接受者通常被配置为成对的设备,接收单个单音声道或者分开的左右声道。根据音频质量(通常设置采样率,设置广播时间和最大ISO流),广播者可能会提供更多功能,例如以不同语言同时传播音频流,设计蓝牙低功耗音频应用程序时需要权衡和取舍的。下面章节中会详细地介绍。

iOS 蓝牙音频开发_数据_04