A2DP和AVRCP 播放音视频

A2DP和AVRCP蓝牙音频传输协议
1.A2DP全名是Advenced Audio Distribution Profile蓝牙音频传输模型拹定。
  A2DP 规定了使用蓝牙非同步传输信道方式,传输高质量音乐文件数据的拹议堆栈软件和使用方法,基于该拹议就能通过以蓝牙方式传事输高品质的音乐了,
  例如可以利用立体声蓝牙耳机或蓝牙音响设备来收听音乐了。A2DP和AVRCP是一对兄弟,A2DP里WM设备是控制端,蓝牙耳机是接收端,AVRCP反之,这里说的就是WM如何接收蓝牙耳机发送的AVRCP并处理的过程。
 
2.AVRCP全名是Audio Video Remote Cortrol Profile音频/视频远程控制配置文件。
  AVRCP 设计用于提供控制 TV、Hi-fi 设备等的标准接口。此配置文件用于许可单个远程控制设备(或其它设备)控制所有用户可以接入的 A/V 设备。
  AVRCP 定义了如何控制流媒体的特征。包括暂停、停止、启动重放、音量控制及其它类型的远程控制操作。
  AVRCP(Audio/Video Remote Control Profile)是一种在蓝牙协议栈A2DP/AVCTP上实现的控制技术,通俗点说,就是你用蓝牙耳机听歌时按一下拨号键它会暂停,按下选曲它会切换,这就是AVRCP的功劳。
 
栗子:手机通过蓝牙连接音箱,播放手机上的音乐。
Audio Source:发送音频流 //手机端
Audio Sink:接收音频流   //音箱端

A2DP
AVCTP    Audio/Video Control Transport Protocol    音频/视频控制传输协议(通过L2CAP传输AV/C指令)    通过L2CAP通道由远程控制规范去发送AV/C指令

AVRCP
AVDTP    Audio/Video Distribution Transport Protocol    音频/视频分发传输协议(通过L2CAP向立体声耳机传输音乐文件)    通过L2CAP通道由高级音频分发规范将音乐传输到立体声耳机

Audio 音频

TCP/UDP 
PPP/BNEP 网络

SDP 服务发现协议   为实现蓝牙设备之间相互查询及访问对方提供的服务
TCS 电话控制

AT 指令集
OBEX 对象交换协议
RFCOMM 串口仿真

L2CAP 逻辑链路控制与适配协议

persist.bluetooth.btsnoopenable


一次完整的连接:connect Event
    设备发现过程: 
        Advertise: 从机处于广播状态
        Scan Request: 主机接收到广播后发送扫描请求到外设
        Scan Response: 从机接收请求后返回扫描响应到主机
    Establish Link Request:主机向从机发送一个链接请求
    
Pairing:配对过程,产生加密肯认证密钥
Bonding:绑定过程,主从机绑定后下次连接可以快速配对


蓝牙技术应用框架协议堆栈
    通用访问框架(GAP)
        服务发现框架(SDAP)
        扩展服务发现框架(ESDP)
        硬拷贝电缆替代框架(HCRP)
        个人局域网框架(PANP)
        电话控制协议规范框架(TCSP)
            无绳电话框架(CTP)
            对讲机框架(IntP)
        音频/视频遥控框架(AVRCP)    
        蓝牙音频视频控制传输协议(AVCTP)    
        通用音频/视频分发框架(GAVDP)
            高级音频分发框架(A2DP)
            视频分发框架(VDP)
        串口框架(SPP)
            拨号上网框架(DUNP)
            传真框架(FaxP)
            头戴式设备框架(HSP)
            局域网访问框架(LAP)
            免提框架(HFP)
            通用对象交换框架(GOEP)
                文件传输框架(FTP)
                对象推送框架(OPP)
                同步框架(SP)
                基本打印框架(BPP)
                基本成像框架(BIP)


A2DP 高级音频分发框架
        异步无连接链路(ACL)
        音频数据 -> 耳机或音箱
        点对点的音频分发
        AVCTP
        
        
09-03 21:01:02.187   503   787 W bt_btif : bta_av_str_closed: peer_addr=18:bb:26:e1:61:14 open_status=0 chnl=64 hndl=65 co_started=1
09-03 21:01:02.187   503   787 E bt_btif : bta_av_str_stopped: audio_open_cnt=1, p_data 0x0
09-03 21:01:02.187   503   787 W bt_btif : bta_dm_rm_cback:2, status:6
09-03 21:01:02.188   503   639 W bt_btif : btif_av_state_started_handler: event=BTA_AV_STOP_EVT flags=0x0
09-03 21:01:02.188   503   787 W bt_btif : bta_dm_rm_cback:2, status:1
09-03 21:01:02.188   503   639 W bt_btif : ## ON A2DP STOPPED ##
09-03 21:01:02.188   503   639 I BluetoothA2dpServiceJni: bta2dp_audio_state_callback
09-03 21:01:02.188   503   787 E bt_btif : bta_av_rc_create ACP handle exist for shdl:0
09-03 21:01:02.189   503   807 W bt_btif : btif_a2dp_command_ack: ## a2dp ack : A2DP_CTRL_CMD_NONE, status 0 ##
09-03 21:01:02.189   503   808 W bt_btif : btif_a2dp_data_cb: BTIF MEDIA (A2DP-DATA) EVENT UIPC_CLOSE_EVT
09-03 21:01:02.189   503   807 E bt_btif : btif_a2dp_command_ack: warning : no command pending, ignore ack
09-03 21:01:02.189   503   808 W bt_btif : btif_a2dp_command_ack: ## a2dp ack : A2DP_CTRL_CMD_NONE, status 0 ##
09-03 21:01:02.189   503   807 D a2dp_sbc_encoder: a2dp_sbc_feeding_reset: PCM bytes per tick 3528
09-03 21:01:02.189   503   808 E bt_btif : btif_a2dp_command_ack: warning : no command pending, ignore ack
09-03 21:01:02.190   503   639 W bt_btif : ## ON A2DP STOPPED ##
09-03 21:01:02.190   503   806 D A2dpStateMachine: Connected process message: 101
09-03 21:01:02.191   503   639 I BluetoothA2dpServiceJni: bta2dp_connection_state_callback
09-03 21:01:02.191   503   807 D a2dp_sbc_encoder: a2dp_sbc_feeding_reset: PCM bytes per tick 3528
09-03 21:01:02.191   503   639 D a2dp_codec: init
09-03 21:01:02.191   503   639 D a2dp_codec: createCodec: codec SBC
09-03 21:01:02.191   503   639 I a2dp_codec: init: updated SBC codec priority to 1001
09-03 21:01:02.192   503   639 D a2dp_codec: createCodec: codec AAC
09-03 21:01:02.192   503   639 I a2dp_codec: init: updated AAC codec priority to 2001
09-03 21:01:02.192   503   639 D a2dp_codec: createCodec: codec aptX
09-03 21:01:02.193   503   806 D A2dpStateMachine: A2DP Playing state : device: 18:BB:26:E1:61:14 State:10->11
09-03 21:01:02.193   503   806 D A2dpStateMachine: Connected process message: 101
09-03 21:01:02.195   503   639 D a2dp_codec: createCodec: codec aptX-HD
09-03 21:01:02.202   503   806 D A2dpStateMachine: Enter Disconnected: 101
09-03 21:01:02.204   503   503 D A2dpStateMachine: Connection state 18:BB:26:E1:61:14: 2->0
09-03 21:01:02.225   503   808 W bt_btif : btif_a2dp_ctrl_cb: A2DP-CTRL-CHANNEL EVENT UIPC_RX_DATA_READY_EVT
09-03 21:01:02.225   503   808 W bt_btif : btif_a2dp_recv_ctrl_data: a2dp-ctrl-cmd : A2DP_CTRL_CMD_START
09-03 21:01:02.225   503   808 W bt_btif : btif_av_stream_started_ready: sm_handle=-448876552 state=0 flags=0x0 ready=0
09-03 21:01:02.226   503   808 W bt_btif : btif_a2dp_recv_ctrl_data: A2DP command A2DP_CTRL_CMD_START while AV stream is not ready
09-03 21:01:02.226   503   808 W bt_btif : btif_a2dp_command_ack: ## a2dp ack : A2DP_CTRL_CMD_START, status 1 ##
09-03 21:01:02.226   503   808 W bt_btif : btif_a2dp_recv_ctrl_data: a2dp-ctrl-cmd : A2DP_CTRL_CMD_START DONE
09-03 21:01:02.248   503   808 W bt_btif : btif_a2dp_ctrl_cb: A2DP-CTRL-CHANNEL EVENT UIPC_RX_DATA_READY_EVT
09-03 21:01:02.248   503   808 W bt_btif : btif_a2dp_recv_ctrl_data: a2dp-ctrl-cmd : A2DP_CTRL_CMD_START
09-03 21:01:02.248   503   808 W bt_btif : btif_av_stream_started_ready: sm_handle=-448876552 state=0 flags=0x0 ready=0
09-03 21:01:02.248   503   808 W bt_btif : btif_a2dp_recv_ctrl_data: A2DP command A2DP_CTRL_CMD_START while AV stream is not ready
09-03 21:01:02.248   503   808 W bt_btif : btif_a2dp_command_ack: ## a2dp ack : A2DP_CTRL_CMD_START, status 1 ##
09-03 21:01:02.248   503   808 W bt_btif : btif_a2dp_recv_ctrl_data: a2dp-ctrl-cmd : A2DP_CTRL_CMD_START DONE
09-03 21:01:02.248   503   639 D a2dp_codec: createCodec: codec LDAC
09-03 21:01:02.249   503   639 I a2dp_codec: init: updated LDAC codec priority to 5001
09-03 21:01:02.249   503   639 D a2dp_codec: createCodec: codec SBC SINK
09-03 21:01:02.250   503   639 I a2dp_codec: init: initialized Source codec LDAC
09-03 21:01:02.250   503   639 I a2dp_codec: init: initialized Source codec AAC
09-03 21:01:02.250   503   639 I a2dp_codec: init: initialized Source codec SBC
09-03 21:01:02.251   503   639 I a2dp_codec: init: initialized Sink codec SBC(Sink)
09-03 21:01:02.253   503   639 W bt_btif : ## ON A2DP IDLE ## peer_sep = 1
09-03 21:01:02.254   503   807 D a2dp_sbc_encoder: a2dp_sbc_feeding_reset: PCM bytes per tick 3528
09-03 21:01:02.254   503   639 I BluetoothA2dpServiceJni: bta2dp_audio_config_callback        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章