当前位置:  技术问答>linux和unix

alsa音频驱动,overrun,underrun

    来源: 互联网  发布时间:2017-02-07

    本文导语:  telechips 8803. linux 2.6.35.7 在小系统下用arecord,aplay录放音测试,设置采样率在44100以上的单声道双声道录放都正常,但是在这个采样率一下的录音会提示overrun。调整了结构体snd_pcm_hardware的设置,有改变,但不是很清楚...

telechips 8803. linux 2.6.35.7
在小系统下用arecord,aplay录放音测试,设置采样率在44100以上的单声道双声道录放都正常,但是在这个采样率一下的录音会提示overrun。调整了结构体snd_pcm_hardware的设置,有改变,但不是很清楚这个结构体的赋值是怎么计算出来的。
请问,如何调整驱动对采样率的支持?还有就是snd_pcm_hardware这个结构的怎么赋值?谢谢
当前设置如下

#define __play_buf_size 4096
#define __play_buf_cnt  16

#define __cap_buf_size 4096
#define __cap_buf_cnt  16
static const struct snd_pcm_hardware tcc_pcm_hardware_play = {
    .info = (SNDRV_PCM_INFO_MMAP
             | SNDRV_PCM_INFO_MMAP_VALID
             | SNDRV_PCM_INFO_INTERLEAVED
             | SNDRV_PCM_INFO_BLOCK_TRANSFER
             | SNDRV_PCM_INFO_PAUSE
             | SNDRV_PCM_INFO_RESUME),

    .formats      = (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE),
    .rates        = SNDRV_PCM_RATE_8000_96000,
    .rate_min     = 8000,
    .rate_max     = 96000, 
    .channels_min = 2,
    .channels_max = 2,                                

    .period_bytes_min = 1024,
    .period_bytes_max = __play_buf_size,
    .periods_min      = 2,
    .periods_max      = __play_buf_cnt ,
    .buffer_bytes_max = __play_buf_cnt * __play_buf_size ,
    .fifo_size = 16,  //ignored
};

static const struct snd_pcm_hardware tcc_pcm_hardware_capture = {
    .info = (SNDRV_PCM_INFO_MMAP
             | SNDRV_PCM_INFO_MMAP_VALID
             | SNDRV_PCM_INFO_INTERLEAVED
             | SNDRV_PCM_INFO_BLOCK_TRANSFER
             | SNDRV_PCM_INFO_PAUSE
             | SNDRV_PCM_INFO_RESUME),

    .formats      = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE,
    .rates        = SNDRV_PCM_RATE_8000_96000,
    .rate_min     = 8000,
    .rate_max     = 96000,
    .channels_min = 2,
    .channels_max = 2,                                

    .period_bytes_min = 1024,
    .period_bytes_max = __cap_buf_size ,
    .periods_min      = 2,
    .periods_max      = __cap_buf_cnt,
    .buffer_bytes_max = __cap_buf_cnt * __cap_buf_size,
    .fifo_size = 16, //ignored
};

|
问下楼主:你是soc架构的声卡还usb的声卡?
你录音是放在那个目录的?换个目录试试,最好不要放在sd卡里录音,可能有些问题,我前段时间也是这样的,我当时测试的usb声卡!
采样率的支持不是在pcm驱动里,是在codec驱动和ssi的驱动里面(soc架构是这样的。),两个采样率都是通过dai->playback.rates和dai->capture.rates。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • alsa应用编程alsa-lib怎么使用?
  • alsa-driver与alsa-lib之间的关系
  • 求助 !!ALSA声卡驱动错误!
  • 請問kernel 2.4能使用alsa sound driver嗎
  • 请教下关于alsa-lib的问题。
  • alsa 资料
  • (一个难倒不少的人问题)redhat 声卡 alsa 安装遇到的问题
  • 以下这个错误信息是什么意思(关于ALSA的)
  • Linux声卡驱动 ALSA driver
  • ALSA库的C++封装 aseqmm
  • SDL与ALSA冲突?
  • 请问 linux 是如何调用 alsa的控制接口的??是通过控制接口名字吗?
  • 我在安装alsa时出错,请各位帮忙
  • alsa driver問題
  • 请教Linux下ALSA声道切换
  • alsa 框架分析,大家帮忙。
  • ALSA编程非交错模式采集到的数据都是0
  • [ALSA]如何使得采集buff中有数据时通知上层来取
  • 高级Linux声音架构 ALSA
  • alsa放音模式


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3