blob: d2c47f10aed4f701eee251548988b489b6423ed4 [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef MEDIA_CAPTURE_VIDEO_ANDROID_PHOTO_CAPABILITIES_H_
#define MEDIA_CAPTURE_VIDEO_ANDROID_PHOTO_CAPABILITIES_H_
#include <jni.h>
#include <vector>
#include "base/android/scoped_java_ref.h"
namespace media {
class PhotoCapabilities {
public:
// Metering modes from Java side, equivalent to media.mojom::MeteringMode,
// except NOT_SET, which is used to signify absence of setting configuration.
// A Java counterpart will be generated for this enum.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.media
enum class AndroidMeteringMode {
NOT_SET, // Update Java code if this value is not equal 0.
NONE,
FIXED,
SINGLE_SHOT,
CONTINUOUS,
NUM_ENTRIES
};
// A Java counterpart will be generated for this enum.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.media
enum class MeteringModeType {
FOCUS,
EXPOSURE,
WHITE_BALANCE,
NUM_ENTRIES
};
// Fill light modes from Java side, equivalent to media.mojom::FillLightMode,
// except NOT_SET, which is used to signify absence of setting configuration.
// A Java counterpart will be generated for this enum.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.media
enum class AndroidFillLightMode {
NOT_SET, // Update Java code when this value is not equal 0.
OFF,
AUTO,
FLASH,
NUM_ENTRIES
};
// A Java counterpart will be generated for this enum.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.media
enum class PhotoCapabilityBool {
SUPPORTS_TORCH,
TORCH,
RED_EYE_REDUCTION,
NUM_ENTRIES
};
// A Java counterpart will be generated for this enum.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.media
enum class PhotoCapabilityDouble {
MIN_ZOOM,
MAX_ZOOM,
CURRENT_ZOOM,
STEP_ZOOM,
MIN_FOCUS_DISTANCE,
MAX_FOCUS_DISTANCE,
CURRENT_FOCUS_DISTANCE,
STEP_FOCUS_DISTANCE,
MIN_EXPOSURE_COMPENSATION,
MAX_EXPOSURE_COMPENSATION,
CURRENT_EXPOSURE_COMPENSATION,
STEP_EXPOSURE_COMPENSATION,
MIN_EXPOSURE_TIME,
MAX_EXPOSURE_TIME,
CURRENT_EXPOSURE_TIME,
STEP_EXPOSURE_TIME,
NUM_ENTRIES
};
// A Java counterpart will be generated for this enum.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.media
enum class PhotoCapabilityInt {
MIN_ISO,
MAX_ISO,
CURRENT_ISO,
STEP_ISO,
MIN_HEIGHT,
MAX_HEIGHT,
CURRENT_HEIGHT,
STEP_HEIGHT,
MIN_WIDTH,
MAX_WIDTH,
CURRENT_WIDTH,
STEP_WIDTH,
MIN_COLOR_TEMPERATURE,
MAX_COLOR_TEMPERATURE,
CURRENT_COLOR_TEMPERATURE,
STEP_COLOR_TEMPERATURE,
NUM_ENTRIES
};
explicit PhotoCapabilities(base::android::ScopedJavaLocalRef<jobject> object);
~PhotoCapabilities();
int getInt(PhotoCapabilityInt capability) const;
double getDouble(PhotoCapabilityDouble capability) const;
bool getBool(PhotoCapabilityBool capability) const;
std::vector<AndroidFillLightMode> getFillLightModeArray() const;
AndroidMeteringMode getMeteringMode(MeteringModeType type) const;
std::vector<AndroidMeteringMode> getMeteringModeArray(
MeteringModeType type) const;
private:
const base::android::ScopedJavaLocalRef<jobject> object_;
};
} // namespace media
#endif // MEDIA_CAPTURE_VIDEO_ANDROID_PHOTO_CAPABILITIES_H_