免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3660 | 回复: 1
打印 上一主题 下一主题

oss编程,如何精确控制输入输出同步? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-17 21:29 |只看该作者 |倒序浏览
10可用积分
最近用oss编程序遇到点问题,哪位大哥能给指点一下迷津

为了试验回声消除算法,我需要精确同步声音的输出和输入

在oss默认设置下,调用write后音箱是不会马上出声的,需要延迟一小段时间来保证声音能平滑输出。这个缓冲延时有多大,有没有什么办法能预先知道?我试过用ioctl SNDCTL_DSP_GETODELAY获取延迟,发现这个延迟是不断变化的,没法用。

然后我就想,能不能用mmap自己控制缓冲区,结果发现还是无法满足要求。我用一个select,控制oss每播放一段数据后就通知我,然后我就可以在缓冲里写入新的数据。但是这个select却无法控制,按照oss的文档,可以使用SNDCTL_DSP_SETFRAGMENT设置缓冲块大小和个数,但是select以后却并不是每播放一个FRAGMENT就返回,返回间隔有时长有时短,找不到规律。导致无法正确写入下一帧数据,播放的声音断断续续。

另外我发现,在fedroa4下无法像RH9那样用SNDCTL_DSP_SETTRIGGER启动音频输入,现象是调用read后一直阻塞

[ 本帖最后由 weedeater 于 2007-1-17 21:33 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-01-19 13:13 |只看该作者
有人用过oss吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP