summaryrefslogtreecommitdiffstats
path: root/src/org/codeaurora/snapcam
diff options
context:
space:
mode:
authorJay Wang <jaywang@codeaurora.org>2016-08-10 12:24:44 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-09-27 11:34:55 -0700
commit45e5b374259665f87c543ac76461236dd983d700 (patch)
treece758a1e684eb6d6211e54d95cee4c1a4b113757 /src/org/codeaurora/snapcam
parentcd0a5fc487bd1e59870ea06d776a1152991b99a4 (diff)
downloadandroid_packages_apps_Snap-45e5b374259665f87c543ac76461236dd983d700.tar.gz
android_packages_apps_Snap-45e5b374259665f87c543ac76461236dd983d700.tar.bz2
android_packages_apps_Snap-45e5b374259665f87c543ac76461236dd983d700.zip
SnapdragonCamera: Update Clearsight API calls for 2.8.2
Update the Clearsight API Calls for version 2.8.2 which contains split processImage for better shot to shot performance. CRs-Fixed: 993611 Change-Id: I124cdf7c426ea3b0cfd10a31ce738188faf446c2
Diffstat (limited to 'src/org/codeaurora/snapcam')
-rw-r--r--src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java1
-rw-r--r--src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java76
2 files changed, 47 insertions, 30 deletions
diff --git a/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java b/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java
index 3a94baec9..95f0b40e9 100644
--- a/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java
+++ b/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java
@@ -652,6 +652,7 @@ public class ClearSightImageProcessor {
+ mNumImagesToProcess[CAM_TYPE_BAYER] + " mono count: "
+ mNumImagesToProcess[CAM_TYPE_MONO]);
+ ClearSightNativeEngine.getInstance().initProcessImage();
ClearSightNativeEngine.ClearsightImage csImage = ClearSightNativeEngine
.getInstance().processImage();
diff --git a/src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java b/src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java
index 18e7671b9..0380c3487 100644
--- a/src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java
+++ b/src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java
@@ -56,7 +56,7 @@ public class ClearSightNativeEngine {
}
}
- private static final int METADATA_SIZE = 5;
+ private static final int METADATA_SIZE = 6;
private static final int Y_PLANE = 0;
private static final int VU_PLANE = 2;
@@ -64,6 +64,10 @@ public class ClearSightNativeEngine {
private static byte[] mOtpCalibData;
private static ClearSightNativeEngine mInstance;
+ private int mYSize;
+ private int mVUSize;
+ private int mYStride;
+ private int mVUStride;
private Image mRefColorImage;
private Image mRefMonoImage;
private TotalCaptureResult mRefColorResult;
@@ -91,6 +95,14 @@ public class ClearSightNativeEngine {
mOtpCalibData = calibStr.getBytes();
}
+ public void setImageSizeStride(Image image) {
+ Plane[] planes = image.getPlanes();
+ mYSize = planes[Y_PLANE].getBuffer().capacity();
+ mVUSize = planes[VU_PLANE].getBuffer().capacity();
+ mYStride = planes[Y_PLANE].getRowStride();
+ mVUStride = planes[VU_PLANE].getRowStride();
+ }
+
public boolean isLibLoaded() {
return mLibLoaded;
}
@@ -136,9 +148,10 @@ public class ClearSightNativeEngine {
if (mRefColorImage != null) {
Log.d(TAG, "setRefColorImage");
+ setImageSizeStride(mRefColorImage);
mSrcColor.add(new SourceImage(mRefColorImage.getPlanes()[Y_PLANE]
.getBuffer(), mRefColorImage.getPlanes()[VU_PLANE]
- .getBuffer(), new int[] { 0, 0, 0, 0, 0 }));
+ .getBuffer(), new float[] { 0, 0, 0, 0, 0, 0 }));
}
}
@@ -153,7 +166,7 @@ public class ClearSightNativeEngine {
if (mRefMonoImage != null) {
Log.d(TAG, "setRefMonoImage");
mSrcMono.add(new SourceImage(mRefMonoImage.getPlanes()[Y_PLANE]
- .getBuffer(), null, new int[] { 0, 0, 0, 0, 0 }));
+ .getBuffer(), null, new float[] { 0, 0, 0, 0, 0, 0 }));
}
}
@@ -198,7 +211,7 @@ public class ClearSightNativeEngine {
vuRowStride = planes[VU_PLANE].getRowStride();
}
- int[] metadata = new int[METADATA_SIZE];
+ float[] metadata = new float[METADATA_SIZE];
boolean result = nativeClearSightRegisterImage(refY,
yBuf, vuBuf, image.getWidth(), image.getHeight(),
@@ -212,21 +225,21 @@ public class ClearSightNativeEngine {
return result;
}
- public ClearsightImage processImage() {
+ public boolean initProcessImage() {
// check data validity
if (mSrcColor.size() != mSrcMono.size()) {
// mis-match in num images
Log.d(TAG, "processImage - numImages mismatch - bayer: "
+ mSrcColor.size() + ", mono: " + mSrcMono.size());
- return null;
+ return false;
}
int numImages = mSrcColor.size();
ByteBuffer[] srcColorY = new ByteBuffer[numImages];
ByteBuffer[] srcColorVU = new ByteBuffer[numImages];
- int[][] metadataColor = new int[numImages][];
+ float[][] metadataColor = new float[numImages][];
ByteBuffer[] srcMonoY = new ByteBuffer[numImages];
- int[][] metadataMono = new int[numImages][];
+ float[][] metadataMono = new float[numImages][];
Log.d(TAG, "processImage - numImages: " + numImages);
@@ -244,35 +257,38 @@ public class ClearSightNativeEngine {
Plane[] colorPlanes = mRefColorImage.getPlanes();
Plane[] monoPlanes = mRefMonoImage.getPlanes();
- ByteBuffer dstY = ByteBuffer.allocateDirect(colorPlanes[Y_PLANE]
- .getBuffer().capacity());
- ByteBuffer dstVU = ByteBuffer.allocateDirect(colorPlanes[VU_PLANE]
- .getBuffer().capacity());
- int[] roiRect = new int[4];
Log.d(TAG, "processImage - refImage size - y: "
+ colorPlanes[Y_PLANE].getBuffer().capacity()
+ " vu: " + colorPlanes[VU_PLANE].getBuffer().capacity());
- Log.d(TAG, "processImage - dst size - y: "
- + dstY.capacity() + " vu: " + dstVU.capacity());
-
int iso = mRefMonoResult.get(CaptureResult.SENSOR_SENSITIVITY);
long exposure = mRefMonoResult.get(CaptureResult.SENSOR_EXPOSURE_TIME);
// capture result stores exposure time in NS and we need MS.
exposure /= 100000;
Log.d(TAG, "processImage - iso: " + iso + " exposure ms: " + exposure);
- boolean result = nativeClearSightProcess(numImages, srcColorY, srcColorVU,
+ return nativeClearSightProcessInit(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(), mOtpCalibData,
- (int)exposure, iso, dstY, dstVU,
- colorPlanes[Y_PLANE].getRowStride(),
- colorPlanes[VU_PLANE].getRowStride(), roiRect);
+ (int)exposure, iso);
+ }
+
+ public ClearsightImage processImage() {
+ // check data validity
+ ByteBuffer dstY = ByteBuffer.allocateDirect(mYSize);
+ ByteBuffer dstVU = ByteBuffer.allocateDirect(mVUSize);
+ int[] roiRect = new int[4];
+
+ Log.d(TAG, "processImage - dst size - y: "
+ + dstY.capacity() + " vu: " + dstVU.capacity());
+
+ boolean result = nativeClearSightProcess(dstY, dstVU,
+ mYStride, mVUStride, roiRect);
if (result) {
dstY.rewind();
@@ -283,27 +299,27 @@ public class ClearSightNativeEngine {
}
}
- private native final boolean nativeConfigureClearSight(float brIntensity, float sharpenIntensity);
-
private native final boolean nativeClearSightRegisterImage(ByteBuffer refY,
ByteBuffer srcY, ByteBuffer srcVU, int width, int height,
int strideY, int strideVU, ByteBuffer dstY, ByteBuffer dstVU,
- int[] metadata);
+ float[] metadata);
- private native final boolean nativeClearSightProcess(int numImagePairs,
+ private native final boolean nativeClearSightProcessInit(int numImagePairs,
ByteBuffer[] srcColorY, ByteBuffer[] srcColorVU,
- int[][] metadataColor, int srcColorWidth, int srcColorHeight,
+ float[][] metadataColor, int srcColorWidth, int srcColorHeight,
int srcColorStrideY, int srcColorStrideVU, ByteBuffer[] srcMonoY,
- int[][] metadataMono, int srcMonoWidth, int srcMonoHeight,
- int srcMonoStrideY, byte[] otp, int exposureMs, int iso,
- ByteBuffer dstY, ByteBuffer dstVU, int dstStrideY, int dstStrideVU, int[] roiRect);
+ float[][] metadataMono, int srcMonoWidth, int srcMonoHeight,
+ int srcMonoStrideY, byte[] otp, int exposureMs, int iso);
+
+ private native final boolean nativeClearSightProcess(ByteBuffer dstY,
+ ByteBuffer dstVU, int dstStrideY, int dstStrideVU, int[] roiRect);
private class SourceImage {
ByteBuffer mY;
ByteBuffer mVU;
- int[] mMetadata;
+ float[] mMetadata;
- SourceImage(ByteBuffer y, ByteBuffer vu, int[] metadata) {
+ SourceImage(ByteBuffer y, ByteBuffer vu, float[] metadata) {
mY = y;
mVU = vu;
mMetadata = metadata;