免费注册 查看新帖 |

Chinaunix

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

Linux声卡编程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-06-24 14:59 |只看该作者 |倒序浏览
经过小第的不懈努力,终于对声卡编程有了一定的掌握.实现了一个小的录音

程序,//hehe //admire <me>;

当然还很不完善,还有一些细节我不大清楚//shy,现将原码贴出,请各位给帮

忙指正,//xixi


  1. #include <sys/soundcard.h>;

  2. #include <stdio.h>;

  3. #include <sys/types.h>;

  4. #include <sys/stat.h>;

  5. #include <fcntl.h>;


  6. main()

  7. {

  8. int id,fd,i,j;

  9. char testbuf[4096];


  10. id=open("/dev/audio",O_RDWR);

  11. fd=open("test.wav",O_RDWR);

  12. if(id<0||fd<0){

  13. printf("error in open the device!\n");

  14. printf("id %d\t dsp%d\t seq%d\n",id,dsp,seq);

  15. exit(-1);

  16. }


  17. post=0;


  18. ioctl(id,SNDCTL_DSP_RESET,(char *)&i);

  19. ioctl(id,SNDCTL_DSP_SYNC,(char *)&i);

  20. i=1;

  21. ioctl(id,SNDCTL_DSP_NONBLOCK,(char *)&i);

  22. i=8000;

  23. ioctl(id,SNDCTL_DSP_SPEED,(char *)&i);

  24. i=1;

  25. ioctl(id,SNDCTL_DSP_CHANNELS,(char *)&i);

  26. i=8;

  27. ioctl(id,SNDCTL_DSP_SETFMT,(char *)&i);

  28. i=3;

  29. ioctl(id,SNDCTL_DSP_SETTRIGGER,(char *)&i);

  30. i=3;

  31. ioctl(id,SNDCTL_DSP_SETFRAGMENT,(char *)&i);

  32. i=1;

  33. ioctl(id,SNDCTL_DSP_PROFILE,(char *)&i);

  34. for(j=0;j<10;){

  35. i=read(id,testbuf,4096);

  36. if(i>;0){

  37. write(fd,filebuf,i);

  38. j++;

  39. }

  40. }

  41. close(fd);

  42. close(id);

  43. }

复制代码

该程序只是简单地录一小段纯音频数据存储在test.wav中,用命令

cat test.wav >;/dev/audio 就可以播放出来

对了因为程序要读写声卡的设备文件,所以你必须用相应的权限,或者

你是root,//hehe

论坛徽章:
0
2 [报告]
发表于 2003-06-24 14:59 |只看该作者

Linux声卡编程

转自
http://www.lisoleg.net/lisoleg/applications/Linux%C9%F9%BF%A8%B1%E0%B3%CC.htm
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP