summaryrefslogtreecommitdiff
path: root/chromium/media/capture/video/android/photo_capabilities.h
blob: d2c47f10aed4f701eee251548988b489b6423ed4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
// 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_