/*2010-12-30*/
/*linux-2.6.22.6移植mplayer到FL2440-I*/
/*主机系统:ubuntu 10.10 */
/*目标板:FL2440-I / linux-2.6.22.6 */
/*交叉编译器:arm-linux-gcc-3.4.1 */
/*软件资源:libmad-0.15.1b.tar.gz,MPlayer-1.0rc2.tar.bz2*/
http://www.mplayerhq.hu/MPlayer/releases/
http://cdnetworks-kr-1.dl.sourceforge.net/project/mad/libmad/0.15.1b/libmad-0.15.1b.tar.gz
1.将libmad-0.15.1b.tar.gz和MPlayer-1.0rc2.tar.bz2解压.
2.进入libmad-0.15.1b:
(1)配置,生成Makefile:(--prefix=/usr/local/arm/3.4.1/lib为指定最终生成的库文件的安装路径,CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc为指定交叉编译工具路径)
sudo ./configure --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=/usr/local/arm/3.4.1/lib CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc
(2)编译:
sudo make
(3)安装:
sudo make install
3.进入MPlayer-1.0rc2:
(1)配置,生成Makefile:(extraincdir=/usr/local/arm/3.4.1/lib/include和--with-extralibdir=/usr/local/arm/3.4.1/lib/lib指定了上一步安装库文件在路径)
sudo ./configure --cc=/usr/local/arm/3.4.1/bin/arm-linux-gcc --target=arm-linux --enable-static --prefix=/tmp/mplayer-rc2 --disable-win32dll --disable-dvdread --enable-fbdev --disable-mencoder --disable-live --disable-mp3lib --enable-mad --enable-libavcodec_a --language=zh_CN --disable-armv5te --disable-armv6 --with-extraincdir=/usr/local/arm/3.4.1/lib/include --with-extralibdir=/usr/local/arm/3.4.1/lib/lib --host-cc=gcc --enable-ossaudio
(2)编译:
sudo make
当前目录下会生成mplayer.
将其拷到开发板上,执行:
./mplayer xxx.avi 不能播放...
./mplayer -nosound xxx.avi 有画面,没声音...
网上找办法......
修改音频驱动源程序:
vi sound/oss/s3c2410-uda1341.c
(s3c2410-uda1341.c为移植UDA1341驱动到FL2440-I时添加的,UDA1341移植见这里:http://blog.csdn.net/ll_0520/archive/2010/12/31/6110836.aspx)
添加的位置具体见以下代码的粗体部分:
static int smdk2410_audio_open(struct inode *inode, struct file *file)
{
int cold = !audio_active;
DPRINTK("audio_openn");
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);
// 加上以下这2行代码
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);
}
}
return 0;
}
改完驱动后,重新编译内核。
按以上的方法做了,但是还是出现同样的提示,仔细的看了驱动,在驱动上加了
大量的调试信息最后发现在smdk2410_audio_ioctl 中调用的一个函数老是返回错
误,这个函数是access_ok(VERIFY_WRITE, inf, sizeof(*inf)),查了这个函数
的代码发现返回1的时候是表示可以访问,而不是错误,所以导致下面代码老是出
错,其实运行都是对的:
int err = access_ok(VERIFY_WRITE, inf, sizeof(*inf));
if (err)
return err;
于是改成int err = !access_ok(VERIFY_WRITE, inf, sizeof(*inf));
./mplayer -ac mad xxx.avi
./mplayer -ac mad xxx.mp3
泪奔啊......吗的终于有声了>_<
MPlayer 1.0rc2-3.4.1 (C) 2000-2007 MPlayer Team
CPU: ARM
用法: mplayer [选项] [URL|路径/]文件名
基本选项: (完整列表参见手册页)
-vo <drv> 选择视频输出驱动 (查看驱动列表用“-vo help”)
-ao <drv> 选择音频输出驱动 (查看驱动列表用“-ao help”)
vcd://<trackno> 播放 (S)VCD 轨迹号 (原始设备, 无需安挂)
dvd://<titleno> 从设备而不是普通文件上播放 DVD 标题号
-alang/-slang 选择 DVD 音轨/字幕的语言(使用两字符的国家代号)
-ss <position> 寻找到给定(多少秒或时分秒 hh:mm:ss 的)位置
-nosound 不播放声音
-fs 全屏播放 (或者用 -vm, -zoom, 详见于手册页)
-x <x> -y <y> 设置显示的分辨率(提供给 -vm 或者 -zoom 使用)
-sub <file> 指定字幕文件 (参见 -subfps, -subdelay)
-playlist <file> 指定播放列表文件
-vid x -aid y 选择用于播放的 x 视频流和 y 音频流通道号
-fps x -srate y 改变视频率为 x 帧秒(fps)和音频率为 y 赫兹(Hz)
-pp <quality> 使用后期处理过滤器/滤镜 (详见于手册页)
-framedrop 使用丢帧(用于慢机器)
基本控制键: (完整的列表参见于手册页, 同时也请核查 input.conf)
<- or -> 后退/快进 10 秒
down or up 后退/快进 1 分钟
pgdown or pgup 后退/快进 10 分钟
< or > 跳到播放列表中的前一个/后一个
p or SPACE 暂停播放(按任意键继续)
q or ESC 停止播放并退出程序
+ or - 调整音频延迟增加/减少 0.1 秒
o 循环 OSD 模式: 无/搜索条/搜索条加计时器
* or / 增加或减少 PCM 音量
x or z 调整字幕延迟增加/减少 0.1 秒
r or t 上/下调整字幕位置, 参见“-vf expand”
参考链接:
http://blog.chinaunix.net/u3/108761/showart_2144607.html
http://hi.baidu.com/vilont/blog/item/614c6b0af690fb1a94ca6b39.html/cmtid/2882ad3d57c2f6e33d6d97b8
http://www.cnitblog.com/puppypyb/archive/2008/10/10/48875.html