am 20eeaa9c: Merge "Switch to the public NDK API for bitmap"

* commit '20eeaa9cdee7aa28d456f4a7ac3d494950c5aa1a':
  Switch to the public NDK API for bitmap
diff --git a/Android.mk b/Android.mk
index f0b1fa7..9234fe4 100644
--- a/Android.mk
+++ b/Android.mk
@@ -117,7 +117,7 @@
 	libnativehelper \
 	libutils \
 	liblog \
-	libskia \
+	libjnigraphics \
 	libcutils
 
 LOCAL_MODULE:= libFFTEm
diff --git a/FaceDetector_jni.cpp b/FaceDetector_jni.cpp
index 7b44c75..6f59749 100644
--- a/FaceDetector_jni.cpp
+++ b/FaceDetector_jni.cpp
@@ -24,7 +24,7 @@
 #include <utils/String8.h>
 #include <utils/Log.h>
 
-#include <SkBitmap.h>
+#include <android/bitmap.h>
 
 #include "jni.h"
 #include "JNIHelp.h"
@@ -66,8 +66,6 @@
     jfieldID    bwbuffer;
 } gFaceDetectorOffsets;
 
-jfieldID nativeBitmapID;
-
 // ---------------------------------------------------------------------------
 
 static void getFaceData(btk_HDCR hdcr, FaceData* fdata)
@@ -111,9 +109,6 @@
     gFaceOffsets.eulerx      = _env->GetFieldID(faceClass, "mPoseEulerX", "F");
     gFaceOffsets.eulery      = _env->GetFieldID(faceClass, "mPoseEulerY", "F");
     gFaceOffsets.eulerz      = _env->GetFieldID(faceClass, "mPoseEulerZ", "F");
-
-    jclass bitmapClass = _env->FindClass("android/graphics/Bitmap");
-    nativeBitmapID = _env->GetFieldID(bitmapClass, "mNativeBitmap", "J");
 }
 
 // ---------------------------------------------------------------------------
@@ -209,21 +204,18 @@
     jbyteArray bwbufferObject = (jbyteArray)
             _env->GetObjectField(_this, gFaceDetectorOffsets.bwbuffer);
 
-    // get to the native bitmap
-    SkBitmap const * nativeBitmap =
-            (SkBitmap const *)_env->GetLongField(bitmap, nativeBitmapID);
-
     // get to our BW temporary buffer
     jbyte* bwbuffer = _env->GetByteArrayElements(bwbufferObject, 0);
 
     // convert the image to B/W
     uint8_t* dst = (uint8_t*)bwbuffer;
 
-    // manage the life-time of locking our pixels
-    SkAutoLockPixels alp(*nativeBitmap);
+    uint16_t const* src;
+    AndroidBitmapInfo bitmapInfo;
+    AndroidBitmap_getInfo(_env, bitmap, &bitmapInfo);
+    AndroidBitmap_lockPixels(_env, bitmap, (void**) &src);
 
-    uint16_t const* src = (uint16_t const*)nativeBitmap->getPixels();
-    int wpr = nativeBitmap->rowBytes() / 2;
+    int wpr = bitmapInfo.stride / 2;
     for (u32 y=0 ; y<height; y++) {
         for (u32 x=0 ; x<width ; x++) {
             uint16_t rgb = src[x];
@@ -248,6 +240,7 @@
     }
 
     // release the arrays we're using
+    AndroidBitmap_unlockPixels(_env, bitmap);
     _env->ReleaseByteArrayElements(bwbufferObject, bwbuffer, 0);
     return numberOfFaces;
 }