ControlModeSelector.java revision 7db6d1eb6f124496a4fbc10733741c62d97d29d2
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 217db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohdeimport com.android.camera.one.OneCameraCharacteristics.SupportedHardwareLevel; 227db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohdeimport com.google.common.base.Supplier; 237db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde 247db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde/** 257db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde * Computes the current control mode to use based on the current hdr setting 267db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde * and supported hardware level for the device. 277db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde */ 287db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohdepublic class HdrSettingBasedControlMode implements Supplier<Integer> { 297db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde private final Supplier<Boolean> mHdrSetting; 307db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde private final SupportedHardwareLevel mSupportedHardwareLevel; 317db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde private final Integer mDefaultControlMode; 327db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde 337db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde public HdrSettingBasedControlMode(Supplier<Boolean> hdrSetting, 347db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde SupportedHardwareLevel supportedHardwareLevel, 357db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde Integer defaultControlMode) { 367db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde mHdrSetting = hdrSetting; 377db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde mSupportedHardwareLevel = supportedHardwareLevel; 387db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde mDefaultControlMode = defaultControlMode; 397db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde } 407db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde 417db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde @Override 427db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde public Integer get() { 437db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde if (mSupportedHardwareLevel == SupportedHardwareLevel.LEGACY) { 447db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde if (mHdrSetting.get()) { 457db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde return CaptureRequest.CONTROL_MODE_USE_SCENE_MODE; 467db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde } 477db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde } 487db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde 497db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde return mDefaultControlMode; 507db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde } 517db6d1eb6f124496a4fbc10733741c62d97d29d2Paul Rohde} 52