手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

linux 内核编译重编译时常碰到的故障

[日期:2007-06-14] 来源:Linux公社  作者:Linux [字体: ]
该程序只是简单地录一小段纯音频数据存储在test.wav中,用命令cat test.wav >/dev/audio就可以播放出来。因为程序要读写声卡的设备文件,所以你必须用相应的权限,或者你是root
#include <sys/soundcard.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
main()
{
  int id,fd,i,j;
  char testbuf[4096];
  id=open("/dev/audio",O_RDWR);
  //这里使用声卡驱动程序,linux里当作一个文件读写
  fd=open("test.wav",O_RDWR);
  //一个文件
if(id<0||fd<0){
    printf("error in open the device!\n");
    printf("id %d\t dsp%d\t seq%d\n",id,dsp,seq);
    exit(-1);
  }
post=0;
  ioctl(id,SNDCTL_DSP_RESET,(char *)&i);
  ioctl(id,SNDCTL_DSP_SYNC,(char *)&i);
  i=1;
  ioctl(id,SNDCTL_DSP_NONBLOCK,(char *)&i);
  i=8000;
  ioctl(id,SNDCTL_DSP_SPEED,(char *)&i);
  i=1;
  ioctl(id,SNDCTL_DSP_CHANNELS,(char *)&i);
  i=8;
  ioctl(id,SNDCTL_DSP_SETFMT,(char *)&i);
  i=3;
  ioctl(id,SNDCTL_DSP_SETTRIGGER,(char *)&i);
  i=3;
  ioctl(id,SNDCTL_DSP_SETFRAGMENT,(char *)&i);
  i=1;
  ioctl(id,SNDCTL_DSP_PROFILE,(char *)&i);
for(j=0;j<10;){
    i=read(id,testbuf,4096);
    if(i>0){
      write(fd,filebuf,i);
      j++;
    }
  }
close(fd);
  close(id);
} linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款