| Index: media/capture/video/android/video_capture_device_android.cc
|
| diff --git a/media/capture/video/android/video_capture_device_android.cc b/media/capture/video/android/video_capture_device_android.cc
|
| index f398a5ae8868f572808fa25108d3b05797674355..60c341113d0c69cfec30217ce69ef0b3a11e2e88 100644
|
| --- a/media/capture/video/android/video_capture_device_android.cc
|
| +++ b/media/capture/video/android/video_capture_device_android.cc
|
| @@ -29,6 +29,43 @@ using base::android::ScopedJavaLocalRef;
|
|
|
| namespace media {
|
|
|
| +namespace {
|
| +
|
| +mojom::MeteringMode ToMojomMeteringMode(
|
| + PhotoCapabilities::AndroidMeteringMode android_mode) {
|
| + switch (android_mode) {
|
| + case PhotoCapabilities::AndroidMeteringMode::FIXED:
|
| + return mojom::MeteringMode::MANUAL;
|
| + case PhotoCapabilities::AndroidMeteringMode::SINGLE_SHOT:
|
| + return mojom::MeteringMode::SINGLE_SHOT;
|
| + case PhotoCapabilities::AndroidMeteringMode::CONTINUOUS:
|
| + return mojom::MeteringMode::CONTINUOUS;
|
| + case PhotoCapabilities::AndroidMeteringMode::UNAVAILABLE:
|
| + return mojom::MeteringMode::UNAVAILABLE;
|
| + case PhotoCapabilities::AndroidMeteringMode::NOT_SET:
|
| + NOTREACHED();
|
| + }
|
| + return mojom::MeteringMode::UNAVAILABLE;
|
| +}
|
| +
|
| +PhotoCapabilities::AndroidMeteringMode ToAndroidMeteringMode(
|
| + mojom::MeteringMode mojom_mode) {
|
| + switch (mojom_mode) {
|
| + case mojom::MeteringMode::MANUAL:
|
| + return PhotoCapabilities::AndroidMeteringMode::FIXED;
|
| + case mojom::MeteringMode::SINGLE_SHOT:
|
| + return PhotoCapabilities::AndroidMeteringMode::SINGLE_SHOT;
|
| + case mojom::MeteringMode::CONTINUOUS:
|
| + return PhotoCapabilities::AndroidMeteringMode::CONTINUOUS;
|
| + case mojom::MeteringMode::UNAVAILABLE:
|
| + return PhotoCapabilities::AndroidMeteringMode::UNAVAILABLE;
|
| + }
|
| + NOTREACHED();
|
| + return PhotoCapabilities::AndroidMeteringMode::NOT_SET;
|
| +}
|
| +
|
| +} // anonymous namespace
|
| +
|
| // static
|
| bool VideoCaptureDeviceAndroid::RegisterVideoCaptureDevice(JNIEnv* env) {
|
| return RegisterNativesImpl(env);
|
| @@ -434,20 +471,10 @@ void VideoCaptureDeviceAndroid::DoGetPhotoCapabilities(
|
| photo_capabilities->zoom->current = caps.getCurrentZoom();
|
| photo_capabilities->zoom->max = caps.getMaxZoom();
|
| photo_capabilities->zoom->min = caps.getMinZoom();
|
| - switch (caps.getFocusMode()) {
|
| - case PhotoCapabilities::AndroidFocusMode::UNAVAILABLE:
|
| - photo_capabilities->focus_mode = mojom::FocusMode::UNAVAILABLE;
|
| - break;
|
| - case PhotoCapabilities::AndroidFocusMode::FIXED:
|
| - photo_capabilities->focus_mode = mojom::FocusMode::MANUAL;
|
| - break;
|
| - case PhotoCapabilities::AndroidFocusMode::SINGLE_SHOT:
|
| - photo_capabilities->focus_mode = mojom::FocusMode::SINGLE_SHOT;
|
| - break;
|
| - case PhotoCapabilities::AndroidFocusMode::CONTINUOUS:
|
| - photo_capabilities->focus_mode = mojom::FocusMode::CONTINUOUS;
|
| - break;
|
| - }
|
| + photo_capabilities->focus_mode = ToMojomMeteringMode(caps.getFocusMode());
|
| + photo_capabilities->exposure_mode =
|
| + ToMojomMeteringMode(caps.getExposureMode());
|
| +
|
| callback.Run(std::move(photo_capabilities));
|
| }
|
|
|
| @@ -468,24 +495,15 @@ void VideoCaptureDeviceAndroid::DoSetPhotoOptions(
|
| const int height = settings->has_height ? settings->height : 0;
|
| const int zoom = settings->has_zoom ? settings->zoom : 0;
|
|
|
| - PhotoCapabilities::AndroidFocusMode focus_mode =
|
| - PhotoCapabilities::AndroidFocusMode::UNAVAILABLE;
|
| - if (settings->has_focus_mode) {
|
| - switch (settings->focus_mode) {
|
| - case mojom::FocusMode::MANUAL:
|
| - focus_mode = PhotoCapabilities::AndroidFocusMode::FIXED;
|
| - break;
|
| - case mojom::FocusMode::SINGLE_SHOT:
|
| - focus_mode = PhotoCapabilities::AndroidFocusMode::SINGLE_SHOT;
|
| - break;
|
| - case mojom::FocusMode::CONTINUOUS:
|
| - focus_mode = PhotoCapabilities::AndroidFocusMode::CONTINUOUS;
|
| - break;
|
| - case mojom::FocusMode::UNAVAILABLE:
|
| - focus_mode = PhotoCapabilities::AndroidFocusMode::UNAVAILABLE;
|
| - break;
|
| - }
|
| - }
|
| + const PhotoCapabilities::AndroidMeteringMode focus_mode =
|
| + settings->has_focus_mode
|
| + ? ToAndroidMeteringMode(settings->focus_mode)
|
| + : PhotoCapabilities::AndroidMeteringMode::NOT_SET;
|
| +
|
| + const PhotoCapabilities::AndroidMeteringMode exposure_mode =
|
| + settings->has_exposure_mode
|
| + ? ToAndroidMeteringMode(settings->exposure_mode)
|
| + : PhotoCapabilities::AndroidMeteringMode::NOT_SET;
|
|
|
| std::vector<float> points_of_interest_marshalled;
|
| for (const auto& point : settings->points_of_interest) {
|
| @@ -495,9 +513,9 @@ void VideoCaptureDeviceAndroid::DoSetPhotoOptions(
|
| ScopedJavaLocalRef<jfloatArray> points_of_interest =
|
| base::android::ToJavaFloatArray(env, points_of_interest_marshalled);
|
|
|
| - Java_VideoCapture_setPhotoOptions(env, j_capture_, zoom,
|
| - static_cast<int>(focus_mode), width, height,
|
| - points_of_interest);
|
| + Java_VideoCapture_setPhotoOptions(
|
| + env, j_capture_, zoom, static_cast<int>(focus_mode),
|
| + static_cast<int>(exposure_mode), width, height, points_of_interest);
|
|
|
| callback.Run(true);
|
| }
|
|
|