|
平台:仿照intelpxa255开发板作的。
系统:2.4.19的内核打了rmk7和pxa2的补丁
目标:写测试程序测试音频的录音功能。
问题:第一次运行测试程序,可以正常的录音,但是接着再运行测试程序录音,
发现测试程序运行时本来每隔一秒打印一次的调试语句显示的飞快,播放录下的文件,
只有微弱的电流声;察看录下的文件,发现其大小正常,但是用ultra edit察看其内容的时候,
全是0,表明从设备中读出的全是0。
测试函数如下所示:
#define DATA_BUF_LEN (4*1024)
//
// record_fun: record sound functions.
//
int record_fun(char *filename,char *strsec)
{
int n_sec; //要录制的时间长度(秒)
int fd_file,fd_dev;
int nread,ntimes_per_sec,i;
n_sec=atoi(strsec);
ntimes_per_sec=(2*2*4430/DATA_BUF_LEN;
if((fd_file=open(filename,O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR))<0) {
printf("create audio file %s failed\n",filename);
return -1;
}
if((fd_dev=open(AUDIO_DEV,O_RDONLY))<0) {
printf("open device file %s failed\n",AUDIO_DEV);
close(fd_file);
return -1;
}
printf("record to file %s\n",filename);
while(n_sec>0) {
for(i=0;i<ntimes_per_sec;i++) {
if((nread=read(fd_dev,tmpbuf,DATA_BUF_LEN))<=0) {
printf("read from dev file %s failed\n",AUDIO_DEV);
close(fd_file);
close(fd_dev);
return -1;
}
if(write(fd_file,tmpbuf,nread)<0) {
printf("write to audio file %s failed\n",filename);
close(fd_file);
close(fd_dev);
return -1;
}
}
--n_sec;
printf("%d second%c left\n",n_sec,n_sec>1?'s':' ');
}
printf("record finished\n");
close(fd_file);
close(fd_dev);
return 1;
}
请大侠们指点问题出在哪儿?
谢谢了! |
|