Home

Awesome

Warning

This project along with other ones in OpenSTF organisation is provided as is for community, without active development.

You can check any other forks that may be actively developed and offer new/different features here.

Active development has been moved to DeviceFarmer organisation.

libjpeg-turbo for Android

Warning

This repository was superseded by https://github.com/DeviceFarmer/android-libjpeg-turbo

This repository provides a working Android.mk build configuration for libjpeg-turbo, which means that you'll be able to build your app with ndk-build instead of resorting to toolchain trickery. Just add this repository as a Git submodule and you should be good to go.

Note however that this repository was originally created for a single purpose; to encode JPG files in a different NDK project. Therefore JNI bindings are not provided but a pull request is welcome. Also, any libjpeg-turbo feature that requires another dependency is currently not supported (incl. colorspace conversions). Again, pull requests are welcome.

Currrently, the following ABIs are supported:

SIMD/ASM optimizations are enabled for supported ABIs where possible. libjpeg-turbo does not support MIPS properly (yet). Since MIPS is not supported, you'll need to specify your supported ABIs in Application.mk instead of simply giving it APP_ABI := all.

Note that compiler optimization options are NOT included right now. If, for example, you wish to use -Ofast or other options, you'll need to add them yourself, possibly to your Application.mk.

Requirements

The following combinations are known to work:

Usage

First, set up a vendor folder in your own project. You can skip this step if you've already decided where you wish to put the module.

mkdir -p jni/vendor
echo 'include $(call all-subdir-makefiles)' >> jni/vendor/Android.mk

Then add this repo as a submodule to your own project.

git submodule add --name libjpeg-turbo \
  https://github.com/openstf/android-libjpeg-turbo.git jni/vendor/libjpeg-turbo

You should now be able to do LOCAL_STATIC_LIBRARIES += libjpeg-turbo in your own module, #include <turbojpeg.h> and ndk-build.

Updating libjpeg-turbo

You need to go and fetch libjpeg-turbo first. Download and extract the source package to jni/vendor/libjpeg-turbo. It's not a submodule because they still use SVN. Check jni/vendor/libjpeg-turbo/Android.mk to see which version of libjpeg-turbo is expected.

cd jni/vendor/libjpeg-turbo
cp ~/Downloads/libjpeg-turbo-1.4.1.tar.gz .
tar xzvf libjpeg-turbo-1.4.1.tar.gz

To make updating easier, the jni/vendor/libjpeg-turbo/libjpeg-turbo-*-*-* folder should contain only unmodified original source files. Do not configure or move files around, it will be a pain later. Just unpack the source package and leave it be as-is.

You may sometimes also need to update the convenience files in jni/vendor/libjpeg-turbo/include. This doesn't seem to happen very often, though.

Now update the SOURCE_PATH in jni/vendor/libjpeg-turbo/Android.mk. Then run ndk-build to make sure nothing broke.

Then git rm -r the previous libjpeg-turbo source and commit the new source with your Android.mk modification(s).

Contributing

See CONTRIBUTING.md.

License

See LICENSE. libjpeg-turbo itself is governed by its own license.

Copyright © CyberAgent, Inc. All Rights Reserved.