summaryrefslogtreecommitdiff
path: root/src/com/android/camera/CaptureModule.java
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2018-10-06 07:18:04 -0700
committerLinux Build Service Account <lnxbuild@localhost>2018-10-06 07:18:04 -0700
commit4feab910ab9efada7a911a8638856c55ee09b9ca (patch)
tree1fd24a47ee24950afa47b60839ad044b33a9bc06 /src/com/android/camera/CaptureModule.java
parentc6cde759cd7d38d28b3b2e75a36161b041cd6e9c (diff)
parent9530e578cb7c92f8abd1dbf921113387bfb9b047 (diff)
Merge 9530e578cb7c92f8abd1dbf921113387bfb9b047 on remote branchHEADp9.0
Change-Id: I8cb5d9eee763cfc5df1a95b1148cd054ffda62eb
Diffstat (limited to 'src/com/android/camera/CaptureModule.java')
-rwxr-xr-xsrc/com/android/camera/CaptureModule.java129
1 files changed, 106 insertions, 23 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java
index e0e08df3c..ce07379c0 100755
--- a/src/com/android/camera/CaptureModule.java
+++ b/src/com/android/camera/CaptureModule.java
@@ -635,7 +635,21 @@ public class CaptureModule implements CameraModule, PhotoController,
}
showBokehStatusMessage(id, result);
processCaptureResult(result);
- mPostProcessor.onMetaAvailable(result);
+ if (mPostProcessor.isZSLEnabled() && getCameraMode() != DUAL_MODE) {
+ boolean zsl = false;
+ List<CaptureResult> resultList = result.getPartialResults();
+ for (CaptureResult r : resultList) {
+ if (r.getRequest().containsTarget(mImageReader[id].getSurface())) {
+ zsl = true;
+ break;
+ }
+ }
+ if (zsl){
+ mPostProcessor.onMetaAvailable(result);
+ }
+ } else {
+ mPostProcessor.onMetaAvailable(result);
+ }
}
};
@@ -1203,9 +1217,15 @@ public class CaptureModule implements CameraModule, PhotoController,
.build(), mCaptureCallback, mCameraHandler);
}
} else {
- if (mCaptureSession[id] != null) {
- mCaptureSession[id].setRepeatingRequest(mPreviewRequestBuilder[id]
- .build(), mCaptureCallback, mCameraHandler);
+ if (mPostProcessor.isZSLEnabled() && getCameraMode() !=
+ DUAL_MODE) {
+ setRepeatingBurstForZSL(id);
+ } else {
+ if (mCaptureSession[id] != null) {
+ mCaptureSession[id].setRepeatingRequest(
+ mPreviewRequestBuilder[id].build(),
+ mCaptureCallback, mCameraHandler);
+ }
}
}
@@ -1321,8 +1341,12 @@ public class CaptureModule implements CameraModule, PhotoController,
applyAERegions(mPreviewRequestBuilder[id], id);
mPreviewRequestBuilder[id].setTag(id);
try {
- mCaptureSession[id].setRepeatingRequest(mPreviewRequestBuilder[id]
- .build(), mCaptureCallback, mCameraHandler);
+ if (mPostProcessor.isZSLEnabled() && getCameraMode() != DUAL_MODE) {
+ setRepeatingBurstForZSL(BAYER_ID);
+ } else {
+ mCaptureSession[id].setRepeatingRequest(mPreviewRequestBuilder[id]
+ .build(), mCaptureCallback, mCameraHandler);
+ }
} catch (CameraAccessException | IllegalStateException e) {
e.printStackTrace();
}
@@ -1346,8 +1370,12 @@ public class CaptureModule implements CameraModule, PhotoController,
applyAERegions(mPreviewRequestBuilder[id], id);
mPreviewRequestBuilder[id].setTag(id);
try {
- mCaptureSession[id].setRepeatingRequest(mPreviewRequestBuilder[id]
- .build(), mCaptureCallback, mCameraHandler);
+ if (mPostProcessor.isZSLEnabled() && getCameraMode() != DUAL_MODE) {
+ setRepeatingBurstForZSL(BAYER_ID);
+ } else {
+ mCaptureSession[id].setRepeatingRequest(mPreviewRequestBuilder[id]
+ .build(), mCaptureCallback, mCameraHandler);
+ }
} catch (CameraAccessException | IllegalStateException e) {
e.printStackTrace();
}
@@ -1556,8 +1584,12 @@ public class CaptureModule implements CameraModule, PhotoController,
if (mLongshotActive && isFlashOn(id)) {
mCaptureSession[id].stopRepeating();
applyFlash(mPreviewRequestBuilder[id], id);
- mCaptureSession[id].setRepeatingRequest(mPreviewRequestBuilder[id]
- .build(), mCaptureCallback, mCameraHandler);
+ if (mPostProcessor.isZSLEnabled() && getCameraMode() != DUAL_MODE) {
+ setRepeatingBurstForZSL(BAYER_ID);
+ } else {
+ mCaptureSession[id].setRepeatingRequest(mPreviewRequestBuilder[id]
+ .build(), mCaptureCallback, mCameraHandler);
+ }
}
}
} catch (CameraAccessException e) {
@@ -1611,8 +1643,12 @@ public class CaptureModule implements CameraModule, PhotoController,
if (mLongshotActive && isFlashOn(id)) {
mCaptureSession[id].stopRepeating();
applyFlash(mPreviewRequestBuilder[id], id);
- mCaptureSession[id].setRepeatingRequest(mPreviewRequestBuilder[id]
- .build(), mCaptureCallback, mCameraHandler);
+ if (mPostProcessor.isZSLEnabled() && getCameraMode() != DUAL_MODE) {
+ setRepeatingBurstForZSL(id);
+ } else {
+ mCaptureSession[id].setRepeatingRequest(mPreviewRequestBuilder[id]
+ .build(), mCaptureCallback, mCameraHandler);
+ }
}
}
} catch (CameraAccessException e) {
@@ -2341,8 +2377,12 @@ public class CaptureModule implements CameraModule, PhotoController,
try {
applySettingsForLockExposure(mPreviewRequestBuilder[id], id);
mState[id] = STATE_WAITING_AE_LOCK;
- mCaptureSession[id].setRepeatingRequest(mPreviewRequestBuilder[id].build(),
- mCaptureCallback, mCameraHandler);
+ if (mPostProcessor.isZSLEnabled() && getCameraMode() != DUAL_MODE) {
+ setRepeatingBurstForZSL(id);
+ } else {
+ mCaptureSession[id].setRepeatingRequest(mPreviewRequestBuilder[id].build(),
+ mCaptureCallback, mCameraHandler);
+ }
} catch (CameraAccessException | IllegalStateException e) {
e.printStackTrace();
}
@@ -3512,7 +3552,9 @@ public class CaptureModule implements CameraModule, PhotoController,
mControlAFMode = CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE;
closePreviewSession();
mFrameProcessor.onClose();
-
+ if (mPostProcessor != null) {
+ mPostProcessor.enableZSLQueue(false);
+ }
Size preview = mVideoPreviewSize;
if (mHighSpeedCapture) {
preview = mVideoSize;
@@ -3543,7 +3585,6 @@ public class CaptureModule implements CameraModule, PhotoController,
mFrameProcessor.setOutputSurface(surface);
mFrameProcessor.setVideoOutputSurface(mMediaRecorder.getSurface());
addPreviewSurface(mVideoRequestBuilder, surfaces, cameraId);
-
if (mHighSpeedCapture)
mVideoRequestBuilder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, mHighSpeedFPSRange);
@@ -3558,6 +3599,7 @@ public class CaptureModule implements CameraModule, PhotoController,
CameraConstrainedHighSpeedCaptureSession session =
(CameraConstrainedHighSpeedCaptureSession) mCurrentSession;
try {
+ removeImageReaderSurfaces(mVideoRequestBuilder);
List list = session
.createHighSpeedRequestList(mVideoRequestBuilder.build());
session.setRepeatingBurst(list, mCaptureCallback, mCameraHandler);
@@ -3608,6 +3650,7 @@ public class CaptureModule implements CameraModule, PhotoController,
mCaptureSession[cameraId] = cameraCaptureSession;
try {
setUpVideoCaptureRequestBuilder(mVideoRequestBuilder, cameraId);
+ removeImageReaderSurfaces(mVideoRequestBuilder);
mCurrentSession.setRepeatingRequest(mVideoRequestBuilder.build(),
mCaptureCallback, mCameraHandler);
} catch (CameraAccessException e) {
@@ -3929,15 +3972,18 @@ public class CaptureModule implements CameraModule, PhotoController,
mUI.showRecordVideoForReview(thumbnail);
}
}
-
if(mFrameProcessor != null) {
mFrameProcessor.onOpen(getFrameProcFilterId(), mPreviewSize);
}
+ if (mPostProcessor != null) {
+ mPostProcessor.enableZSLQueue(true);
+ }
boolean changed = mUI.setPreviewSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
if (changed) {
mUI.hideSurfaceView();
mUI.showSurfaceView();
}
+
createSessions();
mUI.showUIafterRecording();
mUI.resetTrackingFocus();
@@ -3960,6 +4006,14 @@ public class CaptureModule implements CameraModule, PhotoController,
return dateFormat.format(date);
}
+ private void removeImageReaderSurfaces(CaptureRequest.Builder builder) {
+ for (int i = 0; i < MAX_NUM_CAM; i++) {
+ if(mImageReader[i] != null){
+ builder.removeTarget(mImageReader[i].getSurface());
+ }
+ }
+ }
+
private String generateVideoFilename(int outputFileFormat) {
long dateTaken = System.currentTimeMillis();
String title = createName(dateTaken);
@@ -4575,8 +4629,12 @@ public class CaptureModule implements CameraModule, PhotoController,
((CameraConstrainedHighSpeedCaptureSession) session).setRepeatingBurst(list
, mCaptureCallback, mCameraHandler);
} else {
- mCaptureSession[id].setRepeatingRequest(mPreviewRequestBuilder[id]
- .build(), mCaptureCallback, mCameraHandler);
+ if (mPostProcessor.isZSLEnabled() && getCameraMode() != DUAL_MODE) {
+ setRepeatingBurstForZSL(id);
+ } else {
+ mCaptureSession[id].setRepeatingRequest(mPreviewRequestBuilder[id]
+ .build(), mCaptureCallback, mCameraHandler);
+ }
}
}
@@ -4980,8 +5038,12 @@ public class CaptureModule implements CameraModule, PhotoController,
try {
if (checkSessionAndBuilder(mCaptureSession[BAYER_ID],
mPreviewRequestBuilder[BAYER_ID])) {
- mCaptureSession[BAYER_ID].setRepeatingRequest(mPreviewRequestBuilder[BAYER_ID]
- .build(), mCaptureCallback, mCameraHandler);
+ if (mPostProcessor.isZSLEnabled() && getCameraMode() != DUAL_MODE) {
+ setRepeatingBurstForZSL(BAYER_ID);
+ } else {
+ mCaptureSession[BAYER_ID].setRepeatingRequest(mPreviewRequestBuilder[BAYER_ID]
+ .build(), mCaptureCallback, mCameraHandler);
+ }
}
} catch (CameraAccessException | IllegalStateException e) {
e.printStackTrace();
@@ -5007,8 +5069,12 @@ public class CaptureModule implements CameraModule, PhotoController,
try {
if (checkSessionAndBuilder(mCaptureSession[FRONT_ID],
mPreviewRequestBuilder[FRONT_ID])) {
- mCaptureSession[FRONT_ID].setRepeatingRequest(mPreviewRequestBuilder[FRONT_ID]
- .build(), mCaptureCallback, mCameraHandler);
+ if (mPostProcessor.isZSLEnabled()) {
+ setRepeatingBurstForZSL(FRONT_ID);
+ } else {
+ mCaptureSession[FRONT_ID].setRepeatingRequest(mPreviewRequestBuilder[FRONT_ID]
+ .build(), mCaptureCallback, mCameraHandler);
+ }
}
} catch (CameraAccessException | IllegalStateException e) {
e.printStackTrace();
@@ -5028,6 +5094,23 @@ public class CaptureModule implements CameraModule, PhotoController,
}
}
+ private void setRepeatingBurstForZSL(int id) throws CameraAccessException,IllegalStateException{
+ List<CaptureRequest> requests =
+ new ArrayList<CaptureRequest>();
+ CaptureRequest previewZslRequest = mPreviewRequestBuilder[id].build();
+ mPreviewRequestBuilder[id].removeTarget(mImageReader[id].getSurface());
+ CaptureRequest previewRequest = mPreviewRequestBuilder[id].build();
+ requests.add(previewZslRequest);
+ requests.add(previewRequest);
+ //restore the orginal request builder
+ mPreviewRequestBuilder[id].addTarget(mImageReader[id].getSurface());
+
+ if (mCaptureSession[id] != null) {
+ mCaptureSession[id].setRepeatingBurst(requests,
+ mCaptureCallback,mCameraHandler);
+ }
+ }
+
private boolean isPanoSetting(String value) {
try {
int mode = Integer.parseInt(value);