蓝牙音频A2DP(三) -- UIPC

本文详细探讨了蓝牙音频A2DP协议中的UIPC(User Interface Protocol Channel)机制,揭示了它在蓝牙设备间传输高质量音频流中的关键作用。通过UIPC,设备能够实现高效的同步和数据交换,确保无线音频体验的流畅性。
摘要由CSDN通过智能技术生成

这里写图片描述

 对于Audio Flinger而言,他能够获取到a2dp的hw module,然后怎才能将数据送至蓝牙协议栈。蓝牙方面已经起了一个线程,专用于发送和接收media的数据,线程名称:btif_media_task.蓝牙与Audio的通信则采用了socket的方式,管理socket的中间文件为:UIPC。
 因此UIPC主要的作用就是,接收Audio的控制命令转发给bt,接收Audio的音频数据发送给bt。因此UIPC建立了两条socket,分别为:
#define A2DP_CTRL_PATH "/data/misc/bluedroid/.a2dp_ctrl"
#define A2DP_DATA_PATH "/data/misc/bluedroid/.a2dp_data"
其中第一条control socket在btif media task启动的时候随之创建。
bool btif_a2dp_start_media_task(void)
{
    ...
    thread_post(worker_thread, btif_media_thread_init, NULL);

    APPL_TRACE_EVENT("## A2DP MEDIA THREAD STARTED ##");

    return true;
    ...
}

static void btif_media_thread_init(UNUSED_ATTR void *context) {
  memset(&btif_media_cb, 0, sizeof(btif_media_cb));
  UIPC_Init(NULL);

#if (BTA_AV_INCLUDED == TRUE)
  UIPC_Open(UIPC_CH_ID_AV_CTRL , btif_a2dp_ctrl_cb);
#endif

  raise_priority_a2dp(TASK_HIGH_MEDIA);
  media_task_running = MEDIA_TASK_STATE_ON;
}
第二条data socket在收到audio cmd start时候创建。任何命令的处理,btif task都需要恢复ack,表明命令是否执行完成。
  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值