From b63f401d3f0af836763d80688a579ca991c08170 Mon Sep 17 00:00:00 2001 From: qimengp Date: Mon, 19 Dec 2016 13:33:49 +0800 Subject: SnapdragonCamera: Fix Dualcamera reprocess before capture timeout When all of the reprocess result come before capture result, and no reprocess result after capture result anymore, will cause timeout. When all of common capture result come, and all the reprocesses have come, call checkReprocessDone() to trigger clearsightengine. Change-Id: I028de8444cd811c1400c64231a7fecf939ae5c40 CRs-Fixed: 1110019 --- .../snapcam/filter/ClearSightImageProcessor.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java b/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java index 944bf0800..f2d33a856 100755 --- a/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java +++ b/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java @@ -29,7 +29,6 @@ package org.codeaurora.snapcam.filter; -import java.io.IOException; import java.io.ByteArrayOutputStream; import java.nio.ByteBuffer; import java.util.ArrayDeque; @@ -146,6 +145,7 @@ public class ClearSightImageProcessor { private boolean mDumpImages; private boolean mDumpYUV; private boolean mIsClosing; + private int mFinishReprocessNum; private static ClearSightImageProcessor mInstance; @@ -480,6 +480,7 @@ public class ClearSightImageProcessor { switch (msg.what) { case MSG_START_CAPTURE: mCaptureDone = false; + mFinishReprocessNum = 0; mHasFailures = false; mReprocessingPairCount = 0; mReprocessedBayerCount = 0; @@ -600,13 +601,20 @@ public class ClearSightImageProcessor { checkForValidFramePairAndReprocess(); } - Log.d(TAG, "processNewCaptureEvent - imagestoprocess[bayer] " + mNumImagesToProcess[CAM_TYPE_BAYER] + - " imagestoprocess[mono]: " + mNumImagesToProcess[CAM_TYPE_MONO]); - + Log.d(TAG, "processNewCaptureEvent - " + + "imagestoprocess[bayer] " + mNumImagesToProcess[CAM_TYPE_BAYER] + + " imagestoprocess[mono]: " + mNumImagesToProcess[CAM_TYPE_MONO] + + " mReprocessingPairCount: " + mReprocessingPairCount + + " mNumFrameCount: " + mNumFrameCount + + " mFinishReprocessNum" + mFinishReprocessNum); if (mReprocessingPairCount == mNumFrameCount || (mNumImagesToProcess[CAM_TYPE_BAYER] == 0 && mNumImagesToProcess[CAM_TYPE_MONO] == 0)) { processFinalPair(); + if (mReprocessingPairCount != 0 && + mFinishReprocessNum == mReprocessingPairCount * 2) { + checkReprocessDone(); + } } } @@ -809,7 +817,7 @@ public class ClearSightImageProcessor { Log.d(TAG, "reprocess - setReferenceResult: " + msg.obj); ClearSightNativeEngine.getInstance().setReferenceResult(isBayer, result); } - + mFinishReprocessNum++; checkReprocessDone(); } @@ -819,6 +827,7 @@ public class ClearSightImageProcessor { mReprocessingRequests.remove(failure.getRequest()); mReprocessingFrames.delete(msg.arg2); mHasFailures = true; + mFinishReprocessNum++; checkReprocessDone(); } -- cgit v1.2.3