推荐文章:
1. ALSA & ASOC -- PCM环形缓冲区管理
2.Linux ALSA声卡驱动之八:ASoC架构中的Platform --6.2 dma buffer管理
3.[RK3288][Android6.0] ALSA的buffer指针更新(hw_ptr)
下图引用自上两篇文章
1.avail = hw_ptr + buffer_size - appl_ptr
a):在播放时,hw_ptr为读指针,appl_ptr为写指针,此处的指针实际为frameCount,并不是实际的
程序中的指针变量, avail为可用的buffer空间,可用的buffer空间分为两部分,appl_ptr写指针后的
空间,hw_ptr读过的空间, buffer_size - appl_ptr 为可写入的数量,hw_ptr为读过的数量,加在
一起为可用的总量