Chinaunix首页 | 论坛 | 博客
  • 博客访问: 818018
  • 博文数量: 125
  • 博客积分: 4066
  • 博客等级: 上校
  • 技术积分: 1401
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-03 18:58
文章分类

全部博文(125)

文章存档

2014年(1)

2013年(1)

2012年(2)

2011年(29)

2010年(92)

我的朋友

分类: LINUX

2010-06-25 18:33:28

主要分成两种方式: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的。

以上理解也许有误,后面如果发现错了,及时修正。
阅读(2293) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~