diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2018-10-06 07:18:04 -0700 |
|---|---|---|
| committer | Linux Build Service Account <lnxbuild@localhost> | 2018-10-06 07:18:04 -0700 |
| commit | 4feab910ab9efada7a911a8638856c55ee09b9ca (patch) | |
| tree | 1fd24a47ee24950afa47b60839ad044b33a9bc06 /src/com/android/camera/CaptureModule.java | |
| parent | c6cde759cd7d38d28b3b2e75a36161b041cd6e9c (diff) | |
| parent | 9530e578cb7c92f8abd1dbf921113387bfb9b047 (diff) | |
Change-Id: I8cb5d9eee763cfc5df1a95b1148cd054ffda62eb
Diffstat (limited to 'src/com/android/camera/CaptureModule.java')
| -rwxr-xr-x | src/com/android/camera/CaptureModule.java | 129 |
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); |
