Chinaunix首页 | 论坛 | 博客
  • 博客访问: 497570
  • 博文数量: 135
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 905
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-24 19:31
文章分类

全部博文(135)

文章存档

2010年(135)

我的朋友

分类: LINUX

2010-07-17 17:08:33

主要分成两种方式:buffer,和mmap,在这个基础上,又衍生出了根据IO中断和poll轮询来确定什么时候可读写两种不同的方式,他们都使用了注册事件的方法,至于事件的触发问题由内核系统来处理,我们不需要考虑。


int snd_async_add_pcm_handler(snd_async_handler_t **handler, snd_pcm_t *pcm, 
             snd_async_callback_t callback, void *private_data)
:这个函数为PCM增加了一个handle,设置了callback函数,安装了IO信号处理函数,IO信号发生时调用callback函数来处理读写。其中snd_async_handler_t 结构体中的glist没搞懂是做什么用的。


这种方式是不会产生Xrun的,所以不需要处理,但是当PCM的状态为SND_PCM_STATE_PREPARED的时候,还是要打开PCM的。

阅读(2572) | 评论(0) | 转发(0) |
0

上一篇:Alsa中PCM参数设置

下一篇:Alsa 小结

给主人留下些什么吧!~~