17db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde/* 27db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde * Copyright (C) 2015 The Android Open Source Project 37db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde * 47db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde * Licensed under the Apache License, Version 2.0 (the "License"); 57db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde * you may not use this file except in compliance with the License. 67db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde * You may obtain a copy of the License at 77db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde * 87db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde * http://www.apache.org/licenses/LICENSE-2.0 97db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde * 107db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde * Unless required by applicable law or agreed to in writing, software 117db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde * distributed under the License is distributed on an "AS IS" BASIS, 127db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde * See the License for the specific language governing permissions and 147db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde * limitations under the License. 157db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde */ 167db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde 177db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohdepackage com.android.camera.one.v2.common; 187db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde 197db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohdeimport android.hardware.camera2.CaptureRequest; 207db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde 21bb27cc628ee84737c72b0368b8b27a5bf8609b56Paul Rohdeimport com.android.camera.one.OneCameraCharacteristics.FaceDetectMode; 227db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohdeimport com.android.camera.one.OneCameraCharacteristics.SupportedHardwareLevel; 237db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohdeimport com.google.common.base.Supplier; 247db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde 257db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde/** 26bb27cc628ee84737c72b0368b8b27a5bf8609b56Paul Rohde * Select a control mode based on the HdrSettings and face detection modes. 277db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde */ 28bb27cc628ee84737c72b0368b8b27a5bf8609b56Paul Rohdepublic class ControlModeSelector implements Supplier<Integer> { 297db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde private final Supplier<Boolean> mHdrSetting; 30bb27cc628ee84737c72b0368b8b27a5bf8609b56Paul Rohde private final Supplier<FaceDetectMode> mFaceDetectMode; 317db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde private final SupportedHardwareLevel mSupportedHardwareLevel; 327db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde 33bb27cc628ee84737c72b0368b8b27a5bf8609b56Paul Rohde public ControlModeSelector( 34bb27cc628ee84737c72b0368b8b27a5bf8609b56Paul Rohde Supplier<Boolean> hdrSetting, 35bb27cc628ee84737c72b0368b8b27a5bf8609b56Paul Rohde Supplier<FaceDetectMode> faceDetectMode, 36bb27cc628ee84737c72b0368b8b27a5bf8609b56Paul Rohde SupportedHardwareLevel supportedHardwareLevel) { 377db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde mHdrSetting = hdrSetting; 38bb27cc628ee84737c72b0368b8b27a5bf8609b56Paul Rohde mFaceDetectMode = faceDetectMode; 397db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde mSupportedHardwareLevel = supportedHardwareLevel; 407db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde } 417db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde 427db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde @Override 437db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde public Integer get() { 447db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde if (mSupportedHardwareLevel == SupportedHardwareLevel.LEGACY) { 457db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde if (mHdrSetting.get()) { 467db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde return CaptureRequest.CONTROL_MODE_USE_SCENE_MODE; 477db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde } 487db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde } 497db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde 50bb27cc628ee84737c72b0368b8b27a5bf8609b56Paul Rohde if (mFaceDetectMode.get() == FaceDetectMode.FULL || 51bb27cc628ee84737c72b0368b8b27a5bf8609b56Paul Rohde mFaceDetectMode.get() == FaceDetectMode.SIMPLE) { 52bb27cc628ee84737c72b0368b8b27a5bf8609b56Paul Rohde return CaptureRequest.CONTROL_MODE_USE_SCENE_MODE; 53bb27cc628ee84737c72b0368b8b27a5bf8609b56Paul Rohde } 54bb27cc628ee84737c72b0368b8b27a5bf8609b56Paul Rohde 55bb27cc628ee84737c72b0368b8b27a5bf8609b56Paul Rohde return CaptureRequest.CONTROL_MODE_AUTO; 567db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde } 577db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde} 58