| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/capture/video/android/video_capture_device_android.h" | 5 #include "media/capture/video/android/video_capture_device_android.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/android/jni_android.h" | 10 #include "base/android/jni_android.h" |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 case mojom::MeteringMode::NONE: | 60 case mojom::MeteringMode::NONE: |
| 61 return PhotoCapabilities::AndroidMeteringMode::NONE; | 61 return PhotoCapabilities::AndroidMeteringMode::NONE; |
| 62 } | 62 } |
| 63 NOTREACHED(); | 63 NOTREACHED(); |
| 64 return PhotoCapabilities::AndroidMeteringMode::NOT_SET; | 64 return PhotoCapabilities::AndroidMeteringMode::NOT_SET; |
| 65 } | 65 } |
| 66 | 66 |
| 67 mojom::FillLightMode ToMojomFillLightMode( | 67 mojom::FillLightMode ToMojomFillLightMode( |
| 68 PhotoCapabilities::AndroidFillLightMode android_mode) { | 68 PhotoCapabilities::AndroidFillLightMode android_mode) { |
| 69 switch (android_mode) { | 69 switch (android_mode) { |
| 70 case PhotoCapabilities::AndroidFillLightMode::TORCH: | |
| 71 return mojom::FillLightMode::TORCH; | |
| 72 case PhotoCapabilities::AndroidFillLightMode::FLASH: | 70 case PhotoCapabilities::AndroidFillLightMode::FLASH: |
| 73 return mojom::FillLightMode::FLASH; | 71 return mojom::FillLightMode::FLASH; |
| 74 case PhotoCapabilities::AndroidFillLightMode::AUTO: | 72 case PhotoCapabilities::AndroidFillLightMode::AUTO: |
| 75 return mojom::FillLightMode::AUTO; | 73 return mojom::FillLightMode::AUTO; |
| 76 case PhotoCapabilities::AndroidFillLightMode::OFF: | 74 case PhotoCapabilities::AndroidFillLightMode::OFF: |
| 77 return mojom::FillLightMode::OFF; | 75 return mojom::FillLightMode::OFF; |
| 78 case PhotoCapabilities::AndroidFillLightMode::NONE: | |
| 79 return mojom::FillLightMode::NONE; | |
| 80 case PhotoCapabilities::AndroidFillLightMode::NOT_SET: | 76 case PhotoCapabilities::AndroidFillLightMode::NOT_SET: |
| 81 NOTREACHED(); | 77 NOTREACHED(); |
| 82 } | 78 } |
| 83 return mojom::FillLightMode::NONE; | 79 NOTREACHED(); |
| 80 return mojom::FillLightMode::OFF; |
| 84 } | 81 } |
| 85 | 82 |
| 86 PhotoCapabilities::AndroidFillLightMode ToAndroidFillLightMode( | 83 PhotoCapabilities::AndroidFillLightMode ToAndroidFillLightMode( |
| 87 mojom::FillLightMode mojom_mode) { | 84 mojom::FillLightMode mojom_mode) { |
| 88 switch (mojom_mode) { | 85 switch (mojom_mode) { |
| 89 case mojom::FillLightMode::TORCH: | |
| 90 return PhotoCapabilities::AndroidFillLightMode::TORCH; | |
| 91 case mojom::FillLightMode::FLASH: | 86 case mojom::FillLightMode::FLASH: |
| 92 return PhotoCapabilities::AndroidFillLightMode::FLASH; | 87 return PhotoCapabilities::AndroidFillLightMode::FLASH; |
| 93 case mojom::FillLightMode::AUTO: | 88 case mojom::FillLightMode::AUTO: |
| 94 return PhotoCapabilities::AndroidFillLightMode::AUTO; | 89 return PhotoCapabilities::AndroidFillLightMode::AUTO; |
| 95 case mojom::FillLightMode::OFF: | 90 case mojom::FillLightMode::OFF: |
| 96 return PhotoCapabilities::AndroidFillLightMode::OFF; | 91 return PhotoCapabilities::AndroidFillLightMode::OFF; |
| 97 case mojom::FillLightMode::NONE: | |
| 98 return PhotoCapabilities::AndroidFillLightMode::NONE; | |
| 99 } | 92 } |
| 100 NOTREACHED(); | 93 NOTREACHED(); |
| 101 return PhotoCapabilities::AndroidFillLightMode::NOT_SET; | 94 return PhotoCapabilities::AndroidFillLightMode::NOT_SET; |
| 102 } | 95 } |
| 103 | 96 |
| 104 } // anonymous namespace | 97 } // anonymous namespace |
| 105 | 98 |
| 106 // static | 99 // static |
| 107 bool VideoCaptureDeviceAndroid::RegisterVideoCaptureDevice(JNIEnv* env) { | 100 bool VideoCaptureDeviceAndroid::RegisterVideoCaptureDevice(JNIEnv* env) { |
| 108 return RegisterNativesImpl(env); | 101 return RegisterNativesImpl(env); |
| (...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 503 #endif | 496 #endif |
| 504 JNIEnv* env = AttachCurrentThread(); | 497 JNIEnv* env = AttachCurrentThread(); |
| 505 | 498 |
| 506 PhotoCapabilities caps( | 499 PhotoCapabilities caps( |
| 507 Java_VideoCapture_getPhotoCapabilities(env, j_capture_)); | 500 Java_VideoCapture_getPhotoCapabilities(env, j_capture_)); |
| 508 | 501 |
| 509 // TODO(mcasas): Manual member copying sucks, consider adding typemapping from | 502 // TODO(mcasas): Manual member copying sucks, consider adding typemapping from |
| 510 // PhotoCapabilities to mojom::PhotoCapabilitiesPtr, https://crbug.com/622002. | 503 // PhotoCapabilities to mojom::PhotoCapabilitiesPtr, https://crbug.com/622002. |
| 511 mojom::PhotoCapabilitiesPtr photo_capabilities = | 504 mojom::PhotoCapabilitiesPtr photo_capabilities = |
| 512 mojom::PhotoCapabilities::New(); | 505 mojom::PhotoCapabilities::New(); |
| 513 photo_capabilities->iso = mojom::Range::New(); | 506 |
| 514 photo_capabilities->iso->current = caps.getCurrentIso(); | 507 photo_capabilities->white_balance_mode = |
| 515 photo_capabilities->iso->max = caps.getMaxIso(); | 508 ToMojomMeteringMode(caps.getWhiteBalanceMode()); |
| 516 photo_capabilities->iso->min = caps.getMinIso(); | |
| 517 photo_capabilities->iso->step = caps.getStepIso(); | |
| 518 photo_capabilities->height = mojom::Range::New(); | |
| 519 photo_capabilities->height->current = caps.getCurrentHeight(); | |
| 520 photo_capabilities->height->max = caps.getMaxHeight(); | |
| 521 photo_capabilities->height->min = caps.getMinHeight(); | |
| 522 photo_capabilities->height->step = caps.getStepHeight(); | |
| 523 photo_capabilities->width = mojom::Range::New(); | |
| 524 photo_capabilities->width->current = caps.getCurrentWidth(); | |
| 525 photo_capabilities->width->max = caps.getMaxWidth(); | |
| 526 photo_capabilities->width->min = caps.getMinWidth(); | |
| 527 photo_capabilities->width->step = caps.getStepWidth(); | |
| 528 photo_capabilities->zoom = mojom::Range::New(); | |
| 529 photo_capabilities->zoom->current = caps.getCurrentZoom(); | |
| 530 photo_capabilities->zoom->max = caps.getMaxZoom(); | |
| 531 photo_capabilities->zoom->min = caps.getMinZoom(); | |
| 532 photo_capabilities->zoom->step = caps.getStepZoom(); | |
| 533 photo_capabilities->focus_mode = ToMojomMeteringMode(caps.getFocusMode()); | |
| 534 photo_capabilities->exposure_mode = | 509 photo_capabilities->exposure_mode = |
| 535 ToMojomMeteringMode(caps.getExposureMode()); | 510 ToMojomMeteringMode(caps.getExposureMode()); |
| 511 photo_capabilities->focus_mode = ToMojomMeteringMode(caps.getFocusMode()); |
| 512 |
| 536 photo_capabilities->exposure_compensation = mojom::Range::New(); | 513 photo_capabilities->exposure_compensation = mojom::Range::New(); |
| 537 photo_capabilities->exposure_compensation->current = | 514 photo_capabilities->exposure_compensation->current = |
| 538 caps.getCurrentExposureCompensation(); | 515 caps.getCurrentExposureCompensation(); |
| 539 photo_capabilities->exposure_compensation->max = | 516 photo_capabilities->exposure_compensation->max = |
| 540 caps.getMaxExposureCompensation(); | 517 caps.getMaxExposureCompensation(); |
| 541 photo_capabilities->exposure_compensation->min = | 518 photo_capabilities->exposure_compensation->min = |
| 542 caps.getMinExposureCompensation(); | 519 caps.getMinExposureCompensation(); |
| 543 photo_capabilities->exposure_compensation->step = | 520 photo_capabilities->exposure_compensation->step = |
| 544 caps.getStepExposureCompensation(); | 521 caps.getStepExposureCompensation(); |
| 545 photo_capabilities->white_balance_mode = | |
| 546 ToMojomMeteringMode(caps.getWhiteBalanceMode()); | |
| 547 photo_capabilities->fill_light_mode = | |
| 548 ToMojomFillLightMode(caps.getFillLightMode()); | |
| 549 photo_capabilities->red_eye_reduction = caps.getRedEyeReduction(); | |
| 550 photo_capabilities->color_temperature = mojom::Range::New(); | 522 photo_capabilities->color_temperature = mojom::Range::New(); |
| 551 photo_capabilities->color_temperature->current = | 523 photo_capabilities->color_temperature->current = |
| 552 caps.getCurrentColorTemperature(); | 524 caps.getCurrentColorTemperature(); |
| 553 photo_capabilities->color_temperature->max = caps.getMaxColorTemperature(); | 525 photo_capabilities->color_temperature->max = caps.getMaxColorTemperature(); |
| 554 photo_capabilities->color_temperature->min = caps.getMinColorTemperature(); | 526 photo_capabilities->color_temperature->min = caps.getMinColorTemperature(); |
| 555 photo_capabilities->color_temperature->step = caps.getStepColorTemperature(); | 527 photo_capabilities->color_temperature->step = caps.getStepColorTemperature(); |
| 528 photo_capabilities->iso = mojom::Range::New(); |
| 529 photo_capabilities->iso->current = caps.getCurrentIso(); |
| 530 photo_capabilities->iso->max = caps.getMaxIso(); |
| 531 photo_capabilities->iso->min = caps.getMinIso(); |
| 532 photo_capabilities->iso->step = caps.getStepIso(); |
| 533 |
| 556 photo_capabilities->brightness = media::mojom::Range::New(); | 534 photo_capabilities->brightness = media::mojom::Range::New(); |
| 557 photo_capabilities->contrast = media::mojom::Range::New(); | 535 photo_capabilities->contrast = media::mojom::Range::New(); |
| 558 photo_capabilities->saturation = media::mojom::Range::New(); | 536 photo_capabilities->saturation = media::mojom::Range::New(); |
| 559 photo_capabilities->sharpness = media::mojom::Range::New(); | 537 photo_capabilities->sharpness = media::mojom::Range::New(); |
| 560 | 538 |
| 539 photo_capabilities->zoom = mojom::Range::New(); |
| 540 photo_capabilities->zoom->current = caps.getCurrentZoom(); |
| 541 photo_capabilities->zoom->max = caps.getMaxZoom(); |
| 542 photo_capabilities->zoom->min = caps.getMinZoom(); |
| 543 photo_capabilities->zoom->step = caps.getStepZoom(); |
| 544 |
| 545 photo_capabilities->torch = caps.getTorch(); |
| 546 |
| 547 photo_capabilities->red_eye_reduction = |
| 548 caps.getRedEyeReduction() ? media::mojom::RedEyeReduction::CONTROLLABLE |
| 549 : media::mojom::RedEyeReduction::NEVER; |
| 550 photo_capabilities->height = mojom::Range::New(); |
| 551 photo_capabilities->height->current = caps.getCurrentHeight(); |
| 552 photo_capabilities->height->max = caps.getMaxHeight(); |
| 553 photo_capabilities->height->min = caps.getMinHeight(); |
| 554 photo_capabilities->height->step = caps.getStepHeight(); |
| 555 photo_capabilities->width = mojom::Range::New(); |
| 556 photo_capabilities->width->current = caps.getCurrentWidth(); |
| 557 photo_capabilities->width->max = caps.getMaxWidth(); |
| 558 photo_capabilities->width->min = caps.getMinWidth(); |
| 559 photo_capabilities->width->step = caps.getStepWidth(); |
| 560 const auto fill_light_modes = caps.getFillLightModes(); |
| 561 std::vector<media::mojom::FillLightMode> modes; |
| 562 for (const auto& fill_light_mode : fill_light_modes) |
| 563 modes.push_back(ToMojomFillLightMode(fill_light_mode)); |
| 564 photo_capabilities->fill_light_mode = modes; |
| 565 |
| 561 callback.Run(std::move(photo_capabilities)); | 566 callback.Run(std::move(photo_capabilities)); |
| 562 } | 567 } |
| 563 | 568 |
| 564 void VideoCaptureDeviceAndroid::DoSetPhotoOptions( | 569 void VideoCaptureDeviceAndroid::DoSetPhotoOptions( |
| 565 mojom::PhotoSettingsPtr settings, | 570 mojom::PhotoSettingsPtr settings, |
| 566 SetPhotoOptionsCallback callback) { | 571 SetPhotoOptionsCallback callback) { |
| 567 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 572 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 568 #if DCHECK_IS_ON() | 573 #if DCHECK_IS_ON() |
| 569 { | 574 { |
| 570 base::AutoLock lock(lock_); | 575 base::AutoLock lock(lock_); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 615 | 620 |
| 616 const double color_temperature = | 621 const double color_temperature = |
| 617 settings->has_color_temperature ? settings->color_temperature : 0.0; | 622 settings->has_color_temperature ? settings->color_temperature : 0.0; |
| 618 | 623 |
| 619 Java_VideoCapture_setPhotoOptions( | 624 Java_VideoCapture_setPhotoOptions( |
| 620 env, j_capture_, zoom, static_cast<int>(focus_mode), | 625 env, j_capture_, zoom, static_cast<int>(focus_mode), |
| 621 static_cast<int>(exposure_mode), width, height, points_of_interest, | 626 static_cast<int>(exposure_mode), width, height, points_of_interest, |
| 622 settings->has_exposure_compensation, exposure_compensation, | 627 settings->has_exposure_compensation, exposure_compensation, |
| 623 static_cast<int>(white_balance_mode), iso, | 628 static_cast<int>(white_balance_mode), iso, |
| 624 settings->has_red_eye_reduction, settings->red_eye_reduction, | 629 settings->has_red_eye_reduction, settings->red_eye_reduction, |
| 625 static_cast<int>(fill_light_mode), color_temperature); | 630 static_cast<int>(fill_light_mode), settings->has_torch, settings->torch, |
| 631 color_temperature); |
| 626 | 632 |
| 627 callback.Run(true); | 633 callback.Run(true); |
| 628 } | 634 } |
| 629 | 635 |
| 630 } // namespace media | 636 } // namespace media |
| OLD | NEW |