Android蓝牙电话(SCO)和蓝牙音乐(A2DP)总结(四)

蓝牙电话从USB声卡输出,还需要看硬件怎么设计的?举例四款高通芯片.
1.高通MSM8953和SDM450蓝牙电话(SCO)和蓝牙音乐(A2DP),这两个片子硬件设计是一样
<1>.蓝牙电话通路(SCO)
蓝牙接收:BT--->ADSP
注意:ADSP没有USB接口,所以不支持USB Headset,如果需要支持,需要修改BT驱动,把数据直接传
入到CPU,修改架构工作量巨大.
 
<2>.蓝牙音乐通路(A2DP)
蓝牙接收:BT--->CPU--->USB--->USB Headset
 
2.高通SDM660和SDM630硬件设计一样
<1>.蓝牙电话通路(SCO)
接收:BT--->ADSP--->USB--->USB Headset
注意:这俩片子ADSP接了USB接口,所以支持蓝牙电话USB输出.
 
<2>.蓝牙音乐通路(A2DP)
A2DP:蓝牙接收:BT--->ADSP--->USB--->USB Headset

3.hfp相关代码
<1>.packages/apps/Bluetooth/src/com/android/bluetooth/hfpclient/HandsfreeClientStateMachine.java

<2>.frameworks/av/services/audioflinger/AudioFlinger.cpp

<3>.harwdware/qcom/audio/hal/audio_hw.c
harwdware/qcom/audio/hal/audio_extn/hfp.c

****************************************************************************************
注意:hfp.c实现蓝牙打电话功能,会重新select_devices设备
这里介绍些hfp.c里实现的逻辑,因为msm8953中,ADSP后端不支持USB接口输出,所以不支持USB声卡设备.
1.蓝牙播放:pcm5p 
stream: PLA

你可能感兴趣的:(Android音频进阶)