x264编码的arm移植x264编码的arm移植
2010-09-05 19:42
204 查看
写一下最近移植x264的过程。
最新的版本(我最开始用的是20090715这个)已经有cross-compile的支持了,移植应该还是很顺利的。但是这个版本的win下编译不通过,问题在网上找了一下,没有解决。后来退而求其次,选择了一个20060805的版本,这个版本在网上找到了win下vc6可以编译通过的版本,同时也可以在x264的官方ftp上找到linux下可以编译的版本。最后决定使用这个版本。这样可以方便一些在win下的交互调试。
注意,这里要提醒一下,几年之内,x264的变化还是很大的。总之,在需要两个平台交叉调试的时候,看来一个相同的版本是非常有必要的。否则,可能会发生这种情况:程序在win下好用,在linux下就不好用了,然后你一边用vs,一边用gdb,终于找到了不同的地方,发现x264的一个标准API对同一个参数的赋值是完全不一样的……(比如我就发现我使用的两个版本的x264_param_init()函数对param.i_bframe赋值是不同的,导致我的一个程序在win下是好的,linux下就是坏的)
新版本的移植我不说了,大概说一下旧版本的移植。
旧的是没有--disable-asm和--cross-compile这两个configure的支持的(前者是对x86的汇编优化,交叉编译的时候当然不要的,后者是交叉编译环境设置)。其实和我之前的移植过程差不多,这里写个步骤:
0.环境
OS:ubuntu
9.04
Version:x264-snapshot-20060805-2245.tar.bz2
1.配置
./configure
--prefix=/home/peter/workspace --enable-shared --enable-debug
我这里打开了动态链接和debug。前者可以生成libx264.so,后者可以在你调程序用gdb的时候step into库函数里。
2.修改配置参数
修改config.mak:
prefix=/home/peter/workspace
exec_prefix=${prefix}
bindir=${exec_prefix}/bin
libdir=${exec_prefix}/lib
includedir=${prefix}/include
# 这里改为ARM
ARCH=ARM
SYS=LINUX
# 这里改为arm-linux-gcc
CC=arm-linux-gcc
# 这里去掉-DHAVE_MMXEXT -DHAVE_SSE2 -DARCH_X86
CFLAGS=-Wall -I. -O4
-ffast-math -D__X264__ -DHAVE_MALLOC_H -DSYS_LINUX -DHAVE_PTHREAD -s
-fomit-frame-pointer
LDFLAGS= -lm -lpthread -s
AS=nasm
ASFLAGS=-O2
-f elf
VFW=no
GTK=no
EXE=
VIS=no
HAVE_GETOPT_LONG=1
DEVNULL=/dev/null
CONFIGURE_ARGS=
'--enable-shared' '--prefix=/home/peter/workspace'
SONAME=libx264.so.49
default
: $(SONAME)
修改Makefile,将66~68行的ar和ranlib改为arm下的:
libx264.a:
.depend $(OBJS) $(OBJASM)
arm-linux-ar rc libx264.a $(OBJS)
$(OBJASM)
arm-linux-ranlib libx264.a
3.编译安装
make
make install
就可以了。
本文出自 “LoudMouth Peter
” 博客,请务必保留此出处http://xzpeter.blog.51cto.com/783279/181647
最新的版本(我最开始用的是20090715这个)已经有cross-compile的支持了,移植应该还是很顺利的。但是这个版本的win下编译不通过,问题在网上找了一下,没有解决。后来退而求其次,选择了一个20060805的版本,这个版本在网上找到了win下vc6可以编译通过的版本,同时也可以在x264的官方ftp上找到linux下可以编译的版本。最后决定使用这个版本。这样可以方便一些在win下的交互调试。
注意,这里要提醒一下,几年之内,x264的变化还是很大的。总之,在需要两个平台交叉调试的时候,看来一个相同的版本是非常有必要的。否则,可能会发生这种情况:程序在win下好用,在linux下就不好用了,然后你一边用vs,一边用gdb,终于找到了不同的地方,发现x264的一个标准API对同一个参数的赋值是完全不一样的……(比如我就发现我使用的两个版本的x264_param_init()函数对param.i_bframe赋值是不同的,导致我的一个程序在win下是好的,linux下就是坏的)
新版本的移植我不说了,大概说一下旧版本的移植。
旧的是没有--disable-asm和--cross-compile这两个configure的支持的(前者是对x86的汇编优化,交叉编译的时候当然不要的,后者是交叉编译环境设置)。其实和我之前的移植过程差不多,这里写个步骤:
0.环境
OS:ubuntu
9.04
Version:x264-snapshot-20060805-2245.tar.bz2
1.配置
./configure
--prefix=/home/peter/workspace --enable-shared --enable-debug
我这里打开了动态链接和debug。前者可以生成libx264.so,后者可以在你调程序用gdb的时候step into库函数里。
2.修改配置参数
修改config.mak:
prefix=/home/peter/workspace
exec_prefix=${prefix}
bindir=${exec_prefix}/bin
libdir=${exec_prefix}/lib
includedir=${prefix}/include
# 这里改为ARM
ARCH=ARM
SYS=LINUX
# 这里改为arm-linux-gcc
CC=arm-linux-gcc
# 这里去掉-DHAVE_MMXEXT -DHAVE_SSE2 -DARCH_X86
CFLAGS=-Wall -I. -O4
-ffast-math -D__X264__ -DHAVE_MALLOC_H -DSYS_LINUX -DHAVE_PTHREAD -s
-fomit-frame-pointer
LDFLAGS= -lm -lpthread -s
AS=nasm
ASFLAGS=-O2
-f elf
VFW=no
GTK=no
EXE=
VIS=no
HAVE_GETOPT_LONG=1
DEVNULL=/dev/null
CONFIGURE_ARGS=
'--enable-shared' '--prefix=/home/peter/workspace'
SONAME=libx264.so.49
default
: $(SONAME)
修改Makefile,将66~68行的ar和ranlib改为arm下的:
libx264.a:
.depend $(OBJS) $(OBJASM)
arm-linux-ar rc libx264.a $(OBJS)
$(OBJASM)
arm-linux-ranlib libx264.a
3.编译安装
make
make install
就可以了。
本文出自 “LoudMouth Peter
” 博客,请务必保留此出处http://xzpeter.blog.51cto.com/783279/181647
相关文章推荐
- x264编码的arm移植
- 嵌入式linux------ffmpeg移植 编码H264(am335x编码H264) 分类: TI-AM335X ffmpeg-SDL-VLC-Live555 arm-linux-Ubuntu 2015-08-04 09:34 5人阅读 评论(0) 收藏
- x264-snapshot-20121119-2245 arm-linux移植问题
- x264 移植到 ARM的方法
- V4L2视频采集与H264编码3—X264移植
- x264之c64x+平台移植(二):arm端应用程序编译
- x264 2006-07-31 svn 版的编码移植
- x264 2006-07-31 svn 版的编码移植
- x264 移植到 ARM的方法
- arm移植x264 ffmpeg配置
- ubuntu和arm平台下的ffmpeg和x264相关库的移植
- x264 利用arm-linux-gcc在arm上的移植 总结
- 编译支持x264 编码的ffmpeg并成功移植到docker
- ARM上移植PHP5.5.30
- OpenCV在ARM上的移植
- 用arm-linux-gnueabihf移植MP3播放器libmad-0.15.1b的时候出现错误提示
- ARM-Linux移植之(一)——内核启动流程分析
- 使用ffmpeg将BMP图片编码为x264视频文件,将H264视频保存为BMP图片,yuv视频文件保存为图片的代码
- Compile mplayer for arm with xvid and x264
- libevent 移植到 ARM 步骤