歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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)

Copyright © Linux教程網 All Rights Reserved