RK3399 Android7.1使用camera录像后播放没有声音

经过排查发现camera打开录像的时候,音频相关的log有如下一句:
AudioHardwareTiny: create new input stream for dev(0x00000020)
这个打开的device的设备号是:0x00000020,而我用系统的录音应用打开录音的时候,打印如下:
AudioHardwareTiny: create new input stream for dev(0x00000004)
这个打开的device的设备号是:0x00000004。
根据定义:
AUDIO_DEVICE_IN_BUILTIN_MIC = AUDIO_DEVICE_BIT_IN | 0x4
还有
AUDIO_DEVICE_IN_HDMI = AUDIO_DEVICE_IN_AUX_DIGITAL
AUDIO_DEVICE_IN_AUX_DIGITAL = AUDIO_DEVICE_BIT_IN | 0x20
判断得出camera打开录像的时候实际走的音频通道是HDMI_IN。

再通过打印中的:
alsa_route: route_set_controls() set route 21(这是打开录音时打印的)
alsa_route: route_set_controls() set route 34(这是camera打开录像时打印的)
21对应的route是:MAIN_MIC_CAPTURE_ROUTE
34对应的route是:HDMI_IN_CAPTURE_ROUTE

综上,camera录像时走的是HDMI IN的路径。

解决方法如下:

diff --git a/frameworks/av/services/audiopolicy/enginedefault/src/Engine.cpp b/frameworks/av/services/audiopolicy/enginedefault/src/Engine.cpp
index 58e198a…9d3bde9 100755
— a/frameworks/av/services/audiopolicy/enginedefault/src/Engine.cpp
+++ b/frameworks/av/services/audiopolicy/enginedefault/src/Engine.cpp
@@ -689,7 +689,8 @@ audio_devices_t Engine::getDeviceForInputSource(audio_source_t inputSource) cons
}
break;
case AUDIO_SOURCE_CAMCORDER:

  •    if (availableDeviceTypes & AUDIO_DEVICE_IN_HDMI) {
    
  •    if ((availableDeviceTypes & AUDIO_DEVICE_IN_HDMI)
    
  •            && property_get_bool("media.audio.hdmiin", false)) {
           device = AUDIO_DEVICE_IN_HDMI;
       } else if (availableDeviceTypes & AUDIO_DEVICE_IN_BACK_MIC) {
           device = AUDIO_DEVICE_IN_BACK_MIC;
    

————————————————
版权声明:本文为优快云博主「潇然四叶草」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/u011774634/article/details/125070671

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值