⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 play.c

📁 uda1341 linux driver for s3c2440.
💻 C
字号:
#include <unistd.h>#include <fcntl.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/ioctl.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <linux/soundcard.h>#define OPEN_DSP_FAILED     0x00000001      /*打开  dsp 失败!*/#define SAMPLERATE_STATUS     0x00000002    /*samplerate status failed*/#define SET_SAMPLERATE_FAILED  0x00000003   /*set samplerate failed*/#define CHANNELS_STATUS       0x00000004    /*Channels status failed*/#define SET_CHANNELS_FAILED    0x00000005   /*set channels failed*/#define FMT_STATUS       0x00000006        /*FMT status failed*/#define SET_FMT_FAILED     0x00000007       /*set fmt failed*/#define OPEN_FILE_FAILED        0x00000008    /*opem filed failed*/int P8100_Audio_Play(char *pathname,int nSampleRate,int nChannels,int fmt){int dsp_fd,mix_fd,status,arg;dsp_fd = open("/dev/dsp" , O_RDWR);   /*open dsp*///dsp_fd = open("/dev/dsp" , O_WRONLY);if(dsp_fd < 0){  return  OPEN_DSP_FAILED;}#if 1arg = nSampleRate;status = ioctl(dsp_fd,SOUND_PCM_WRITE_RATE,&arg); /*set samplerate*/if(status < 0){  close(dsp_fd);  return SAMPLERATE_STATUS;}if(arg != nSampleRate){  close(dsp_fd);  return SET_SAMPLERATE_FAILED;}arg = nChannels;  /*set channels*/   status = ioctl(dsp_fd, SOUND_PCM_WRITE_CHANNELS, &arg);if(status < 0){  close(dsp_fd);  return CHANNELS_STATUS;}if( arg != nChannels){  close(dsp_fd);  return SET_CHANNELS_FAILED;}arg = fmt; /*set bit fmt*/status = ioctl(dsp_fd, SOUND_PCM_WRITE_BITS, &arg);if(status < 0){  close(dsp_fd);  return FMT_STATUS;}if(arg != fmt){  close(dsp_fd);  return SET_FMT_FAILED;}/*到此设置好了DSP的各个参数*/            #endifFILE *file_fd = fopen(pathname,"r");if(file_fd == NULL){  close(dsp_fd);  return OPEN_FILE_FAILED;}int num = 3*nChannels*nSampleRate*fmt/8;int get_num;char buf[num];printf("num = %d\n",num);while(feof(file_fd) == 0){  get_num = fread(buf,1,num,file_fd);  printf("get_num = %d\n",get_num );  write(dsp_fd,buf,get_num);    if(get_num != num)  {   close(dsp_fd);   fclose(file_fd);   return 0;  }}close(dsp_fd);fclose(file_fd);return 0;}/**test*/int main(){int value;value = P8100_Audio_Play("029.wav",16000,1,16);//注意播放文件的路径哦!!fprintf(stderr,"value is %d\n",value);return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -