diff options
author | Jay Wang <jaywang@codeaurora.org> | 2016-05-09 18:35:53 -0700 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2016-08-21 18:45:51 -0700 |
commit | 1fea7d5bb3dd45caf29e90be2e9eae2646567a10 (patch) | |
tree | bd3059bba91264f649251456ce06789e38667818 /src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java | |
parent | 67f8bccf87818e7ea124fa733c56894030ee5951 (diff) | |
download | android_packages_apps_Snap-1fea7d5bb3dd45caf29e90be2e9eae2646567a10.tar.gz android_packages_apps_Snap-1fea7d5bb3dd45caf29e90be2e9eae2646567a10.tar.bz2 android_packages_apps_Snap-1fea7d5bb3dd45caf29e90be2e9eae2646567a10.zip |
SnapdragonCamera: Enable jpeg encoding via reprocess
Enable JPEG encoding via reprocess request for
ClearSight routine.
Add support for dumping images in NV21 format using
persist.camera.cs.dumpyuv
CRs-Fixed: 993611
Change-Id: I51ff59ec45bb37059a16197186a9f90bc52554f1
Diffstat (limited to 'src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java')
-rw-r--r-- | src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java | 66 |
1 files changed, 35 insertions, 31 deletions
diff --git a/src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java b/src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java index c79d15a84..0fc23f1bf 100644 --- a/src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java +++ b/src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java @@ -29,15 +29,13 @@ package org.codeaurora.snapcam.filter; -import java.io.ByteArrayOutputStream; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.ArrayList; import java.util.List; -import android.graphics.ImageFormat; import android.graphics.Rect; -import android.graphics.YuvImage; +import android.hardware.camera2.TotalCaptureResult; import android.media.Image; import android.media.Image.Plane; import android.util.Log; @@ -62,11 +60,13 @@ public class ClearSightNativeEngine { private static final int VU_PLANE = 2; private static boolean mLibLoaded; - private static CamSystemCalibrationData mOtpCalibData; + private static byte[] mOtpCalibData; private static ClearSightNativeEngine mInstance; private Image mRefColorImage; private Image mRefMonoImage; + private TotalCaptureResult mRefColorResult; + private TotalCaptureResult mRefMonoResult; private ArrayList<SourceImage> mSrcColor = new ArrayList<SourceImage>(); private ArrayList<SourceImage> mSrcMono = new ArrayList<SourceImage>(); @@ -85,7 +85,9 @@ public class ClearSightNativeEngine { } public static void setOtpCalibData(CamSystemCalibrationData calibData) { - mOtpCalibData = calibData; + String calibStr = calibData.toString(); + Log.d(TAG, "OTP calibration data: \n" + calibStr); + mOtpCalibData = calibStr.getBytes(); } public boolean isLibLoaded() { @@ -97,6 +99,23 @@ public class ClearSightNativeEngine { mSrcMono.clear(); setReferenceColorImage(null); setReferenceMonoImage(null); + setReferenceColorResult(null); + setReferenceMonoResult(null); + } + + public void setReferenceResult(boolean color, TotalCaptureResult result) { + if (color) + setReferenceColorResult(result); + else + setReferenceMonoResult(result); + } + + private void setReferenceColorResult(TotalCaptureResult result) { + mRefColorResult = result; + } + + private void setReferenceMonoResult(TotalCaptureResult result) { + mRefMonoResult = result; } public void setReferenceImage(boolean color, Image image) { @@ -145,6 +164,10 @@ public class ClearSightNativeEngine { return color ? mRefColorImage : mRefMonoImage; } + public TotalCaptureResult getReferenceResult(boolean color) { + return color ? mRefColorResult : mRefMonoResult; + } + public boolean registerImage(boolean color, Image image) { List<SourceImage> sourceImages = color?mSrcColor:mSrcMono; if (sourceImages.isEmpty()) { @@ -229,30 +252,20 @@ public class ClearSightNativeEngine { Log.d(TAG, "processImage - dst size - y: " + dstY.capacity() + " vu: " + dstVU.capacity()); - String otp_string = mOtpCalibData.toString(); - Log.d(TAG, "processImage - otp_calib: " + otp_string); - boolean result = nativeClearSightProcess(numImages, srcColorY, srcColorVU, metadataColor, mRefColorImage.getWidth(), mRefColorImage.getHeight(), colorPlanes[Y_PLANE].getRowStride(), colorPlanes[VU_PLANE].getRowStride(), srcMonoY, metadataMono, mRefMonoImage.getWidth(), mRefMonoImage.getHeight(), - monoPlanes[Y_PLANE].getRowStride(), otp_string.getBytes(), dstY, dstVU, + monoPlanes[Y_PLANE].getRowStride(), mOtpCalibData, dstY, dstVU, colorPlanes[Y_PLANE].getRowStride(), colorPlanes[VU_PLANE].getRowStride(), roiRect); if (result) { dstY.rewind(); dstVU.rewind(); - byte[] data = new byte[dstY.capacity() + dstVU.capacity()]; - int[] strides = new int[] { colorPlanes[Y_PLANE].getRowStride(), - colorPlanes[VU_PLANE].getRowStride() }; - dstY.get(data, 0, dstY.capacity()); - dstVU.get(data, dstY.capacity(), dstVU.capacity()); - return new ClearsightImage(new YuvImage(data, ImageFormat.NV21, - mRefColorImage.getWidth(), mRefColorImage.getHeight(), - strides), roiRect); + return new ClearsightImage(dstY, dstVU, roiRect); } else { return null; } @@ -286,11 +299,13 @@ public class ClearSightNativeEngine { } public static class ClearsightImage { - private YuvImage mImage; + public final ByteBuffer mYplane; + public final ByteBuffer mVUplane; private Rect mRoiRect; - ClearsightImage(YuvImage image, int[] rect) { - mImage = image; + ClearsightImage(ByteBuffer yPlane, ByteBuffer vuPlane, int[] rect) { + mYplane = yPlane; + mVUplane = vuPlane; mRoiRect = new Rect(rect[0], rect[1], rect[0] + rect[2], rect[1] + rect[3]); } @@ -299,10 +314,6 @@ public class ClearSightNativeEngine { return mRoiRect; } - public long getDataLength() { - return (mImage==null?0:mImage.getYuvData().length); - } - public int getWidth() { return (mRoiRect.right - mRoiRect.left); } @@ -310,13 +321,6 @@ public class ClearSightNativeEngine { public int getHeight() { return (mRoiRect.bottom - mRoiRect.top); } - - public byte[] compressToJpeg() { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - - mImage.compressToJpeg(mRoiRect, 100, baos); - return baos.toByteArray(); - } } public static class CamSensorCalibrationData { |