Bluedroid 协议栈a2dp音频有波动的处理方法

来源:互联网 发布:淘宝收二手手机 编辑:程序博客网 时间:2024/05/16 17:17

在使用蓝牙耳机听音乐时会遇到声音断断续续的情况,根据工作经验总结如下:

1:dump audio数据

Bluedroid协议栈中把audio_a2dp_hw.c中的宏BT_AUDIO_SAMPLE_LOG打开,发送到bluetooth HAL 层的pcm数据被保存在手机的/data/audio/下命名为output_sampleX.pcm格式。

可以用cool edit pro工具分析PCM数据是否有问题

 

2:在协议中数据包被丢弃

首先进行如下设置:

1)把bt_stack.conf配置文件的log输出级别修改为5(默认是2)

2)搜集BT snoop log,在开发者选项中勾选“Enable Bluetooth HCI snoop log”或者在bt_stack.conf中把BtSnoopLogOutput设置为true。

 

查看是否有:

btif_media_aa_prep_2_send congestion buf count xxx

L2CA_FlushChannel()  flushed: 0 + 0,  num_left:xxx格式的数据输出。

然后使用frontline的ComProbe Protocol Analysis System解析获取的snoop log a2dp数据包的传输

 

3:Android4.1及以上版本可以通过Systrace 工具分析设备的性能。

打开bluedroid中的宏BT_AUDIO_SYSTRACE_LOG

进入到sdk的platform-tools/systrace

执行:python systrace.py --time=10 -o a2dptrace.html sched gfx view wm

使用浏览器打开a2dptrace.html,具体的使用方法还在研究中,以后补充
0 0
原创粉丝点击