主题 : mini2440怎么样设置声音采样率 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 5447
精华: 0
发帖: 34
金钱: 325 两
威望: 313 点
综合积分: 68 分
注册时间: 2009-04-23
最后登录: 2012-08-22
楼主  发表于: 2009-05-13 16:43

 mini2440怎么样设置声音采样率

通过在论坛上求教,在mini2440的2.6.13内核上可以录音了。
其默认的录音格式为:16K采样率,16位单声道。
我现在需要的是8K采样率,16位单声道,即只要把采样率改为8K就可以。
要怎么样修改驱动呢?
比较茫然。。。
[ 此帖被wangzai368在2009-05-14 15:50重新编辑 ]
级别: 新手上路
UID: 5447
精华: 0
发帖: 34
金钱: 325 两
威望: 313 点
综合积分: 68 分
注册时间: 2009-04-23
最后登录: 2012-08-22
1楼  发表于: 2009-05-13 16:51
在PC上是可以设置这些参数的。。。
级别: 侠客
UID: 4545
精华: 3
发帖: 88
金钱: 810 两
威望: 614 点
综合积分: 236 分
注册时间: 2009-03-19
最后登录: 2020-06-17
2楼  发表于: 2009-05-13 22:19
复制代码
  1. ………………
  2. #include <linux/soundcard.h>
  3. #define RATE 8000   /* 采样频率 */
  4. #define SIZE 8      /* 量化位数 */
  5. #define CHANNELS 1  /* 声道数目 */
  6. …………
  7. /* 设置采样时的量化位数 */
  8.   arg = SIZE;
  9.   status = ioctl(fd, SOUND_PCM_WRITE_BITS, &arg);
  10.   if (status == -1)
  11.     perror("SOUND_PCM_WRITE_BITS ioctl failed");
  12.   if (arg != SIZE)
  13.     perror("unable to set sample size");
  14.   /* 设置采样时的声道数目 */
  15.   arg = CHANNELS;
  16.   status = ioctl(fd, SOUND_PCM_WRITE_CHANNELS, &arg);
  17.   if (status == -1)
  18.     perror("SOUND_PCM_WRITE_CHANNELS ioctl failed");
  19.   if (arg != CHANNELS)
  20.     perror("unable to set number of channels");
  21.   /* 设置采样时的采样频率 */
  22.   arg = RATE;
  23.   status = ioctl(fd, SOUND_PCM_WRITE_RATE, &arg);
  24.   if (status == -1)
  25.     perror("SOUND_PCM_WRITE_WRITE ioctl failed");


前端时间我也做了个音频采集传输的项目,贴出关键几段代码,具体楼主想研究可到IBM DW看看,有篇介绍Linux下的音频编程的文章。
级别: 新手上路
UID: 5447
精华: 0
发帖: 34
金钱: 325 两
威望: 313 点
综合积分: 68 分
注册时间: 2009-04-23
最后登录: 2012-08-22
3楼  发表于: 2009-05-14 10:13

 回 2楼(长风) 的帖子

现在的问题是,我在PC上的录音程序和你说的差不多,能正确设置和录音。
但是,在mini2440的2.6.13内核上时,设置声音量化位数时出错了。
有可能是驱动程序不支持ioctl(fd, SOUND_PCM_WRITE_BITS, &arg);
级别: 侠客
UID: 4545
精华: 3
发帖: 88
金钱: 810 两
威望: 614 点
综合积分: 236 分
注册时间: 2009-03-19
最后登录: 2020-06-17
4楼  发表于: 2009-05-14 12:29
换新内核吧
级别: 新手上路
UID: 5447
精华: 0
发帖: 34
金钱: 325 两
威望: 313 点
综合积分: 68 分
注册时间: 2009-04-23
最后登录: 2012-08-22
5楼  发表于: 2009-05-14 14:52

 回 4楼(长风) 的帖子

如果换友善的最新的2.6.29的话,交叉编译器是用4.3.2编译的,而第三方提供的开发包是用3.4.1编译的,程序不能用。
有没有解决办法啊。。。
级别: 新手上路
UID: 5447
精华: 0
发帖: 34
金钱: 325 两
威望: 313 点
综合积分: 68 分
注册时间: 2009-04-23
最后登录: 2012-08-22
6楼  发表于: 2009-05-14 15:47
其实,在mini2440的2.6.13内核上,默认的录音格式为:16K采样率,16位单声道。
我现在需要的是8K采样率,16位单声道,即只要把采样率改为8K就可以。
比较茫然。。。