Android 编译libjpeg
Android 编译libjpeg
之前需要将yuv转换为jpg图像,查看网上说libjpeg-turbo比libjpeg快2-3倍,但是在Android手机上实践了一下,需要40-60个ms,这个虽然比以前的300ms好多了,但是还是不能满足我的要求,进一步查看了网上信息,libjpeg-turbo是为x86和x86-64进行优化的使用了SIMD指令,而手机上不支持,所以需要在试验一下libjpeg的需要。下面是我的编译步骤:
1、先到官网上下载源码http://www.ijg.org/files/jpegsr9.zip 最新的是jpegsr9
2、然后加压,生成jpeg-9,进入并创建jni目录,将里面的内容都拷贝到jni里面
3、生成配置文件,在jni目录下面创建config.sh文件,然后在里面添加:
NDK=/opt/android-ndk-r8d
PLATFORM=$NDK/platforms/android-8/arch-arm/
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86
CC=$PREBUILT/bin/arm-linux-androideabi-gcc
./configure --prefix=/home/jpeg-9/jni/dist --host=arm CC="$CC --sysroot=$PLATFORM"
4、然后改变config.sh的权限,并执行,得到配置文件:
chmod 775 config.sh
sh config.sh
5、生成Android.mk文件,内容如下:
LOCAL_PATH := $(my-dir)
include $(CLEAR_VARS)
# From autoconf-generated Makefile
LOCAL_MODULE := libjpeg
LOCAL_ARM_MODE=arm
LOCAL_SRC_FILES := \
jaricom.c \
jcapimin.c \
jcapistd.c \
jcarith.c \
jccoefct.c \
jccolor.c \
jcdctmgr.c \
jchuff.c \
jcinit.c \
jcmainct.c \
jcmarker.c \
jcmaster.c \
jcomapi.c \
jcparam.c \
jcprepct.c \
jcsample.c \
jctrans.c \
jdapimin.c \
jdapistd.c \
jdarith.c \
jdatadst.c \
jdatasrc.c \
jdcoefct.c \
jdcolor.c \
jddctmgr.c \
jdhuff.c \
jdinput.c \
jdmainct.c \
jdmarker.c \
jdmaster.c \
jdmerge.c \
jdpostct.c \
jdsample.c \
jdtrans.c \
jerror.c \
jfdctflt.c \
jfdctfst.c \
jfdctint.c \
jidctflt.c \
jidctfst.c \
jidctint.c \
jquant1.c \
jquant2.c \
jutils.c \
jmemmgr.c \
jmemnobs.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_CFLAGS :=-O3 -fstrict-aliasing -fprefetch-loop-arrays -DANDROID \
-DANDROID_TILE_BASED_DECODE -DENABLE_ANDROID_NULL_CONVERT
include $(BUILD_SHARED_LIBRARY)
|
评论暂时关闭