蓝牙A2DP流程

 1 蓝牙和AUDIO之间的接口

   蓝牙和audio之间的通信是通过socket,管理socket中的文件是UIPC,UIPC管理两条socket.

   A2DP_CTRL_PATH  /data/misc/bluedroid/.a2dp_ctrl  

    A2DP_DATA_PATH /data/misc/bluedroid/.a2dp_data

   这两个socket的作用就是接收audio的控制命令和音频数据。

   A2DP_CTRL_PATH在蓝牙打开的时候创建,A2DP_DATA_PATH在audio下发START命令给蓝牙的时候创建。

  2 audio数据发到蓝牙

    audio的数据发到蓝牙的流程如下:

    out_write->start_audio_datapath->a2dp_command  下发A2DP_CTRL_CMD_START命令。

    btif_a2dp_ctrl_cb->btif_a2dp_recv_ctrl_data-> UIPC_Open(UIPC_CH_ID_AV_AUDIO, btif_a2dp_data_cb)

    收到start命令之后,创建A2DP_DATA_PATH通道

    调用skt_write向这个socket发送消息

   3 蓝牙SBC编码

      打开蓝牙的时候,会创建一个A2DP的工作线程,创建A2DP的控制命令的消息队列,在消息队列里面加上btif_a2dp_source_command_ready函数,当有命令下发到蓝牙的时候,调用btif_a2dp_source_audio_tx_start_event函数,这个函数里面创建一个定时器回调函数,周期是20ms, 每隔20ms向sbc编码器发送编码的命令。a2dp_sbc_send_frames->a2dp_sbc_encode_frames

a2dp_sbc_encode_frame函数读取PCM数据,然后进行编码,编码完成后,发送到AVDTP层。

4 发送SBC数据

   在AVDTP层,调用L2CA_DataWrite向下层发送数据。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值