最近解码视频生成的是yuv数据,然后需要生成jpg图片,之前的方案是yuv-rgb-bmp-jpg这样的话是很慢的,计算了时间大概要300ms左右,导致多次点击照相,会造成视频画面的延迟,所以只能使用别的方案替代,在网上查询libjpeg,但是又看了一篇文章http://www.linuxsir.org/bbs/thread374093.html说libjpeg-turbo比libjpeg快了2-3倍时间,所以打算使用libjpg-turbo来实现yuv转换为jpg图像。下面是使用ndk来交叉编译libjpeg-turbo生成libjpeg-turbo.so。

1、从官网下载最新的libjpeg-turbo源码,http://sourceforge.net/projects/libjpeg-turbo/ ,现在最新的版本是libjpeg-turbo-1.2.1

2、解压缩下载的文件,然后进入,并创建jni文件夹,最后将里面的文件都拷贝到jni文件中

3、进入jni目录,然后创建配置文件(例如jconfig.h,config.h),在终端输入:

 ./configure --with-jpeg8

就会生成

config.status: creating config.h
config.status: creating jconfig.h

4、接下来是创建Android.mk文件

# Makefile for libjpeg-turbo##################################################
###                simd                        ###
##################################################
LOCAL_PATH := $(my-dir)
include $(CLEAR_VARS)
LOCAL_CFLAGS += -D__ARM_HAVE_NEON# From autoconf-generated Makefile
EXTRA_DIST = simd/nasm_lt.sh simd/jcclrmmx.asm simd/jcclrss2.asm simd/jdclrmmx.asm simd/jdclrss2.asm \simd/jdmrgmmx.asm simd/jdmrgss2.asm simd/jcclrss2-64.asm simd/jdclrss2-64.asm \simd/jdmrgss2-64.asm simd/CMakeLists.txtlibsimd_SOURCES_DIST = simd/jsimd_arm_neon.S \simd/jsimd_arm.c LOCAL_SRC_FILES := $(libsimd_SOURCES_DIST)LOCAL_C_INCLUDES := $(LOCAL_PATH)/simd \$(LOCAL_PATH)/androidAM_CFLAGS := -march=armv7-a -mfpu=neon
AM_CCASFLAGS := -march=armv7-a -mfpu=neon
LOCAL_ARM_MODE=arm
LOCAL_MODULE_TAGS := debugLOCAL_MODULE := libsimdinclude $(BUILD_STATIC_LIBRARY)######################################################
###           libjpeg.so                       ##
######################################################include $(CLEAR_VARS)# From autoconf-generated Makefile
libjpeg_SOURCES_DIST =  jcapimin.c jcapistd.c jccoefct.c jccolor.c \jcdctmgr.c jchuff.c jcinit.c jcmainct.c jcmarker.c jcmaster.c \jcomapi.c jcparam.c jcphuff.c jcprepct.c jcsample.c jctrans.c \jdapimin.c jdapistd.c jdatadst.c jdatasrc.c jdcoefct.c jdcolor.c \jddctmgr.c jdhuff.c jdinput.c jdmainct.c jdmarker.c jdmaster.c \jdmerge.c jdphuff.c jdpostct.c jdsample.c jdtrans.c jerror.c \jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jidctfst.c jidctint.c \jidctred.c jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c \jaricom.c jcarith.c jdarith.c \turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c \turbojpeg-mapfileLOCAL_SRC_FILES:= $(libjpeg_SOURCES_DIST)LOCAL_SHARED_LIBRARIES := libcutils
LOCAL_STATIC_LIBRARIES := libsimd
LOCAL_ARM_MODE=arm
LOCAL_C_INCLUDES := $(LOCAL_PATH) LOCAL_CFLAGS :=-O3 -fstrict-aliasing -fprefetch-loop-arrays  -DANDROID \-DANDROID_TILE_BASED_DECODE -DENABLE_ANDROID_NULL_CONVERT -D__ARM_HAVE_NEON
AM_CFLAGS := -march=armv7-a -mfpu=neon
AM_CCASFLAGS := -march=armv7-a -mfpu=neon
LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_STATIC_LIBRARY)
LOCAL_MODULE_TAGS := debug
LOCAL_MODULE := libjpeg
include $(BUILD_SHARED_LIBRARY)

5、然后在终端输入ndk-build,结果如下:

root@zhangjie:/home/libjpeg-turbo-1.2.1/jni# ndk-build
Android NDK: WARNING: Unsupported source file extensions in /home/libjpeg-turbo-1.2.1/jni/Android.mk for module jpeg
Android NDK:   turbojpeg-mapfile
Compile arm    : jpeg <= jcapimin.c
Compile arm    : jpeg <= jcapistd.c
Compile arm    : jpeg <= jccoefct.c
Compile arm    : jpeg <= jccolor.c
Compile arm    : jpeg <= jcdctmgr.c
Compile arm    : jpeg <= jchuff.c
Compile arm    : jpeg <= jcinit.c
Compile arm    : jpeg <= jcmainct.c
Compile arm    : jpeg <= jcmarker.c
Compile arm    : jpeg <= jcmaster.c
Compile arm    : jpeg <= jcomapi.c
Compile arm    : jpeg <= jcparam.c
Compile arm    : jpeg <= jcphuff.c
Compile arm    : jpeg <= jcprepct.c
Compile arm    : jpeg <= jcsample.c
Compile arm    : jpeg <= jctrans.c
Compile arm    : jpeg <= jdapimin.c
Compile arm    : jpeg <= jdapistd.c
Compile arm    : jpeg <= jdatadst.c
Compile arm    : jpeg <= jdatasrc.c
Compile arm    : jpeg <= jdcoefct.c
Compile arm    : jpeg <= jdcolor.c
Compile arm    : jpeg <= jddctmgr.c
Compile arm    : jpeg <= jdhuff.c
Compile arm    : jpeg <= jdinput.c
Compile arm    : jpeg <= jdmainct.c
Compile arm    : jpeg <= jdmarker.c
Compile arm    : jpeg <= jdmaster.c
Compile arm    : jpeg <= jdmerge.c
Compile arm    : jpeg <= jdphuff.c
Compile arm    : jpeg <= jdpostct.c
Compile arm    : jpeg <= jdsample.c
Compile arm    : jpeg <= jdtrans.c
Compile arm    : jpeg <= jerror.c
Compile arm    : jpeg <= jfdctflt.c
Compile arm    : jpeg <= jfdctfst.c
Compile arm    : jpeg <= jfdctint.c
Compile arm    : jpeg <= jidctflt.c
Compile arm    : jpeg <= jidctfst.c
Compile arm    : jpeg <= jidctint.c
Compile arm    : jpeg <= jidctred.c
Compile arm    : jpeg <= jquant1.c
Compile arm    : jpeg <= jquant2.c
Compile arm    : jpeg <= jutils.c
Compile arm    : jpeg <= jmemmgr.c
Compile arm    : jpeg <= jmemnobs.c
Compile arm    : jpeg <= jaricom.c
Compile arm    : jpeg <= jcarith.c
Compile arm    : jpeg <= jdarith.c
Compile arm    : jpeg <= turbojpeg.c
Compile arm    : jpeg <= transupp.c
Compile arm    : jpeg <= jdatadst-tj.c
Compile arm    : jpeg <= jdatasrc-tj.c
Compile arm    : simd <= jsimd_arm_neon.S
Compile arm    : simd <= jsimd_arm.c
StaticLibrary  : libsimd.a
SharedLibrary  : libjpeg.so
Install        : libjpeg.so => libs/armeabi/libjpeg.so

android 编译libjpeg-turbo相关推荐

  1. android 编译 libjpeg,Android 编译libjpeg

    之前需要将yuv转换为jpg图像,查看网上说libjpeg-turbo比libjpeg快2-3倍,但是在Android手机上实践了一下,需要40-60个ms,这个虽然比以前的300ms好多了,但是还是 ...

  2. Android编译Skia库

    Android编译Skia库 本文档提供两种方法编译Skia库 使用aosp源码进行编译 使用skia源码进行编译 两种编译方法都可以编译,并且都可以使用在多个平台中,且可以使用在不同Android版 ...

  3. 性能优化 (四) ubuntu 完美编译 libjpeg 图像压缩库,媲美微信图片压缩算法

    使用方式 在 project/build.gradle 上添加以下代码 allprojects {repositories {...maven { url 'https://jitpack.io' } ...

  4. Xamarin.Android编译CPU类型选择方式

    Xamarin.Android编译CPU类型选择方式 在Xamarin.Android编译的时候,默认提供了5种CPU类型供大家选择.它们分别为armeabi.armeabi-v7a.arm64-v8 ...

  5. Xamarin.Android编译提示找不到mscorlib.dll.so文件

    Xamarin.Android编译提示找不到mscorlib.dll.so文件 错误信息:AOT module 'mscorlib.dll.so' not found: Cannot load lib ...

  6. 【错误记录】Android 编译时技术报错 ( 注解处理器 process 方法多次调用问题 )

    文章目录 一.报错信息 二.问题分析 三.解决方案 注解处理器 AbstractProcessor 中的 process 方法可能会调用多次 , 在生成代码时 , 一定要注意 , 检测到 注解节点 后 ...

  7. 【错误记录】Android 编译时技术版本警告 ( 注解处理器与主应用支持的 Java 版本不匹配 )

    文章目录 一.报错信息 二.问题分析 三.解决方案 一.报错信息 在使用 Android 编译时技术 , 涉及 编译时注解 , 注解处理器 ; 开发注解处理器后 , 编译报如下警告 ; 该警告不会影响 ...

  8. android 模块不编译错误,Android 编译出错版本匹配问题解决办法

    Android 编译出错版本匹配问题解决办法 解决问题的关键在于版本匹配, compileSdkVersion compileSdkVersion targetSdkVersion 这三个参数的整数值 ...

  9. android编译error, forbidden warning出错问题解决

    android编译Kernel时,从高版本GCC起,就开始把warning作为error对待,比如我们遇到: gsl3670.c:2065:21: warning: unused variable ' ...

  10. android编译全过程

    android编译全过程 (2011-06-04 15:27) 标签:  android编译  android 模块编译,mm 命令 如果你只需要修改某一个模块的内容,但是却每次都要执行make, 最 ...

最新文章

  1. 分解得到的时频域特征_【推荐文章】基于变分模态分解和广义Warblet变换的齿轮故障诊断...
  2. 开发IOT WiFi设备时,需要测试的几种情况
  3. 分享云及人工智能的一些学习资源和学习心得
  4. 利用规划图提高经典人工智能规划复杂度
  5. 缓存(Cache)管理 ---- 系列文章
  6. 让携号转网不再难!但你得了解这几大限制
  7. Shell之date用法
  8. 工程矩阵理论 Hermite 矩阵
  9. 【向生活低头】联想云教室同步win10_64位电脑导致的电脑卡死在lenovo界面
  10. WINDOWS蓝屏代码大全
  11. linux虚拟机对外部sd卡格式化和分区
  12. php文件转换为mp4,PHP转换视频为MP4并获取预览图的实例分享
  13. When you are old - 当你老去时(译)
  14. Bandizip 7.16和winRAR在文件右键压缩功能上的差异
  15. python 拷贝文件创建目录失败_解决python os.mkdir创建目录失败的问题
  16. 海尔简爱s11装Linux,海尔简爱S11值得买吗 海尔简爱S11全面深度评测详解
  17. 【计蒜客】蒜头君的旅游计划
  18. 对方接住了你人的php,接住你了表情包 - 接住你了微信表情包 - 接住你了QQ表情包 - 发表情 fabiaoqing.com...
  19. datawhale学习小组 Task4:方差分析
  20. 安卓进入debug模式

热门文章

  1. 《速度与激情》男主演保罗沃克车祸身亡,再见速度再见难续的激情
  2. 解决Idea中yml文件不显示小绿叶图标
  3. EasyPoi word导出教程
  4. 一次聚类引发的一系列问题(多线程篇-多线程慢于单线程)
  5. Grid控件 设置格子背景颜色
  6. oracle 中递归查询的使用
  7. Dynamics 365——设置视图可编辑
  8. 台式计算机型号在哪里看,台式电脑主板型号在哪里看
  9. 关于更换固态硬盘的一些经历...
  10. IOS系统自带方法将汉语转换成拼音