From 45916b7512c08097ee53ab38c08fc979026fbe3c Mon Sep 17 00:00:00 2001 From: mingwax Date: Fri, 28 Apr 2017 13:36:54 +0800 Subject: SnapdragonCamera: Pass device mount orientation to Clearsight JNI 1. Add persist system property to config device mount orientation 2. Pass device mount orientation to Clearsight JNI 3. Recalculate the size of the buffer YUV. CRs-Fixed: 2039320 Change-Id: Ie3c13ccd3d261df4cad310aa6235f548263b3ca1 --- .../snapcam/filter/ClearSightImageProcessor.java | 5 +++- .../snapcam/filter/ClearSightNativeEngine.java | 27 ++++++++++++++++++---- 2 files changed, 26 insertions(+), 6 deletions(-) (limited to 'src/org/codeaurora/snapcam/filter') diff --git a/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java b/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java index b2a81389d..f26caf717 100644 --- a/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java +++ b/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java @@ -1543,11 +1543,14 @@ public class ClearSightImageProcessor { ByteBuffer vuBuffer = planes[2].getBuffer(); int sizeY = yBuffer.capacity(); int sizeVU = vuBuffer.capacity(); - byte[] data = new byte[sizeY + sizeVU]; + int stride = image.getPlanes()[0].getRowStride(); + int height = image.getHeight(); + byte[] data = new byte[stride * height*3/2]; yBuffer.rewind(); yBuffer.get(data, 0, sizeY); vuBuffer.rewind(); vuBuffer.get(data, sizeY, sizeVU); + int[] strides = new int[] { planes[0].getRowStride(), planes[2].getRowStride() }; diff --git a/src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java b/src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java index 8b30ca032..5ba0fd951 100644 --- a/src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java +++ b/src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java @@ -41,8 +41,12 @@ import android.media.Image; import android.media.Image.Plane; import android.util.Log; +import com.android.camera.util.PersistUtil; + public class ClearSightNativeEngine { - private static final boolean DEBUG = false; + private static final boolean DEBUG = + (PersistUtil.getCamera2Debug() == PersistUtil.CAMERA2_DEBUG_DUMP_LOG) || + (PersistUtil.getCamera2Debug() == PersistUtil.CAMERA2_DEBUG_DUMP_ALL); private static final String TAG = "ClearSightNativeEngine"; static { try { @@ -75,8 +79,14 @@ public class ClearSightNativeEngine { private ArrayList mCache = new ArrayList(); private ArrayList mSrcColor = new ArrayList(); private ArrayList mSrcMono = new ArrayList(); + private final float mBrIntensity; + private final float mSmoothingIntensity; + private final boolean mIsVerticallyAlignedSensor; private ClearSightNativeEngine() { + mBrIntensity = PersistUtil.getDualCameraBrIntensity(); + mSmoothingIntensity = PersistUtil.getDualCameraSmoothingIntensity(); + mIsVerticallyAlignedSensor = PersistUtil.getDualCameraSensorAlign(); } public static void createInstance() { @@ -296,10 +306,16 @@ public class ClearSightNativeEngine { exposure /= 100000; Log.d(TAG, "processImage - iso: " + iso + " exposure ms: " + exposure); - return nativeClearSightProcessInit(numImages, + if (DEBUG) { + Log.d(TAG,"processImage - mBrIntensity :" + mBrIntensity + + ", mSmoothingIntensity :" + mSmoothingIntensity + + ", mIsVerticallyAlignedSensor :" + mIsVerticallyAlignedSensor); + } + return nativeClearSightProcessInit2(numImages, srcColorY, srcColorVU, metadataColor, mImageWidth, mImageHeight, mYStride, mVUStride, srcMonoY, metadataMono, mImageWidth, mImageHeight, - mYStride, mOtpCalibData, (int)exposure, iso); + mYStride, mOtpCalibData, (int)exposure, iso, + mBrIntensity, mSmoothingIntensity, mIsVerticallyAlignedSensor); } public boolean processImage(ClearsightImage csImage) { @@ -326,12 +342,13 @@ public class ClearSightNativeEngine { int strideY, int strideVU, ByteBuffer dstY, ByteBuffer dstVU, float[] metadata); - private native final boolean nativeClearSightProcessInit(int numImagePairs, + private native final boolean nativeClearSightProcessInit2(int numImagePairs, ByteBuffer[] srcColorY, ByteBuffer[] srcColorVU, float[][] metadataColor, int srcColorWidth, int srcColorHeight, int srcColorStrideY, int srcColorStrideVU, ByteBuffer[] srcMonoY, float[][] metadataMono, int srcMonoWidth, int srcMonoHeight, - int srcMonoStrideY, byte[] otp, int exposureMs, int iso); + int srcMonoStrideY, byte[] otp, int exposureMs, int iso, + float brIntensity, float smoothingIntensity, boolean isVerticallyAlignedSensor); private native final boolean nativeClearSightProcess(ByteBuffer dstY, ByteBuffer dstVU, int dstStrideY, int dstStrideVU, int[] roiRect); -- cgit v1.2.3