分享蓝牙耳机A2DP音频卡顿原因及解决思路

背景

最近一直在更新博客,我觉得写博客有三个好处,一是很多东西时间久了就会忘,记下来方便自己以后回忆和总结,二是记下来可以加深自己对知识的理解,三是可以知识分享,方便他人。

言归正传,今天分享我曾经做过的某高端蓝牙耳机的A2DP音频卡顿原因分析和解决思路,A2DP音频卡顿从LOG方面看,一般都能从Audio DSP的错误log看出来:

问题及解决思路

audio dsp下溢

也就是underflow错误,意思是DSP那边拿不到数据帧造成的音频卡顿,这类错误有可能是耳机的BT HOST或者 controller的问题:

问题 案例分析 解决思路
耳机BTH问题 比如我曾经碰到过的情况就是BTH在接受手机音乐的同时,又发生了其他调度,需要上行通过HFP协议上报电量等,由于耳机主CPU的mips不足,调度不及时,造成BTH没有及时读取BTC的audio数据。 这种一般需要临时提高主CPU的mips。
耳机BTC问题 BT Controller的问题就是由于某些原因,从手机收包不及时导致,比如耳机在接受A2DP音频流的同时,进行了BLE 扫描,过高的扫描占空比导致BTC收包不及时,也有可能是信号问题导致重传太多,收包不及时等等。 这种需要BT Controller具体分析了,BLE占空比太高就要想办法消减或者打散,信号问题就要和硬件一起分析。
手机蓝牙问题 比如我曾经碰到过在播放高清音频的时候,手机发过来的包就有丢包,后来发现手机在播放高清音频的同时,在做BLE SCAN造成的,过高的BLE占空比造成了音频发包有很大延迟 需要把BLE SCAN的window打散,不能造成音频的丢包

audio dsp上溢

也就是overflow错误,意思是蓝牙这边送到DSP的数据帧太多,导致DSP解码播放不及时造成的卡顿,这类错误有可能是DSP本身的问题或者是蓝牙的问题:

问题 案例分析 解决思路
DSP本身问题 DSP本身性能不足,由于某些导致播放速度太慢造成的问题 需要DSP查看为啥cpu load太重
蓝牙的问题 比如我曾经碰到过手机蓝牙的高清音频通过动态码率发送,一时大量数据发送过来,造成了audio DSP播放不及时 可以通过加大DSP接收buffer解决问题

SN或者TS不连续

sn和ts是保证蓝牙数据包能被audio dsp解码播放的关键参数,如果发生了SN或者TS不连续错误,说明蓝牙存在丢包或者重复收包的可能:

问题 案例分析 解决思路
手机蓝牙问题 手机发过来的数据就有SN或者TS不连续 可以通过抓取手机蓝牙音频数据,然后dump出来,通过音频软件分析,比如adobe audition就是个很好的音频分析软件
耳机BTC问题 耳机蓝牙芯片由于某些原因存在丢包的发生 这个需要bt controller具体分析

DSP性能不足或者解码错误

这类错误一般都是DSP自身的错误,需要DSP去查看。

总结:

以上这四类蓝牙A2DP卡顿问题原因和解决思路是我在具体项目中碰到过的,实际中应还有其他的原因,我只能在此抛砖引玉。

相关推荐
FrameNotWork13 小时前
HarmonyOS 6.1 云应用客户端适配实战(二):Native Window 视频渲染
华为·音视频·harmonyos
2023自学中13 小时前
imx6ull 开发板 推流ov5640数据,虚拟机用 ffplay 拉流播放
linux·音视频·嵌入式·开发板
天天进步201513 小时前
Python全栈项目--基于深度学习的视频目标跟踪系统
python·深度学习·音视频
不脱发的程序猿15 小时前
AI Coding时上下文不够用咋办?
单片机·嵌入式硬件·嵌入式
EasyDSS15 小时前
私有化音视频系统/视频高清直播点播EasyDSS重塑企业视频门户新生态
音视频
byte轻骑兵16 小时前
【LE Audio】CAP精讲[13]: Central侧LE连接建立全流程解析
人工智能·音视频·cap·le audio·低功耗音频
EasyDSS16 小时前
视频直播点播/音视频点播/云点播/云直播EasyDSS一体化音视频平台赋能企业数字化转型
音视频
leoFY12316 小时前
SGM3209(圣邦微 高压负压电荷泵)(与TP7660可只修改4脚,7脚即可替换)
单片机·嵌入式硬件
zlinear数据采集卡17 小时前
基准电压电路深度解析:从理论参数到ZLinear采集卡的精准参考实战
c语言·单片机·嵌入式硬件·fpga开发·自动化
下午写HelloWorld17 小时前
GD32F4系列微控制器上电启动流程
单片机·嵌入式硬件