写入音频数据_音频处理中的 ring buffer

本文介绍了音频处理中环形缓冲区(Ring Buffer)的概念,强调了其在处理音频数据写入过程中的作用。环形缓冲区通过读写指针管理内存,确保数据的连续写入和读取。当采样输入单元将音频数据写入,播放输出单元读取时,合适的调度模型如AUHAL,使得环形缓冲区成为理想的中间数据结构。然而,如果数据生产和消耗速度不匹配,可能会导致数据丢失或内存浪费。

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

音频处理中的循环缓冲区

ring buffer

page 184
输入单元和输出单元是不同的 I / O ,
the input unit 和 the output unit 独立启动,独立运行
输出单元 the output unit 不能直接从输入单元 the input unit 拉数据,
the input unit 和 the output unit,跑在不同的 timing cycle.
在给定的时刻,the input unit 不保证能提供采样数据
the input unit ,只有在状况良好、准备充分的条件下,才提供音频采样数据

f101861d2131a6f81309e3ab81ac4884.png

ring buffer 简单理解,就是两个指针

一个读指针,

一个写指针

  • 初始化,没有数据,可以写,不能读,

所以没有读指针,只有写指针

  • 读指针是消费数据,写指针是生产数据

读指针必须在写指针前面

  • 一直写入,不读取,就会丢失数据

但是对内存友好


采样输入单元,( 包含录音 ) ,把音频数据写进去;

播放输出单元,把音频数据读出来

调度模型

AUHAL,

Audio Unit 硬件抽象层

34ab798306927a65f544e648cfd0260a.png

ring buffer 是合适的数据结构,

只有当音频采样数据,以差不多的速度产生和消耗


ring buffer ,采用更大的内存块,

读指针和写指针,更难碰撞 ( 交叉 ),

也更加容易浪费内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值