summaryrefslogtreecommitdiffstats
path: root/jni
diff options
context:
space:
mode:
authorJack Yoo <jyoo@codeaurora.org>2016-09-26 13:21:57 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-10-13 15:56:58 -0700
commitaa24e964a6c6f7849ba843a37df1387c0894d725 (patch)
treebae3f952ba0e74a1639b5931fa297de7f2bfa34c /jni
parente42adc9e85653ed4b9aa1f71b6343bccc28d155c (diff)
downloadandroid_packages_apps_Snap-aa24e964a6c6f7849ba843a37df1387c0894d725.tar.gz
android_packages_apps_Snap-aa24e964a6c6f7849ba843a37df1387c0894d725.tar.bz2
android_packages_apps_Snap-aa24e964a6c6f7849ba843a37df1387c0894d725.zip
SnapdragonCamera: SelfieMirror Camera2
SelfieMirror filter for camera2. Change-Id: Id5fda369a56421199a8c2537491608b8667fb77e CRs-Fixed: 1071798
Diffstat (limited to 'jni')
-rw-r--r--jni/image_util_jni.cpp58
1 files changed, 40 insertions, 18 deletions
diff --git a/jni/image_util_jni.cpp b/jni/image_util_jni.cpp
index a4779b3d7..16f4469c3 100644
--- a/jni/image_util_jni.cpp
+++ b/jni/image_util_jni.cpp
@@ -44,8 +44,8 @@ JNIEXPORT jint JNICALL Java_com_android_camera_imageprocessor_FrameProcessor_nat
jint imageWidth, jint imageHeight, jint degree, jobjectArray outBuf);
JNIEXPORT jint JNICALL Java_com_android_camera_imageprocessor_FrameProcessor_nativeNV21toRgb(
JNIEnv *env, jobject thiz, jobjectArray yvuBuf, jobjectArray rgbBuf, jint width, jint height);
-JNIEXPORT jint JNICALL Java_com_android_camera_imageprocessor_PostProcessor_nativeFlipVerticalNV21(
- JNIEnv* env, jobject thiz, jbyteArray yvuBytes, jint width, jint height);
+JNIEXPORT jint JNICALL Java_com_android_camera_imageprocessor_PostProcessor_nativeFlipNV21(
+ JNIEnv* env, jobject thiz, jbyteArray yvuBytes, jint width, jint height, jboolean isVertical);
#ifdef __cplusplus
}
#endif
@@ -154,30 +154,52 @@ jint JNICALL Java_com_android_camera_imageprocessor_FrameProcessor_nativeNV21toR
return 0;
}
-jint JNICALL Java_com_android_camera_imageprocessor_PostProcessor_nativeFlipVerticalNV21(
- JNIEnv* env, jobject thiz, jbyteArray yvuBytes, jint width, jint height)
+jint JNICALL Java_com_android_camera_imageprocessor_PostProcessor_nativeFlipNV21(
+ JNIEnv* env, jobject thiz, jbyteArray yvuBytes, jint width, jint height, jboolean isVertical)
{
jbyte* imageDataNV21Array = env->GetByteArrayElements(yvuBytes, NULL);
uint8_t *buf = (uint8_t *)imageDataNV21Array;
int ysize = width * height;
uint8_t temp1, temp2;
- for(int x=0; x < width; x++) {
- for(int y=0; y < height/2; y++) {
- temp1 = buf[y*width + x];
- buf[y*width + x] = buf[(height-1-y)*width + x];
- buf[(height-1-y)*width + x] = temp1;
+
+ if(isVertical) {
+ for (int x = 0; x < width; x++) {
+ for (int y = 0; y < height / 2; y++) {
+ temp1 = buf[y * width + x];
+ buf[y * width + x] = buf[(height - 1 - y) * width + x];
+ buf[(height - 1 - y) * width + x] = temp1;
+ }
}
- }
- for(int x=0; x < width; x+=2) {
- for(int y=0; y < height/4; y++) {
- temp1 = buf[ysize + y*width + x];
- temp2 = buf[ysize + y*width + x + 1];
- buf[ysize + y*width + x] = buf[ysize + (height/2-1-y)*width + x];
- buf[ysize + y*width + x + 1] = buf[ysize + (height/2-1-y)*width + x + 1];
- buf[ysize + (height/2-1-y)*width + x] = temp1;
- buf[ysize + (height/2-1-y)*width + x + 1] = temp2;
+ for (int x = 0; x < width; x += 2) {
+ for (int y = 0; y < height / 4; y++) {
+ temp1 = buf[ysize + y * width + x];
+ temp2 = buf[ysize + y * width + x + 1];
+ buf[ysize + y * width + x] = buf[ysize + (height / 2 - 1 - y) * width + x];
+ buf[ysize + y * width + x + 1] = buf[ysize + (height / 2 - 1 - y) * width + x + 1];
+ buf[ysize + (height / 2 - 1 - y) * width + x] = temp1;
+ buf[ysize + (height / 2 - 1 - y) * width + x + 1] = temp2;
+ }
+ }
+ } else {
+ for (int x = 0; x < width/2; x++) {
+ for (int y = 0; y < height; y++) {
+ temp1 = buf[y * width + x];
+ buf[y * width + x] = buf[y * width + (width -1 - x)];
+ buf[y * width + (width - 1 - x)] = temp1;
+ }
+ }
+ for (int x = 0; x < width/2; x += 2) {
+ for (int y = 0; y < height / 2; y++) {
+ temp1 = buf[ysize + y * width + x];
+ temp2 = buf[ysize + y * width + x + 1];
+ buf[ysize + y * width + x] = buf[ysize + y * width + (width - 1 - x - 1)];
+ buf[ysize + y * width + x + 1] = buf[ysize + y * width + (width - 1 - x)];
+ buf[ysize + y * width + (width - 1 - x - 1)] = temp1;
+ buf[ysize + y * width + (width - 1 - x)] = temp2;
+ }
}
}
+
env->ReleaseByteArrayElements(yvuBytes, imageDataNV21Array, JNI_ABORT);
return 0;
} \ No newline at end of file