Skip to content

Commit ed1e2bb

Browse files
committed
Add direct java wrapper to native libjpeg-turbo + some helper classes
1 parent 4306581 commit ed1e2bb

File tree

19 files changed

+1267
-10
lines changed

19 files changed

+1267
-10
lines changed

jpegkit/CMakeLists.txt

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,25 @@
11
cmake_minimum_required(VERSION 3.4.1)
22

3-
set(JPEG_INC_DIR ${CMAKE_SOURCE_DIR}/src/main/cpp/libjpeg/include)
4-
set(JPEG_BUILD_DIR ${CMAKE_SOURCE_DIR}/src/main/jniLibs)
5-
6-
include_directories(${JPEG_INC_DIR})
3+
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/libjpeg/include)
74

85
add_library(libjpeg STATIC IMPORTED)
9-
set_target_properties(libjpeg PROPERTIES IMPORTED_LOCATION ${JPEG_BUILD_DIR}/${ANDROID_ABI}/libjpeg-turbo.a)
6+
set_target_properties(
7+
libjpeg
8+
PROPERTIES
9+
IMPORTED_LOCATION
10+
${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libjpeg-turbo.a
11+
)
12+
13+
include_directories(src/main/cpp/jpegkit/include)
14+
file(GLOB SOURCES "src/main/cpp/jpegkit/*.cpp")
15+
add_library(jpegkit SHARED ${SOURCES})
1016

11-
add_library(jpegkit SHARED ${CMAKE_SOURCE_DIR}/src/main/cpp/JniJpeg.cpp)
17+
find_library(android-lib android)
18+
find_library(gl-lib GLESv2)
1219

13-
target_link_libraries(jpegkit libjpeg)
20+
target_link_libraries(
21+
jpegkit
22+
libjpeg
23+
${android-lib}
24+
${gl-lib}
25+
)

jpegkit/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ task deployRelease {
111111
}
112112

113113
group = 'com.camerakit'
114-
version = '0.2.0'
114+
version = '0.2.0-alpha1'
115115

116116
install {
117117
repositories.mavenInstaller {
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#ifndef __JKUTILS_H__
2+
#define __JKUTILS_H__
3+
4+
#include <jni.h>
5+
#include <unistd.h>
6+
#include <turbojpeg.h>
7+
#include <GLES2/gl2.h>
8+
9+
typedef struct { unsigned char *bytes; } Allocation;
10+
11+
#endif
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,4 +201,4 @@ Java_com_jpegkit_Jpeg_jniCrop
201201
transform->options = TJXOPT_CROP;
202202

203203
tjTransform(jpeg->transformer, jpeg->buffer, jpeg->size, 1, &jpeg->buffer, &jpeg->size, transform, 0);
204-
}
204+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#include "platform.h"
2+
#include <memory>
3+
#include <android/native_window.h>
4+
#include <android/native_activity.h>
5+
#include <android/surface_texture.h>
6+
#include <android/native_window_jni.h>
7+
8+
extern "C" JNIEXPORT void JNICALL
9+
Java_com_jpegkit_JpegView_renderJpeg(JNIEnv *env, jobject obj, jobject surface, jlong allocHandle, jlong jpegSize, jint width, jint height) {
10+
ANativeWindow *window = ANativeWindow_fromSurface(env, surface);
11+
ANativeWindow_setBuffersGeometry(window, width, height, WINDOW_FORMAT_RGBA_8888);
12+
ANativeWindow_Buffer windowBuffer;
13+
if (ANativeWindow_lock(window, &windowBuffer, NULL) == 0) {
14+
Allocation *alloc = (Allocation *) allocHandle;
15+
unsigned char *jpegBuf = alloc->bytes;
16+
memcpy(windowBuffer.bits, jpegBuf, (size_t) jpegSize);
17+
ANativeWindow_unlockAndPost(window);
18+
}
19+
}
20+
21+

0 commit comments

Comments
 (0)