alsa音频驱动,overrun,underrun

mlinksa 2011-07-08 04:12:01
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
};
...全文
945 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
suer0101 2012-03-01
  • 打赏
  • 举报
回复
我也是很想知道这个问题的解决方案,我在写应用程序的时候,发现只能通过立体声录音,感觉应该是跟.channel_min这个参数有关系,如果楼主知道答案,还望赐教,不胜感激!
smilerll 2011-08-30
  • 打赏
  • 举报
回复
我也有类似的问题,这个snd_pcm_hardware结构体该怎么设定
大旺 2011-07-09
  • 打赏
  • 举报
回复
问下楼主:你是soc架构的声卡还usb的声卡?
你录音是放在那个目录的?换个目录试试,最好不要放在sd卡里录音,可能有些问题,我前段时间也是这样的,我当时测试的usb声卡!
采样率的支持不是在pcm驱动里,是在codec驱动和ssi的驱动里面(soc架构是这样的。),两个采样率都是通过dai->playback.rates和dai->capture.rates。

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧