最近解码视频生成的是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.h4、接下来是创建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.txt

libsimd_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)/android

AM_CFLAGS := -march=armv7-a -mfpu=neon

AM_CCASFLAGS := -march=armv7-a -mfpu=neon

LOCAL_ARM_MODE=arm

LOCAL_MODULE_TAGS := debug

LOCAL_MODULE := libsimd

include $(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-mapfile

LOCAL_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,android 编译libjpeg-turbo相关推荐

  1. Android直播开发之旅(15):libjpeg库的编译移植与使用

    1. libjpeg介绍  libJPEG库是一款功能强大的JPEG图像处理开源库,它支持将图像数据压缩编码为JPEG格式和对原有的JPEG图像解压缩,Android系统底层处理图片压缩就是用得lib ...

  2. Android仿微信高效压缩图片(libjpeg)

    用过ios手机的同学应该很明显感觉到,ios拍照1M的图片要比安卓拍照排出来的5M的图片还要清晰.这是为什么呢? 这得了解android底层是如何对图片进行处理的. 当时谷歌开发Android的时候, ...

  3. 【iOS-cocos2d-X 游戏开发之十六】Cocos2dx编译后的Android自动使用(-hd)高清图设置自适应屏幕...

    本篇主要介绍Cocos2dx项目开发过程中或者说项目务必遇到的一些知识点(ps.貌似Himi博客写的都是务必的 :tx:  Himi认为写别人没写的才更容易吸引人不是-) OK,不多说废话,第一个介绍 ...

  4. ADT,Eclipse启动时在Android SDK Content Loader0%无法编译

    ADT,Eclipse启动时在Android SDK Content Loader0%无法编译,解决办法如上图-- 欢迎加入移动互联网QQ群讨论,群号:285077071 转载于:https://bl ...

  5. 编译可在Android上运行的qemu user mode

    前言 本文在Ubuntu 64位系统上对qemu项目进行交叉编译,并且只编译与qemu user mode有关的代码. 下文中的"NDK"若无特殊说明均指"Android ...

  6. android 牛人必修 ant 编译android工程

    最近比较懒,博客一直都没更新,上次有人问ant 来编译android 工程,这里我就完整的整理了一下.如果你嫌弃IDE太慢或者觉得手动编译更Cool,不用IDE你可以学到更多.也是成为牛人的必修课啊! ...

  7. android源码编译 简书,android学习笔记之源码编译

    编译环境 1.需要Ubuntu 64bit,建议Ubuntu14.04 64-bit 2.安装openJDK7 $ sudo apt-get update $ sudo apt-get install ...

  8. android编译.a文件,Android 7.1源码编译导入AS完整教程

    本教程仅针对Android 7.1系统,为便于虚拟机备份和出现问题时的还原,本教程分为3步:初始化编译环境.源码同步.编译源码导入Android Studio. 编译源码:Android7.1.2_r ...

  9. 【Android 逆向】Android 逆向通用工具开发 ( Android 平台运行的 cmd 程序类型 | Android 平台运行的 cmd 程序编译选项 | 编译 cmd 可执行程序 )

    文章目录 一.Android 平台运行的 cmd 程序类型 二.Android 平台运行的 cmd 程序编译选项 三.编译 Android 平台的 cmd 可执行程序 一.Android 平台运行的 ...

  10. 【Android 逆向】Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 )

    文章目录 一.编译注入工具 二.编译结果文件说明 三.注入过程说明 一.编译注入工具 在 Visual Studio 2019 中打开了一个 " 生成文件项目 " , 该项目就是注 ...

最新文章

  1. webpack源码分析之三:loader
  2. android webview静态方法,android – 将静态HTML加载到Webview中
  3. OD使用教程18 - 调试篇18
  4. 【Linux网络编程】TCP网络编程中connect()、listen()和accept()三者之间的关系
  5. python模拟键盘输入_这件神器,每个 Python入门学习者都值得一试
  6. IntelliJ IDEA for Mac 在MacOS模式下的注释快捷键(Comment Shortcut)
  7. java面向对象中的抽象,类与对象
  8. C# 控制台 打印输出
  9. iOS之Cocoapods安装
  10. MvvmCross框架在XamarinForms中的使用入门
  11. C语言判断素数(求素数)
  12. JavaCV人脸识别三部曲之一:视频中的人脸保存为图片
  13. Required request body is missing 问题解决
  14. [经验技巧] 小米线刷详细图文教程(具体步骤)
  15. 【HotSpot、G1】垃圾回收算法和垃圾收集器
  16. 听说你有10年的工作经验?还是你把1个经验反复用了10年?(文末赠书)
  17. 1176: 【入门】买蛋糕
  18. 大数据测试指标(二)
  19. 基于深度学习的智能车辆视觉里程计技术发展综述*--陈涛
  20. Cypress之管理配置信息

热门文章

  1. 固高运动控制卡学习6 --编码器
  2. HTTP权威指南(浓缩版)
  3. 三菱伺服驱动器说明书_张家港市HG-KN13J-S100三菱伺服控制器
  4. nbu mysql linux备份软件,NBU备份linux/aix/unix下的db2数据库配置
  5. 手把手教你用C语言实现求质数(素数),5大方法任君挑选
  6. 《人人都是项目经理》-云倩读书笔记
  7. Ubuntu14.04+CUDA6.5+OpenCV2.4+Caffee配置
  8. 16进制颜色转RGB颜色
  9. 个税抵扣全指南精华版!
  10. 分布式系统的一些基本概念