从btsnoop log 讲解A2DP从发起SDP开始到音频流建立完成

接上一篇蓝牙btsnoop log,hci 连接流程详解_一叶知秋之味的博客-CSDN博客

1.蓝牙建立连接,鉴权认证完成后,L2CAP发起了SDP的连接,建立CID

从btsnoop log 讲解A2DP从发起SDP开始到音频流建立完成_第1张图片

2.SDP先去发现对方的pnpinfo,获取供应商名称和版本号等信息,SDP  格式对应一组    SDP_SERVICE_SEARCH_ATTR_REQ/ SDP_SERVICE_SEARCH_ATTR_RSP,如果一次不能传输完数据,会继续continuation
 

从btsnoop log 讲解A2DP从发起SDP开始到音频流建立完成_第2张图片 3.SDP完 pnpinfo后,L2CAP断开了SDP的CID,SDP可以发起多次,L2CAP继续发起SDP,去获取L2CAP支持哪些特征

从btsnoop log 讲解A2DP从发起SDP开始到音频流建立完成_第3张图片

4.SDP在持续的continuation完L2CAP 后,得到完整的    Service Record Attributes

从btsnoop log 讲解A2DP从发起SDP开始到音频流建立完成_第4张图片

 5.A2DP两个角色,audio sink ,audio source,手机做audio source,播放设备做sink端,从L2CAP中也可以看到对端支持audio sink,所以手机端继续SDP audio sink,获取版本信息等,对端设备也会过来SDP 手机的audio source,获取source端的信息

从btsnoop log 讲解A2DP从发起SDP开始到音频流建立完成_第5张图片

6. 手机端SDP完sink后发起AVDTP的建立,AVDTP和AVRCP为A2DP的底层协议,AVDTP 数据流,AVRCP控制流;AVDTP数据流也有自己的控制信息,所以AVDTP会建立两条CID,第一条用来控制信息的交互

 7.第一条AVDTP建立完成之后进行开始音频数据流的建立,host发起DISCOVERY,controller返回对方支持的编码stream有几种

从btsnoop log 讲解A2DP从发起SDP开始到音频流建立完成_第6张图片

8.  继续对每一个stream发起AVDTP_GET_ALL_CAPABILITIES,得到编码详细信息

从btsnoop log 讲解A2DP从发起SDP开始到音频流建立完成_第7张图片
 

9.get完所有支持的编码,host端根据优先级选择自己想要的编码进行set 编码AVDTP_SET_CONFIGURATION

从btsnoop log 讲解A2DP从发起SDP开始到音频流建立完成_第8张图片
 

10.set编码完成后,此时会去AVDTP OPEN,去打开音频流到挂起状态,start播放,suspend暂停

从btsnoop log 讲解A2DP从发起SDP开始到音频流建立完成_第9张图片 

11.open完成之后L2CAP同步建立第二条AVDTP

从btsnoop log 讲解A2DP从发起SDP开始到音频流建立完成_第10张图片 

12. AVDTP音频流建立完成后,开始建立AVCTP,AVRCP依赖于AVCTP

从btsnoop log 讲解A2DP从发起SDP开始到音频流建立完成_第11张图片

 

13.AVCTP建立完成,AVRCP两个角色CT 、TG,一般情况下手机做TG端,对端做CT端,手机host再次发起SDP,去获取CT端profile的详细信息,对端也会来获取手机做TG端的版本信息等

从btsnoop log 讲解A2DP从发起SDP开始到音频流建立完成_第12张图片

 SDP完成后正式开启基于AVCTP进行的AVRCP的数据交互,整个a2dp连接完成,下篇讲下AVRCP控制信息交互流程

 

你可能感兴趣的:(Android,Bluetooth,音视频)