diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2020-06-06 01:07:30 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2020-06-06 01:07:30 +0000 |
commit | e6fcdfb920031a10c5dcb0d55a852ca9a9ef8250 (patch) | |
tree | 18f894a15c955380466e7f2b989d7213433d9c02 | |
parent | 68ceae668127d55630eaa742375f424582894454 (diff) | |
parent | 1a463d744403d2cef36eeaf072aabeff46602d48 (diff) | |
download | Camera2-android-11.0.0_r17.tar.gz |
Snap for 6564423 from 1a463d744403d2cef36eeaf072aabeff46602d48 to rvc-releaseandroid-vts-11.0_r9android-vts-11.0_r8android-vts-11.0_r7android-vts-11.0_r6android-vts-11.0_r5android-vts-11.0_r4android-vts-11.0_r3android-vts-11.0_r2android-vts-11.0_r16android-vts-11.0_r15android-vts-11.0_r14android-vts-11.0_r13android-vts-11.0_r12android-vts-11.0_r11android-vts-11.0_r10android-vts-11.0_r1android-security-11.0.0_r74android-security-11.0.0_r73android-security-11.0.0_r72android-security-11.0.0_r71android-security-11.0.0_r70android-security-11.0.0_r69android-security-11.0.0_r68android-security-11.0.0_r67android-security-11.0.0_r66android-security-11.0.0_r65android-security-11.0.0_r64android-security-11.0.0_r63android-security-11.0.0_r62android-security-11.0.0_r61android-security-11.0.0_r60android-security-11.0.0_r59android-security-11.0.0_r58android-security-11.0.0_r57android-security-11.0.0_r56android-security-11.0.0_r55android-security-11.0.0_r54android-security-11.0.0_r53android-security-11.0.0_r52android-security-11.0.0_r51android-security-11.0.0_r50android-security-11.0.0_r49android-security-11.0.0_r1android-cts-11.0_r9android-cts-11.0_r8android-cts-11.0_r7android-cts-11.0_r6android-cts-11.0_r5android-cts-11.0_r4android-cts-11.0_r3android-cts-11.0_r2android-cts-11.0_r16android-cts-11.0_r15android-cts-11.0_r14android-cts-11.0_r13android-cts-11.0_r12android-cts-11.0_r11android-cts-11.0_r10android-cts-11.0_r1android-11.0.0_r5android-11.0.0_r4android-11.0.0_r3android-11.0.0_r25android-11.0.0_r2android-11.0.0_r17android-11.0.0_r1android11-tests-releaseandroid11-s1-releaseandroid11-release
Change-Id: I383394eeda122405012e2cbe401378ccd8b2f9b9
3 files changed, 72 insertions, 20 deletions
diff --git a/src/com/android/camera/one/v2/SimpleOneCameraFactory.java b/src/com/android/camera/one/v2/SimpleOneCameraFactory.java index 59d94cf54..38bd5eeb6 100644 --- a/src/com/android/camera/one/v2/SimpleOneCameraFactory.java +++ b/src/com/android/camera/one/v2/SimpleOneCameraFactory.java @@ -214,7 +214,8 @@ public class SimpleOneCameraFactory implements OneCameraFactory { pictureTaker = PictureTakerFactory.create(Loggers.tagFactory(), mainExecutor, cameraCommandExecutor, imageSaverBuilder, frameServerComponent.provideFrameServer(), - meteredZoomedRequestBuilder, managedImageReader, flashSetting) + meteredZoomedRequestBuilder, managedImageReader, flashSetting, + characteristics.isContinuousPictureAutoFocusSupported()) .providePictureTaker(); } diff --git a/src/com/android/camera/one/v2/photo/ConvergedImageCaptureCommand.java b/src/com/android/camera/one/v2/photo/ConvergedImageCaptureCommand.java index 38a1303d8..a9cf4204a 100644 --- a/src/com/android/camera/one/v2/photo/ConvergedImageCaptureCommand.java +++ b/src/com/android/camera/one/v2/photo/ConvergedImageCaptureCommand.java @@ -64,16 +64,21 @@ class ConvergedImageCaptureCommand implements ImageCaptureCommand { private final boolean mWaitForAEConvergence; private final boolean mWaitForAFConvergence; + private final boolean mCAFSupport; + /** * Transforms a request template by resetting focus and exposure modes. */ - private static RequestBuilder.Factory resetFocusExposureModes(RequestBuilder.Factory template) { + private static RequestBuilder.Factory resetFocusExposureModes(RequestBuilder.Factory template, + boolean cafSupport) { RequestTemplate result = new RequestTemplate(template); result.setParam(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_AUTO); - result.setParam(CaptureRequest.CONTROL_AF_MODE, - CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE); - result.setParam(CaptureRequest.CONTROL_AF_TRIGGER, - CaptureRequest.CONTROL_AF_TRIGGER_IDLE); + if (cafSupport) { + result.setParam(CaptureRequest.CONTROL_AF_MODE, + CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE); + result.setParam(CaptureRequest.CONTROL_AF_TRIGGER, + CaptureRequest.CONTROL_AF_TRIGGER_IDLE); + } result.setParam(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER, CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_IDLE); return result; @@ -90,6 +95,35 @@ class ConvergedImageCaptureCommand implements ImageCaptureCommand { * requests. * @param burst Creates request builders to use for each image captured from * @param waitForAEConvergence + */ + public ConvergedImageCaptureCommand(ManagedImageReader imageReader, FrameServer frameServer, + RequestBuilder.Factory repeatingRequestBuilder, + int repeatingRequestTemplate, int stillCaptureRequestTemplate, + List<RequestBuilder.Factory> burst, boolean waitForAEConvergence) { + mImageReader = imageReader; + mFrameServer = frameServer; + mRepeatingRequestBuilder = repeatingRequestBuilder; + mRepeatingRequestTemplate = repeatingRequestTemplate; + mStillCaptureRequestTemplate = stillCaptureRequestTemplate; + mBurst = burst; + mWaitForAEConvergence = waitForAEConvergence; + mWaitForAFConvergence = false; + mCAFSupport = false; + + mScanRequestTemplate = resetFocusExposureModes(repeatingRequestBuilder, mCAFSupport); + } + + /** + * @param imageReader Creates the {@link ImageStream} used for capturing + * images to be saved. + * @param frameServer Used for interacting with the camera device. + * @param repeatingRequestBuilder Creates request builders to use for + * repeating requests sent during the scanning phase and after + * capture is complete. + * @param repeatingRequestTemplate The template type to use for repeating + * requests. + * @param burst Creates request builders to use for each image captured from + * @param waitForAEConvergence * @param waitForAFConvergence */ public ConvergedImageCaptureCommand(ManagedImageReader imageReader, FrameServer frameServer, @@ -105,10 +139,10 @@ class ConvergedImageCaptureCommand implements ImageCaptureCommand { mBurst = burst; mWaitForAEConvergence = waitForAEConvergence; mWaitForAFConvergence = waitForAFConvergence; + mCAFSupport = true; - mScanRequestTemplate = resetFocusExposureModes(repeatingRequestBuilder); + mScanRequestTemplate = resetFocusExposureModes(repeatingRequestBuilder, mCAFSupport); } - /** * Sends a request to take a picture and blocks until it completes. */ @@ -193,8 +227,10 @@ class ConvergedImageCaptureCommand implements ImageCaptureCommand { for (RequestBuilder.Factory builderTemplate : mBurst) { RequestBuilder builder = builderTemplate.create(mStillCaptureRequestTemplate); - builder.setParam(CaptureRequest.CONTROL_AF_MODE, CaptureRequest - .CONTROL_AF_MODE_CONTINUOUS_PICTURE); + if (mCAFSupport) { + builder.setParam(CaptureRequest.CONTROL_AF_MODE, CaptureRequest + .CONTROL_AF_MODE_CONTINUOUS_PICTURE); + } builder.setParam(CaptureRequest.CONTROL_CAPTURE_INTENT, CaptureRequest.CONTROL_CAPTURE_INTENT_STILL_CAPTURE); diff --git a/src/com/android/camera/one/v2/photo/PictureTakerFactory.java b/src/com/android/camera/one/v2/photo/PictureTakerFactory.java index 97dd60482..8126d3ebc 100644 --- a/src/com/android/camera/one/v2/photo/PictureTakerFactory.java +++ b/src/com/android/camera/one/v2/photo/PictureTakerFactory.java @@ -43,31 +43,46 @@ public final class PictureTakerFactory { FrameServer frameServer, RequestBuilder.Factory rootRequestBuilder, ManagedImageReader sharedImageReader, - Supplier<OneCamera.PhotoCaptureParameters.Flash> flashMode) { + Supplier<OneCamera.PhotoCaptureParameters.Flash> flashMode, boolean cafSupport) { // When flash is ON, always use the ConvergedImageCaptureCommand which - // performs the AF & AE precapture sequence. - ImageCaptureCommand flashOnCommand = new ConvergedImageCaptureCommand( + // performs the AE precapture sequence and AF precapture if supported. + ImageCaptureCommand flashOnCommand = cafSupport ? new ConvergedImageCaptureCommand( sharedImageReader, frameServer, rootRequestBuilder, CameraDevice.TEMPLATE_PREVIEW /* repeatingRequestTemplate */, CameraDevice.TEMPLATE_STILL_CAPTURE /* stillCaptureRequestTemplate */, - Arrays.asList(rootRequestBuilder), true /* ae */, true /* af */); + Arrays.asList(rootRequestBuilder), true /* ae */, true /* af */) : + new ConvergedImageCaptureCommand( + sharedImageReader, frameServer, rootRequestBuilder, + CameraDevice.TEMPLATE_PREVIEW /* repeatingRequestTemplate */, + CameraDevice.TEMPLATE_STILL_CAPTURE /* stillCaptureRequestTemplate */, + Arrays.asList(rootRequestBuilder), true /* ae */); - // When flash is OFF, wait for AF convergence, but not AE convergence + // When flash is OFF, wait for AF convergence if AF is supported, but not AE convergence // (which can be very slow). - ImageCaptureCommand flashOffCommand = new ConvergedImageCaptureCommand( + ImageCaptureCommand flashOffCommand = cafSupport ? new ConvergedImageCaptureCommand( sharedImageReader, frameServer, rootRequestBuilder, CameraDevice.TEMPLATE_PREVIEW /* repeatingRequestTemplate */, CameraDevice.TEMPLATE_STILL_CAPTURE /* stillCaptureRequestTemplate */, - Arrays.asList(rootRequestBuilder), false /* ae */, true /* af */); + Arrays.asList(rootRequestBuilder), false /* ae */, true /* af */) : + new ConvergedImageCaptureCommand( + sharedImageReader, frameServer, rootRequestBuilder, + CameraDevice.TEMPLATE_PREVIEW /* repeatingRequestTemplate */, + CameraDevice.TEMPLATE_STILL_CAPTURE /* stillCaptureRequestTemplate */, + Arrays.asList(rootRequestBuilder), false /* ae */); - // When flash is AUTO, wait for AF & AE. + // When flash is AUTO, wait for AE and AF if supported. // TODO OPTIMIZE If the last converged-AE state indicates that flash is // not necessary, then this could skip waiting for AE convergence. - ImageCaptureCommand flashAutoCommand = new ConvergedImageCaptureCommand( + ImageCaptureCommand flashAutoCommand = cafSupport ? new ConvergedImageCaptureCommand( sharedImageReader, frameServer, rootRequestBuilder, CameraDevice.TEMPLATE_PREVIEW /* repeatingRequestTemplate */, CameraDevice.TEMPLATE_STILL_CAPTURE /* stillCaptureRequestTemplate */, - Arrays.asList(rootRequestBuilder), true /* ae */, true /* af */); + Arrays.asList(rootRequestBuilder), true /* ae */, true /* af */) : + new ConvergedImageCaptureCommand( + sharedImageReader, frameServer, rootRequestBuilder, + CameraDevice.TEMPLATE_PREVIEW /* repeatingRequestTemplate */, + CameraDevice.TEMPLATE_STILL_CAPTURE /* stillCaptureRequestTemplate */, + Arrays.asList(rootRequestBuilder), true /* ae */); ImageCaptureCommand flashBasedCommand = new FlashBasedPhotoCommand(logFactory, flashMode, flashOnCommand, flashAutoCommand, flashOffCommand); |