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

FCARM 2009-04-21 10:02:30
在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;

}
...全文
76 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

18,772

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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