Bluedroid 協議棧a2dp音頻有波動的處理方法

在使用藍牙耳機聽音樂時會遇到聲音斷斷續續的情況,根據工作經驗總結如下:

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,具體的使用方法還在研究中,以後補充
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章