我们在做项目时经常会用到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的音量

添加完上面所有代码,你会发现外音输入声音大小和蓝牙的声音大小一样了。
当然了,音量加减那一块也要分模式处理,这个就不细讲了。
本文介绍了一种在使用DAC作为外音输入时调整音量的方法。通过修改dac.c文件中的函数,可以使得外音输入的声音大小与蓝牙模式一致。此外,还需在linein.c文件中对音量进行设置。
1832

被折叠的 条评论
为什么被折叠?



