一、编译环境
linux环境:ubuntu-10.10
交叉编译:4.3.3
arm板子:tq2440
二、MPlayer的移植
#./configure --cc=arm-linux-gcc --host-cc=gcc --target=arm-linux --enable-static --prefix=/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/mplayer --disable-win32dll --disable-mencoder --enable-fbdev --disable-dvdread --disable-armv5te --disable-armv6
--disable-mencoder参数指定不编译mencoder以节省编译时间,因为在ARM平台上不需要也不应该使用mencoder来编辑视频。--enable-mad是为了改善mplayer在ARM处理器上的音频播放性能。因为S3C2440还不支持硬浮点运算,而mp3lib库是使用浮点运算的,所以使用mp3lib库来播放mp3文件则相当占用CPU资源。因此,考虑使用libmad库来播放mp3等格式音频文件。由于libmad库并不包含在mplayer源码中,所以得事先另外安装,然后在编译mplayer时启用libmad库,即”--enable-mad”,并指定libmad库头文件以及编译完成的库文件所在的目录,即”--with-extraincdir”、”--extralibdir”参数指定的路径。
#make
错误:
libmpeg2/motion_comp_arm_s.S: Assembler messages:
libmpeg2/motion_comp_arm_s.S:29: Error: selected processor does not support `pld [r1]'
libmpeg2/motion_comp_arm_s.S:39: Error: selected processor does not support `pld [r1]'
libmpeg2/motion_comp_arm_s.S:65: Error: selected processor does not support `pld [r1]'
libmpeg2/motion_comp_arm_s.S:70: Error: selected processor does not support `pld [r1]'
libmpeg2/motion_comp_arm_s.S:75: Error: selected processor does not support `pld [r1]'
解决措施:
在libmpeg2/motion_comp_arm_s.S起始添加以下内容:
#ifndef HAVE_PLD
.macro pld reg
.endm
#endif
错误原因:
pld指令只在armv5te以上版本有效,在2440(armv4l)无效。
PLD预读取指令
功能:cache预读取(PLD,PreLoad),使用PLD指示存储系统从后面几条指令所指定的存储器地址读取,存储系统可使用这种方法加速以后的存储器访问。
格式:
PLD[Rn,{offset}]
其中:
Rn 存储器的基址寄存器。
Offset 加在Rn上的偏移量。
播放状况:
将一个rm文件拷贝到U盘,在开发平台上播放时,能够听见音频,但视频显示错乱(该rm文件在PC上是正常的)。可使用以下方法转换视频:
mencoder Disturbia.2007.CD2.rm -o disturbia2.rm -vf scale=320:240 -oac pcm -ovc lavc
在播放一个视频时,音频和视频不同步,使用以下指令可以解决,但画面缩小了。
mplayer -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=al
l /mnt/udisk/dongjing.rmvb
阅读(1224) | 评论(0) | 转发(0) |