您的位置:首页 > 其它

杰理AC690X系列---DACR做外音输入通道声音小的问题(7)

2018-03-30 11:11 309 查看
我们在做项目时经常会用到DAC有声道做外音输入,DAC左声道做输出的情况。
有些客户测试的比较细,会发现外音输入时声音比蓝牙或其他模式的声音小。
这种情况本人遇到很多遍,目前解决方法如下:
在dac.c文件下写一个子函数void dac_differnt_output(s16 *buf)
{
u8 i;
s16 *s16_ptr;
s32 temp_dac_buf;
s16_ptr = buf;
for(i=0;i<DAC_DUAL_BUF_LEN;i=i+2)
{
temp_dac_buf = s16_ptr[i]<<1;
if(temp_dac_buf > 32767)
temp_dac_buf = 32767;
else if(temp_dac_buf < -32768)
temp_dac_buf = -32768;
s16_ptr[i] = (s16)temp_dac_buf;
}
for(i=1;i<DAC_DUAL_BUF_LEN;i=i+2)
{
temp_dac_buf = s16_ptr[i]<<1;
if(temp_dac_buf > 32767)
temp_dac_buf = 32767;
else if(temp_dac_buf < -32768)
temp_dac_buf = -32768;
s16_ptr[i] = (s16)temp_dac_buf;
}
}然后在下面位置调用:



注意只能在外音模式下调用,不然其他模式声音也会变大。
完成以上步骤后,我们找到linein.c文件
在aux_dac_channel_on()这个函数实体的末尾把DACR的音量设置为0



然后在static void linein_task_exit(void)这个函数的实体中恢复DACR的音量



添加完上面所有代码,你会发现外音输入声音大小和蓝牙的声音大小一样了。
当然了,音量加减那一块也要分模式处理,这个就不细讲了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: