int OpenDsp(int nSampleRate,int nChannels,int fmt)
{
int mix_fd,status,arg;
//在pc上
dsp_fd = open("/dev/dsp" , O_RDWR); /*open dsp*/
if(dsp_fd < 0)
{
printf("OPEN_DSP_FAILED!\n");
return OPEN_DSP_FAILED;
}
arg = nSampleRate;
status = ioctl(dsp_fd,SOUND_PCM_WRITE_RATE,&arg); /*set samplerate*/
if(status < 0)
{
close(dsp_fd);
printf("SAMPLERATE_STATUS!\n");
return SAMPLERATE_STATUS;
}
if(arg != nSampleRate)
{
close(dsp_fd);
printf("SET_SAMPLERATE_FAILED!\n");
return SET_SAMPLERATE_FAILED;
}
arg = nChannels; /*set channels*/
status = ioctl(dsp_fd, SOUND_PCM_WRITE_CHANNELS, &arg);
if(status < 0)
{
close(dsp_fd);
printf("CHANNELS_STATUS!\n");
return CHANNELS_STATUS;
}
if( arg != nChannels)
{
close(dsp_fd);
printf("SET_CHANNELS_FAILED!\n");
return SET_CHANNELS_FAILED;
}
arg = fmt; //set bit fmt
status = ioctl(dsp_fd, SOUND_PCM_WRITE_BITS, &arg);
if(status < 0)
{
close(dsp_fd);
printf("FMT_STATUS!\n");
return FMT_STATUS;
}
if(arg != fmt)
{
close(dsp_fd);
printf("SET_FMT_FAILED!\n");
return SET_FMT_FAILED;
}
/*到此设置好了DSP的各个参数*/
return 0;
}