2024年4月1日发(作者:)

摘要:通过对蓝牙高级音频分发框架(A2DP)协议栈进行系统地分析,提出了一种基于消息

机制的协议方案,在无A2DP框架的蓝牙1.1协议栈基础上实现了轻型的A2DP应用框架,

并且利用嵌入式蓝牙开发平台,实现了基本的点对点蓝牙立体声音频数据的传输。

关键词:蓝牙;高级音频分发框架;消息机制;立体声音频流

引言

近年来,随着蓝牙技术在电子产品中的日益普及,蓝牙音频设备也层出不穷,其中具有免提

功能的蓝牙耳机和蓝牙音频网关的应用是最典型的例子。但免提单元与音频网关进行音频传

输建立起来的SCO连接,仅能支持64kbps电信级语音质量的音频流,这也就限制了蓝牙音

频质量的提高,同时也影响了蓝牙的娱乐消费市场。为了满足人们对高质量音频的需求,进

一步扩大蓝牙产品市场,蓝牙特殊兴趣小组SIG组织,在蓝牙1.1规范的应用框架基础上又

单独提出了高级音频分发框架(Advanced Audio Distribution Profile, A2DP)。该框架利用了在

L2CAP层建立起来的ACL异步无连接链路来传输高质量的单声道或者立体声音频数据,有

效负载的传输速率可以达到300kbps~400kbps。

1 A2DP框架概述

在娱乐消费市场中,A2DP实例化应用就是用音乐播放器把音频数据通过ACL连接发送到

耳机或者音箱上。目前的框架规范中,并不支持同步的一点对多点的广播式音频分发,而对

于点对点音频的分发,又存在着两种不同的角色,一个是信源设备(SRC),这种设备作为发

起者将数字音频流发送到Piconet网中;另一个是信宿设备,是接收信源发出的音频流的设

备。如果蓝牙音乐播放器是信源设备,那么与之交互的蓝牙耳机就是信宿设备,信源和信宿

的区别就在于它是发起者还是接收者。

下面对该框架所涉及的具体协议和其依赖框架进行分析。

1.1 A2DP应用框架

在典型的蓝牙音频相关框架的整体结构中,A2DP框架所处的位置如图1所示:

图1 蓝牙音频框架整体结构

服务发现应用框架(SDAP)所提供的功能是向其他蓝牙设备提供自身所具备的服务,并且能

够使用远程设备所提供的服务和功能。在实际应用中,几乎所有框架都支持服务发现协议

(SDP)。蓝牙音频视频遥控应用框架(AVRCP)实现了蓝牙设备之间的遥控功能,例如音乐播

放器的前进,后退,停止,播放等控制信令的传输。免提功能头戴式设备应用框架(HFP/HSP),

最主要的应用就是实现了蓝牙耳机的免提功能和某些蓝牙设备的音频网关功能。

高级音频分发框架(A2DP)依赖于通用音频视频分发框架(GAVDP),GAVDP定义了设置音频

和视频流传输的步骤,而A2DP则进一步定义了音频流传输的参数和步骤细节。

在实际应用中,逻辑链路控制适配层协议(L2CAP)要求比较高的可靠性,基带的广播数据分

组将被禁止使用,因此,L2CAP层并不支持可靠的多点传输信道,这也就是A2DP框架不

支持多点广播式音频分发的主要原因之一。而对于面向高层协议的开发和应用者来说,

L2CAP层协议是透明的,因此笔者对A2DP轻型框架具体实现的相关描述,也仅限于L2CAP

层以上,与A2DP相关的协议及框架如AVDTP,GAVDP等协议模块的设计。

图中的蓝牙主机控制接口HCI层,是协议栈中软硬件的接口。本文所涉及的硬件环境是主

机与主机控制器连接模型,HCI层以上的协议(如SDP)在主机上运行,而以下的协议(如

传输层的蓝牙基带协议等)由蓝牙主机控制器硬件来完成,这样既保证了底层协议传输的稳

定性,又支持了上层应用协议的可扩展性。一旦在市场条件成熟,蓝牙技术的硬件部分就可

以被更快的硬件射频技术如UWB技术所取代,高层传输协议经过移植仍然可以沿袭使用,

大大缩短了蓝牙产品的研发周期。

1.2 A2DP框架协议栈

A2DP是音频传输框架,它通过蓝牙传输层和对等设备,把音频数据流从音频信源(SRC)到

音频信宿(SNK)进行分发,因此该框架所包含的协议栈也分为两个部分,具体表现如图2所

示:

图2 A2DP框架

基带协议Baseband Protocol,链路管理协议LMP,逻辑链路控制协议L2CAP和服务发现协议

SDP,在蓝牙核心协议规范中都有定义。而蓝牙音频视频分发传输协议AVDTP则定义了蓝

牙设备之间数据流句柄的参数协商,建立和传输过程以及相互交换的信令实体形式,该协议

是A2DP框架的基础协议。

2 轻型A2DP框架协议实现

笔者所提出的A2DP框架协议的实现集中在音频信源端,并未设计信宿端。之所以定义为轻

型的,是因为在A2DP规范1.0基础之上,实现了此规范所规定的强制性功能,即在信源端

仅仅实现了高级音频分发的基本功能,如立体声音频的传输,只支持低复杂度子带编解码

(SBC)标准,而对其他编解码标准并未涉及;在A2DP模块的实现中并未包括任何的编解码能

力,这是在用户层上实现的,是上层应用程序在设置阶段,通过配置协商来做相应的编码,

解码和音频内容的转换工作;AVDTP模块的功能不包括校验和报告,也不包括媒体多路复

用,校验和报告通道的建立。

2.1 协议模块划分

A2DP框架协议划分了三个模块:A2DP模块,GAVDP模块,AVDTP模块,另外还包括测试协

议栈所需要的Audio应用程序测试模块。对于GAVDP,虽然该功能模块包括音频/视频两种

数据流的传输与分发,但是由于笔者侧重对音频流的讨论,所以视频流相关模块(VDP)并未

实现。图3是具体实现模块划分图:

图3 具体模块划分

2.2 消息传递机制

该轻型框架模块协议层之间的交互是通过消息传递机制来实现的。消息的种类可分为四种:

(1)请求消息REQ,该消息是上层协议向下层协议主动发出的请求;(2)确认消息CFM,

上层协议发出的每个REQ消息,都会收到下层协议发上来的确认;(3)指示消息IND,该消

息是下层协议向上层协议主动发起的告知;(4)响应消息REP,对于每个下层协议主动发上

来的IND消息,上层协议都对此消息进行响应。如图4所示:

图4 协议间消息传递

采用基于消息传递机制的实现方法优点在于:

1)协议层之间交互通过固定的消息接口,即使上下层协议模块升级,也不会影响本层协议

模块的功能,有很好的移植性和可复用性;

2)各层协议都是异步通信,可以大大降低拥塞情况的发生;

3)协议栈进程可以在上层管理一个消息队列,统一进行消息收发,当消息向下传递过程中

遭到拒绝时,可以实现消息的重传功能。

4)与每层协议都用一个单独的任务来实现相应功能相比,采用消息机制的方法节省了系统

调度时间,更具有实时性,同时避免了死锁的发生。

2.3 重要数据结构