[RK3288][Android6.0] 调试笔记 --- 实时录音会有呲呲噪音问题

在Rockchip RK3288平台的Android 6.0系统上,APP以16k, 16bit, 单声道录音并每100ms发送一次数据到PC时,出现呲呲噪音。分析发现是由于DMA传输与APP读取速度不匹配导致数据丢失。通过减小HAL层的period size和增加period count,降低了DMA传输数据量,从而解决了噪音问题。参考链接提供了关于period_size和period_count的详细解释。" 125641465,9803657,C语言删除字符串指定字符的方法,"['C语言', '算法', '字符串处理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92

需求:
APP按照16k, 16bit, 单声道去读取录音数据, 每100ms读取一次,
也就是一次要读取3200字节,读取完之后写到网络发送到发送到PC.

现象:
经验证发现,如果读取之后直接写到文件,听到的声音不会有呲呲的噪音.
而当写到网络发送缓冲时,因为耗时比写文件要长,会存在读取到的声音
会有呲呲的噪音,怀疑是丢包了.

分析:
当APP去写网络端buffer时,驱动的dma在从audio codec读取数据存到
kernel的buffer中,然后当app去读取hal层buffer时(hal层buffer从
kernel buffer获取),因为dma存的buffer一定,当数据量较多的时候,
buffer有可能被冲掉,这样app拿到的数据可能就有问题了.

解决方法:
通过减小HAL层的period size来降低dma的传输数据量.
[kris@:~/rk3288/hardware/rockchip/audio/tinyalsa_hal]$ g df
diff --git a/tinyalsa_hal/audio_hw.h b/tinyalsa_hal/audio_hw.h
index d2c7992..a013469 100755
--- a/tinyalsa_hal/audio_hw.h
+++ b/tinyalsa_hal/audio_hw.h
@@ -178,9 +178,9 @@ struct pcm_config pcm_config = 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值