当前位置:  技术问答>linux和unix

[ALSA]如何使得采集buff中有数据时通知上层来取

    来源: 互联网  发布时间:2017-03-14

    本文导语:  在ALSA的音频开发当中,DMA会从McAsp的Audio FIFO中取数据到内存中的DMA buffer。如果上层此时要capture,就调用snd_pcm_readi函数,该函数最终往下调用到驱动层,driver从DMA buffer中取音频数据返回给上层。 但是这里有一个...

在ALSA的音频开发当中,DMA会从McAsp的Audio FIFO中取数据到内存中的DMA buffer。如果上层此时要capture,就调用snd_pcm_readi函数,该函数最终往下调用到驱动层,driver从DMA buffer中取音频数据返回给上层。

但是这里有一个缺陷就是,每次的取数据都是上层调用read函数去取,而两次read之间buffer中已有的有效数据量的多少是不确定的,况且两次read之间的间隔时间由于程序的运行,往往也是不确定的。而这往往会导致overrun的错误。

想问下ALSA是否有一种机制,即当buffer中的有效数据达到要求时,就发送一个信号通知上层,这样就能及时地把有效的音频数据读出来,避免每次读取都有遗留,导致最后缓冲区溢出,产生overrun错误。

|
alsa会维护一套数据传输状态,但是好像上面读数据是阻塞的,上面去读的时候buffer够你要读的数据就立马读完返回,如果不够就得等。上面读不及时,下面alsa就会有overrun,数据buffer溢出。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • alsa应用编程alsa-lib怎么使用?
  • alsa-driver与alsa-lib之间的关系
  • 求助 !!ALSA声卡驱动错误!
  • 請問kernel 2.4能使用alsa sound driver嗎
  • 请教下关于alsa-lib的问题。
  • alsa 资料
  • (一个难倒不少的人问题)redhat 声卡 alsa 安装遇到的问题
  • 以下这个错误信息是什么意思(关于ALSA的)
  • Linux声卡驱动 ALSA driver
  • ALSA库的C++封装 aseqmm
  • SDL与ALSA冲突?
  • 请问 linux 是如何调用 alsa的控制接口的??是通过控制接口名字吗?
  • 我在安装alsa时出错,请各位帮忙
  • alsa driver問題
  • 请教Linux下ALSA声道切换
  • alsa 框架分析,大家帮忙。
  • 高级Linux声音架构 ALSA
  • alsa放音模式
  • ALSA打开设备问题求助
  • 急~怎么使用alsa直接从声卡录音?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3