主题 : mini2440 录音放音问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 5447
精华: 0
发帖: 34
金钱: 325 两
威望: 313 点
贡献值: 0 点
综合积分: 68 分
注册时间: 2009-04-23
最后登录: 2012-08-22
楼主  发表于: 2009-04-28 12:32

 mini2440 录音放音问题

    前两天,按照论坛里的帖子,解决了2.6.13内核上的录音问题。
  但录放音还有些问题:
1、初始化声卡的时候,可以设置采样率、声道数,但无法设置声音采样位数。怎么解决?
2、mini2440上录音时,用的是板载的mic,在录音的时候,耳机不是静音,即录音的时候耳机同时有回响。我想在录音的时候,耳机不要有回响。怎么解决?
3、一样的程序,我在PC的ubuntu上能录能放音,但移到mini2440上时,能录音,但不能放音,而且也没有报错,像进入死循环的感觉。挺奇怪的。怎么解决?
  
   有经验或者有兴趣的指教一下,讨论讨论。
级别: 新手上路
UID: 2346
精华: 0
发帖: 38
金钱: 340 两
威望: 294 点
贡献值: 0 点
综合积分: 76 分
注册时间: 2008-11-12
最后登录: 2019-05-09
1楼  发表于: 2009-04-28 12:39
1。驱动没有做位数吧
2。这个不是驱动的问题,应该是硬件电路的问题。可能要对uda1341进行设置
3。我觉得还是uda1341的配置问题,配置不对就不能放音了
级别: 新手上路
UID: 5447
精华: 0
发帖: 34
金钱: 325 两
威望: 313 点
贡献值: 0 点
综合积分: 68 分
注册时间: 2009-04-23
最后登录: 2012-08-22
2楼  发表于: 2009-04-29 16:27

 回 1楼(powerpan) 的帖子

如果是放音的配置不对的话,为什么madplayer能播放mp3.
直接用cat  test.wav > /dev/dsp 也有杂音输出,表明放音正常吧?
级别: 新手上路
UID: 2346
精华: 0
发帖: 38
金钱: 340 两
威望: 294 点
贡献值: 0 点
综合积分: 76 分
注册时间: 2008-11-12
最后登录: 2019-05-09
3楼  发表于: 2009-04-29 21:49
你程序贴上来看看
级别: 新手上路
UID: 2346
精华: 0
发帖: 38
金钱: 340 两
威望: 294 点
贡献值: 0 点
综合积分: 76 分
注册时间: 2008-11-12
最后登录: 2019-05-09
4楼  发表于: 2009-04-29 21:50
你程序贴上来看看
级别: 新手上路
UID: 5447
精华: 0
发帖: 34
金钱: 325 两
威望: 313 点
贡献值: 0 点
综合积分: 68 分
注册时间: 2009-04-23
最后登录: 2012-08-22
5楼  发表于: 2009-05-14 15:39
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;

    }
水滴石穿,绳锯木断
级别: 新手上路
UID: 14892
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
贡献值: 0 点
综合积分: 6 分
注册时间: 2010-02-24
最后登录: 2010-10-19
6楼  发表于: 2010-05-25 19:11
不知道楼上的问题解决了没有,我的dsp配置跟你一样,但是在mini2440开发板上放音的时候,实际语音速度要快一倍;而程序在PC上的Linux系统上是运行没问题的,求解决办法。
我分享,我快乐!
级别: 新手上路
UID: 36113
精华: 0
发帖: 14
金钱: 80 两
威望: 16 点
贡献值: 0 点
综合积分: 28 分
注册时间: 2011-01-11
最后登录: 2011-09-30
7楼  发表于: 2011-01-11 23:47
    我用2..6.32.2内核也遇到跟楼主问题2同样的问题,录音的时候,耳机居然同步把mic录的声音播放出来了,无论用oss编程还是alsa编程均是如此。弄几个月还是搞不定。
    联系过友善之臂,也无解。希望知道的人给个答案,万分感激!
级别: 新手上路
UID: 83761
精华: 0
发帖: 2
金钱: 10 两
威望: 2 点
贡献值: 0 点
综合积分: 4 分
注册时间: 2012-12-11
最后登录: 2012-12-12
8楼  发表于: 2012-12-12 00:04
谢谢楼主
级别: 侠客
UID: 67286
精华: 0
发帖: 82
金钱: 425 两
威望: 85 点
贡献值: 0 点
综合积分: 164 分
注册时间: 2012-04-09
最后登录: 2022-01-10
9楼  发表于: 2015-04-16 15:23

 回 7楼(山猪将军) 的帖子

这问题搞定了吗