使用Snapdragon MSM8960 SoC注入呼叫中的上行链路音频

时间:2013-03-04 15:03:35

标签: android audio phone-call alsa

我一直在研究MSM8960特有的这个主题。我调查了ALSA hardware module from google。迈克尔在post中的回答确实提到MSM8960支持“硬件和设备驱动程序”级别的呼叫上行链路音频注入。它是否涉及此ALSA模块的级别?

从手机上的ALSA配置文件中,呼叫语音播放似乎是通过/dev/snd/pcmC0D0p完成的,或者至少符合ALSA范例。是否可以使用其中一个文件描述符来达到目的?我确实在libalsa-intf中看到了一些有趣的USE_CASE定义。

1 个答案:

答案 0 :(得分:8)

MSM8960提供名为Incall_Music Audio Mixer的ALSA控件,您可以连接CPU DAI MultiMedia1MultiMedia2(对应于ALSA设备pcmC0D0p和{{1} }}, 分别)。 (请参阅msm-pcm-routing源代码)

因此,如果您正在运行语音呼叫并希望通过pcmC0D1p在上行链路上播放某些音频,则可以通过pcmC0D0p执行此操作(假设您已获得root权限):

adb shell


更优雅的方法是在设备的UCM文件(snd_soc_msm_blah_blah ..)中创建一个新的用例,在新文件的启用顺序中添加incall音乐路由:

amix 'Incall_Music Audio Mixer MultiMedia1' 1
aplay -Dhw:0,0 mono_8khz_audio.wav

(记得在禁用序列中将其关闭) 要使应用程序能够在自定义ROM上使用此功能,您还必须在音频HAL和多媒体框架中进行一些其他更改,以便在呼叫处于活动状态时为所需的流类型选择新的UCM设置。
由于版权原因,我无法详细说明其余的实施情况,因此我会将其留作有兴趣自行解决的人的练习。