在arm9 linux 系统下,写简单的 语音采集和播放程序 遇到问题:
步骤
1.将/dev/dsp 以O_RDWR 和 同步方式打开,设置采样频率8000,双通道,16位
2.在循环中read 160字节,接着write刚读到的160字节。
问题
这段代码在Linux - pc上,编译运行是正常的,但是在arm上,刚开始几个周期是正确的,后来read就返回错误 错误码为5 - Input/output error。
不知道是什么原因?
如果在write之后,写上ioctl(f,SNDCTL_DSP_SYNC,NULL),程序正常,不过每个读写时间会很长。
代码
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LENGTH 5 /* 存储秒数 */
#define RATE 8000 /* 采样频率 */
#define SIZE 16 /* 量化位数 */
#define CHANNELS 2 /* 声道数目 */
#define READ_WRITE_NUM 160
/* 用于保存数字音频数据的内存缓冲区 */
unsigned char *pbuf = new unsigne