summaryrefslogtreecommitdiffstats
path: root/src/org
diff options
context:
space:
mode:
authorJay Wang <jaywang@codeaurora.org>2016-08-17 17:20:29 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-09-27 11:35:11 -0700
commitf448fb943d08bcd5af47ab2317dbb2169e752716 (patch)
tree4b8b5bcd07da50f75c9ed6227cde899b9f15ebe0 /src/org
parentd7ce24aa42f45eae09427b13c42613312f86d11c (diff)
downloadandroid_packages_apps_Snap-f448fb943d08bcd5af47ab2317dbb2169e752716.tar.gz
android_packages_apps_Snap-f448fb943d08bcd5af47ab2317dbb2169e752716.tar.bz2
android_packages_apps_Snap-f448fb943d08bcd5af47ab2317dbb2169e752716.zip
SnapdragonCamera: Toss leftover frames if we reach quota early
If we reach required frame count before burst is finished, disregard remaining frames that come in. CRs-Fixed: 1054524 Change-Id: I6e28ac56d46aeb1298e2d4cdaf684b12e7498587
Diffstat (limited to 'src/org')
-rw-r--r--src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java37
1 files changed, 34 insertions, 3 deletions
diff --git a/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java b/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java
index d360da276..1debb2007 100644
--- a/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java
+++ b/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java
@@ -405,7 +405,7 @@ public class ClearSightImageProcessor {
mNumBurstCount);
private SparseLongArray mReprocessingFrames = new SparseLongArray();
- private SparseLongArray mReprocessedFrames = new SparseLongArray();
+ private int mReprocessingPairCount;
private int mReprocessedBayerCount;
private int mReprocessedMonoCount;
private NamedEntity mNamedEntity;
@@ -421,6 +421,7 @@ public class ClearSightImageProcessor {
switch (msg.what) {
case MSG_START_CAPTURE:
mCaptureDone = false;
+ mReprocessingPairCount = 0;
mReprocessedBayerCount = 0;
mReprocessedMonoCount = 0;
mNumImagesToProcess[msg.arg1] = msg.arg2;
@@ -463,6 +464,16 @@ public class ClearSightImageProcessor {
}
private void processNewCaptureEvent(Message msg) {
+ // Toss extra frames
+ if(mCaptureDone) {
+ Log.d(TAG, "processNewCaptureEvent - captureDone - we already have required frame pairs");
+ if(msg.what == MSG_NEW_IMG) {
+ Image image = (Image) msg.obj;
+ image.close();
+ }
+ return;
+ }
+
ArrayDeque<Image> imageQueue;
ArrayDeque<TotalCaptureResult> resultQueue;
ArrayDeque<ReprocessableImage> frameQueue;
@@ -504,8 +515,9 @@ public class ClearSightImageProcessor {
Log.d(TAG, "processNewCaptureEvent - imagestoprocess[bayer] " + mNumImagesToProcess[CAM_TYPE_BAYER] +
" imagestoprocess[mono]: " + mNumImagesToProcess[CAM_TYPE_MONO]);
- if (mNumImagesToProcess[CAM_TYPE_BAYER] == 0
- && mNumImagesToProcess[CAM_TYPE_MONO] == 0) {
+ if (mReprocessingPairCount == mNumFrameCount ||
+ (mNumImagesToProcess[CAM_TYPE_BAYER] == 0
+ && mNumImagesToProcess[CAM_TYPE_MONO] == 0)) {
processFinalPair();
}
}
@@ -550,6 +562,7 @@ public class ClearSightImageProcessor {
// send for reproc
sendReprocessRequest(CAM_TYPE_BAYER, mBayerFrames.poll());
sendReprocessRequest(CAM_TYPE_MONO, mMonoFrames.poll());
+ mReprocessingPairCount++;
}
}
}
@@ -575,6 +588,7 @@ public class ClearSightImageProcessor {
Integer hash = ts.hashCode();
reprocRequest.setTag(hash);
mReprocessingFrames.put(hash, ts);
+ Log.d(TAG, "sendReprocessRequest - adding reproc frame - hash: " + hash + ", ts: " + ts);
mImageWriter[camId].queueInputImage(reprocImg.mImage);
@@ -619,6 +633,13 @@ public class ClearSightImageProcessor {
}
mBayerFrames.clear();
+
+ for (Image img : mBayerImages) {
+ img.close();
+ }
+
+ mBayerImages.clear();
+ mBayerCaptureResults.clear();
}
private void releaseMonoFrames() {
@@ -627,6 +648,13 @@ public class ClearSightImageProcessor {
}
mMonoFrames.clear();
+
+ for (Image img : mMonoImages) {
+ img.close();
+ }
+
+ mMonoImages.clear();
+ mMonoCaptureResults.clear();
}
private void processFinalPair() {
@@ -634,6 +662,9 @@ public class ClearSightImageProcessor {
releaseBayerFrames();
releaseMonoFrames();
+ mImageProcessHandler.removeMessages(MSG_NEW_CAPTURE_RESULT);
+ mImageProcessHandler.removeMessages(MSG_NEW_CAPTURE_FAIL);
+
mCaptureDone = true;
}