今晚碰到一师弟问mplayer移植的问题···时间过得真快~这样就一年过去了,去年我还才刚接触arm开发··还是最基本的博创的2410···上个笔记,当时在2410上移植mplayer的心得。
---------
Mplayer版本:MPlayer-1.0rc2
交叉编译器:Arm-linux-gcc 3.4.1
Libmad库:libmad-0.15.1b.tar.gz
1. 在终端中输入“arm-linux-“ 看是否能够自动适配出arm-linux-gcc, 然后输入-v 查看交叉编译器版本是否为3.4.1。 否则返回上面第一步。
2.
交叉编译libmad
解压libmad-0.15.1b.tar.gz,打开终端,进入该目录,输入配置命令:
./configure --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=/usr/local/arm/3.4.1/lib CC="arm-linux-gcc"
然后make, make install;
之后可在/usr/local/arm/3.4.1/lib 目录下找到生成的include和lib目录,这些就是libmad相关的库
3. 交叉编译Mplayer1.0rc2
将MPlayer-1.0rc2.tar.bz2解压至/usr/src/目录下,将目录下的libdvdcss/ioctl.c文件中的所有#error "DVD ioctls are unavailable on this system"注释掉,否则后面的编译会出错。
进入解压后的目录,在终端中输入以下命令:
4. ./configure --target=arm-linux --cc=arm-linux-gcc --enable-fbdev --disable-win32dll --disable-dvdread --disable-network --enable-menu --disable-ftp --disable-alsa --enable-ossaudio --disable-tv --disable-x11 --enable-cross-compile --target=arm-linux --host-cc=gcc --disable-armv5te --disable-armv6 --language=en --enable-debug --disable-mp3lib --enable-libavcodec_a --enable-fbdev --disable-mencoder --enable-mad --with-extraincdir=/usr/local/arm/3.4.1/arm-linux/sys-include/:/usr/local/arm/3.4.1/lib/include --with-extralibdir=/usr/local/arm/3.4.1/arm-linux/lib:/usr/local/arm/3.4.1/lib/lib --enable-libavcodec_mpegaudio_hp --enable-static --disable-live
5. make
6. 重新编译s3c2410的2.4.18的内核(2410用2.4内核的话必须重新编译,否则卡死,因为音频驱动的原因)。
修改音频驱动源码(linux-2.4.18-2410cl/drivers/sound/ s3c2410-uda1341.c),在smdk2410_audio_open函数中添加一下两行代码:
if (!output_stream .buffers && audio_setup_buf(&output_stream))
return -ENOMEM;
添加的位置具体见以下代码注释的那个if语句:
改完驱动后,重新编译内核。
修改arm板上的mplayer配置文件,打开/root/.mplayer/下的配置文件config,在里面添加一行ao=mad
这是用于指定音频输出采用libmad解码`