移植后的mplayer无法播放出音频

FCARM FCARM 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在CSDN里看到一高手移植后, 我也照他的方法移植了mplayer,出现在情况一样

不过我用的是QQ2440 ,内核是2.6.23

在内核里找了好久,都找不到那段代码.

在UDA1341.C里找不到要改的代码,那位大哥帮帮忙

哪位对驱动熟悉的帮一下哦


解决的办法是在音频驱动源码的smdk2410_audio_open()函数体,加上如下一段代码,

if (!output_stream .buffers && audio_setup_buf(&output_stream))


return -ENOMEM;

添加的位置具体见以下代码的粗体部分:



static int smdk2410_audio_open(struct inode *inode, struct file *file)

{

int cold = !audio_active;



DPRINTK("audio_open\n");



if ((file->f_flags & O_ACCMODE) == O_RDONLY) {

if (audio_rd_refcount || audio_wr_refcount)

return -EBUSY;

audio_rd_refcount++;

} else if ((file->f_flags & O_ACCMODE) == O_WRONLY) {

if (audio_wr_refcount)

return -EBUSY;

audio_wr_refcount++;

} else if ((file->f_flags & O_ACCMODE) == O_RDWR) {

if (audio_rd_refcount || audio_wr_refcount)

return -EBUSY;

audio_rd_refcount++;

audio_wr_refcount++;

} else

return -EINVAL;



if (cold) {

audio_rate = AUDIO_RATE_DEFAULT;

audio_channels = AUDIO_CHANNELS_DEFAULT;

audio_fragsize = AUDIO_FRAGSIZE_DEFAULT;

audio_nbfrags = AUDIO_NBFRAGS_DEFAULT;

if ((file->f_mode & FMODE_WRITE)){

init_s3c2410_iis_bus_tx();

audio_clear_buf(&output_stream);

// 加上以下这行代码


if (!output_stream .buffers && audio_setup_buf(&output_stream))


return -ENOMEM;

}

if ((file->f_mode & FMODE_READ)){

init_s3c2410_iis_bus_rx();

audio_clear_buf(&input_stream);

}

}



MOD_INC_USE_COUNT;



return 0;

}
...全文

相关推荐

评论
收藏 已收藏
分享
返回顶部
FCARM
Linux/Unix社区 18,828 成员 11,488 内容