diff options
author | Jay Wang <jaywang@codeaurora.org> | 2016-08-17 17:20:29 -0700 |
---|---|---|
committer | Jay Wang <jaywang@codeaurora.org> | 2016-08-22 17:39:53 -0700 |
commit | 2810a34ce6b5074c29bca271406d28499f3d2015 (patch) | |
tree | 3abdb1077b4415794eb8a8ba835dcf8a4ace38c7 /src/org/codeaurora | |
parent | 65321fb0abc1d05cdc539f561cb70b36dbbecaae (diff) | |
download | android_packages_apps_Snap-2810a34ce6b5074c29bca271406d28499f3d2015.tar.gz android_packages_apps_Snap-2810a34ce6b5074c29bca271406d28499f3d2015.tar.bz2 android_packages_apps_Snap-2810a34ce6b5074c29bca271406d28499f3d2015.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/codeaurora')
-rw-r--r-- | src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java | 37 |
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; } |