QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 580|回复: 4

救救我吧!!

[复制链接]
发表于 2004-5-14 21:30:55 | 显示全部楼层 |阅读模式
我用的操作系统是redhat 9.0,我做的是一个音频播放程序。但是我用open函数打开/dev/dsp设备文件时,有时要好长时间才能执行。请看下面这段代码。
#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#define AUDIODEV "/dev/dsp"
int main()
{
int fd;
if((fd=open(AUDIODEV,O_WRONLY))<0)
return 0;
close(fd);
}

很多次我在运行这段程序时,都需要很长时间才能结束,原因是open函数延时执行,可以用gdb和next查看。我查过资料,好象是说,不能有多个程序同时打开/dev/dsp文件,而且linux下好象是有一个音频守护进程arts,只要它在运行,这段程序就要延时运行。我现在是要写一个播放器,延时播放是肯定不行的,我不想让它延时执行,该怎么解决呢?或者说,还有没有其他的文件可以使用,能够起到同样的播放音频的效果?
发表于 2004-5-14 21:53:15 | 显示全部楼层
那你就不要直接访问设备文件,用arts接口来完成播放(不知道arts是不是一个音频接口,在gnome下是esd)
回复

使用道具 举报

 楼主| 发表于 2004-5-15 10:26:10 | 显示全部楼层
您能不能说得再具体一些。最好能给一些源代码。不过还是要谢谢你给我提供了新的思路。
回复

使用道具 举报

发表于 2004-5-15 12:46:30 | 显示全部楼层
还有一个办法就是把arts和esd程序删除
arts和esd的接口我都没用过,我也是直接访问设备文件的
回复

使用道具 举报

 楼主| 发表于 2004-5-15 18:18:14 | 显示全部楼层
这样不好吧!我有XMMS的源代码,里面好象也是直接访问设备文件的,但它好象是先判断当前设备可不可用,若不可用,选择下一个设备。不过里面代码太复杂了,我查不出到底访问了哪些设备文件(/dev/dsp可以看出来,好象还有"/dev/dsp%d",但我试过/dev/dsp1,/dev/dsp2,不行),您能不能帮我分析分析,要源码的话我可以发到你的邮箱里,小弟是在做毕业设计,快要交了,实在是没办法了。谢了先!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 08:51 , Processed in 0.035370 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表