A2DP协议分析-转

A2DP协议分析以及CSR8670代码

1.概述

    A2DP(Advanced Audio DistributionProfile)是蓝牙的音频传输协议,典型应用为蓝牙耳机。A2DP协议的音频数据在ACL Link上传输,这与SCO上传输的语音数据要区别。A2DP不包括远程控制的功能,远程控制的功能参考协议AVRCP。AVDTP则定义了蓝牙设备之间数据流句柄的参数协商,建立和传输过程以及相互交换的信令实体形式,该协议是A2DP框架的基础协议。A2DP与相关协议的附属关系如下图:

A2DP协议分析-转_第1张图片

A2DP协议分析-转_第2张图片

    注意下数据包装的过程。

2.A2DP的一些定义

GAVDP定义了两种角色:
Initiator (INT) – This is the device thatinitiates a signaling procedure.【发起signaling的】
Acceptor (ACP) – This is the device thatshall respond to an incoming request from the INT.【响应signaling的】
A2DP在此基础上具体实现了连个角色:
Source (SRC) – A device is the SRC when itacts as a source of a digital audio stream that is delivered to the SNK ofthe piconet.【输出音频stream的】
Sink (SNK) – A device is the SNK when itacts as a sink of a digital audio stream delivered from the SRC on thesame piconet.【接受音频stream的】
这里需要注意的是:一般在A2DP中Source和Sink的角色是固定的,而GAVDP的这两个角色是可以互换的,只要是发起signaling的一方就为initiator。

3.A2DP协议的限制

(1)不支持synchronized point-to-multipoint distribution。
(2)在Source和Sink端存在延迟。
(3)音频数据的速率必须足够小于蓝牙的传输速率。
(4)不提供任何数据保护的方法

4.编码

5.SBC编码格式

   SBC是A2DP规定的强制支持的编码格式,这里我们具体只讨论这一种编码格式:

A2DP协议分析-转_第3张图片

6.Media Packet Header与Media payload:

    在第一部分数据的包装中可以看出,在每一个Media payload上都会加上Media packrt header。主要包括以下几个部分:
Timestamp(TS),Payload Type (PT),Marker (M) bit【置为全0】,Extension (X) bit【不使用,置为全0】。具体在AVDTP协议中定义,这里不详述。

Media payload的格式如下:

A2DP协议分析-转_第4张图片

 其中Media Payload的Header部分的格式如下:
F bit – Set to 1 if the SBC frame isfragmented, otherwise set to 0.
S bit – Set to 1 for the starting packet of afragmented SBC frame, otherwise set to 0.
L bit – Set to 1 for the last packet of afragmented SBC frame, otherwise set to 0
RFA – 置为0.
Number of frames (4 bits) – If the F bit is setto 0, this field indicates the number of
frames contained in this packet. If the F bitis set to 1, this field indicates the number
of remaining fragments, including the currentfragment. Thus the last counter value
shall be one. For example, if there are threefragments then the counter has value 3,

2 and 1 for subsequent fragments. This field isexpressed by 4 bit UiMsbf.

A2DP协议分析-转_第5张图片A2DP协议分析-转_第6张图片

7.A2DP的通信过程

A2DP规定Sink个Source端有三种状态:IDLE、OPEN和STREAM,通过下图的流程进行状态转换:

A2DP协议分析-转_第7张图片

A2DP协议分析-转_第8张图片

前提是L2CAP首先建立signaling Channel.

Start Streaming:

A2DP协议分析-转_第9张图片

A2DP协议分析-转_第10张图片

原文:https://mp.weixin.qq.com/s/cKZKtrbJ2IP6tUtK3T0qGg

你可能感兴趣的:(蓝牙)