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