linux下ALSA播放声音的源程序.docx

linux下ALSA播放声音的源程序.docx

ID:50827556

大小:32.18 KB

页数:4页

时间:2020-03-15

linux下ALSA播放声音的源程序.docx_第1页
linux下ALSA播放声音的源程序.docx_第2页
linux下ALSA播放声音的源程序.docx_第3页
linux下ALSA播放声音的源程序.docx_第4页
资源描述:

《linux下ALSA播放声音的源程序.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、linux下ALSA播放声音的源程序#include/*UsethenewerALSAAPI*/#defineALSA_PCM_NEW_HW_PARAMS_API#includeintmain(){   longloops;   intrc;   intsize;   snd_pcm_t*handle;   snd_pcm_hw_params_t*params;   unsignedintval;   intdir;   snd_pcm_ufra

2、mes_tframes;   snd_pcm_uframes_tperiodsize;   char*buffer;   FILE*fp=fopen("play.wav","rb");   if(fp==NULL)   return0;   fseek(fp,100,SEEK_SET);   /*OpenPCMdeviceforplayback.*/   rc=snd_pcm_open(&handle,"default",                 SND_PCM_STREAM_PLAYBAC

3、K,0);//SND_PCM_NONBLOCK);   if(rc<0){   fprintf(stderr,         "unabletoopenpcmdevice:%s",         snd_strerror(rc));   exit(1);   }   /*Allocateahardwareparametersobject.*/   snd_pcm_hw_params_alloca(¶ms);   /*Fillitinwithdefaultvalues.*/   snd

4、_pcm_hw_params_any(handle,params);   /*Setthedesiredhardwareparameters.*/   /*Interleavedmode*/   snd_pcm_hw_params_set_access(handle,params,                   SND_PCM_ACCESS_RW_INTERLEAVED);   /*Signed16-bitlittle-endianformat*/   snd_pcm_hw_params_se

5、t_format(handle,params,                           SND_PCM_FORMAT_S16_LE);   /*Twochannels(stereo)*/   snd_pcm_hw_params_set_channels(handle,params,1);   /*44100bits/secondsamplingrate(CDquality)*/   val=8000;   snd_pcm_hw_params_set_rate_near(handle,pa

6、rams,                               &val,&dir);   /*Setperiodsizeto32frames.*/   frames=32;   periodsize=frames*2;   rc=snd_pcm_hw_params_set_buffer_size_near(handle,params,&periodsize);   if(rc<0)   {      printf("Unabletosetbuffersize%li:%s",frames

7、*2,snd_strerror(rc));         }       periodsize/=2;   rc=snd_pcm_hw_params_set_period_size_near(handle,params,&periodsize,0);   if(rc<0)   {      printf("Unabletosetperiodsize%li:%s",periodsize, snd_strerror(rc));   }      /*Writetheparameterstothed

8、river*/   rc=snd_pcm_hw_params(handle,params);   if(rc<0){   fprintf(stderr,         "unabletosethwparameters:%s",         snd_strerror(rc));   }   /*Useabufferlargeenoughtoholdoneperiod*/   snd_pcm_hw_params_get_period_size(params,&f

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。