一段时间以来,我一直在研究这个特定于MSM8960的话题。我查过ALSA hardware module from google了。Michael在post中的回答确实提到了MSM8960在“硬件和设备驱动程序”级别支持呼叫中的上行链路音频注入。它指的是ALSA模块的级别吗?
从手机上的ALSA配置文件来看,通话中的语音回放似乎是通过/dev/snd/pcmC0D0p完成的,或者至少符合ALSA的范例。是否可以使用其中一个文件描述符来实现此目的?我确实在libalsa-intf中看到了一些有趣的USE_CASE定义。
发布于 2013-03-04 23:48:53
MSM8960提供了一个名为Incall_Music Audio Mixer的ALSA控件,您可以将CPU DAIs MultiMedia1和MultiMedia2 (分别对应于ALSA设备pcmC0D0p和pcmC0D1p )连接到该控件。(参见msm-pcm-routing源代码)
因此,如果您有一个正在运行的语音呼叫,并且想要通过pcmC0D0p在上行链路上播放一些音频,您可以通过adb shell完成此操作(假设您已获得根用户访问权限):
amix 'Incall_Music Audio Mixer MultiMedia1' 1
aplay -Dhw:0,0 mono_8khz_audio.wav更好的方法是在设备的UCM文件(snd_soc_msm_blah_blah..)中创建一个新的用例。其中,在新修改器的使能序列中添加来电音乐路由:
'Incall_Music Audio Mixer MultiMedia1':1:1(请记住在禁用序列中将其关闭)。
为了使应用程序能够在您的自定义ROM上使用此功能,您还必须在音频HAL和多媒体框架中进行一些其他更改,以便在呼叫处于活动状态时为所需的流类型选择新的UCM设置。
由于版权的原因,我不能深入讨论其余实现的细节,所以我将把它作为一个练习,让感兴趣的人自己弄清楚。
https://stackoverflow.com/questions/15204570
复制相似问题