Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(298)

Side by Side Diff: media/capture/video/android/video_capture_device_android.cc

Issue 2787933002: ImageCapture: separate fillLightMode, redEyeReduction and Torch (Closed)
Patch Set: corrected setOptions.html Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 return mojom::FillLightMode::OFF;
Reilly Grant (use Gerrit) 2017/03/31 20:13:09 NOTREACHED(); return mojom::FillLightMode::OFF;
mcasas 2017/03/31 21:14:47 Done.
84 } 80 }
85 81
86 PhotoCapabilities::AndroidFillLightMode ToAndroidFillLightMode( 82 PhotoCapabilities::AndroidFillLightMode ToAndroidFillLightMode(
87 mojom::FillLightMode mojom_mode) { 83 mojom::FillLightMode mojom_mode) {
88 switch (mojom_mode) { 84 switch (mojom_mode) {
89 case mojom::FillLightMode::TORCH:
90 return PhotoCapabilities::AndroidFillLightMode::TORCH;
91 case mojom::FillLightMode::FLASH: 85 case mojom::FillLightMode::FLASH:
92 return PhotoCapabilities::AndroidFillLightMode::FLASH; 86 return PhotoCapabilities::AndroidFillLightMode::FLASH;
93 case mojom::FillLightMode::AUTO: 87 case mojom::FillLightMode::AUTO:
94 return PhotoCapabilities::AndroidFillLightMode::AUTO; 88 return PhotoCapabilities::AndroidFillLightMode::AUTO;
95 case mojom::FillLightMode::OFF: 89 case mojom::FillLightMode::OFF:
96 return PhotoCapabilities::AndroidFillLightMode::OFF; 90 return PhotoCapabilities::AndroidFillLightMode::OFF;
97 case mojom::FillLightMode::NONE:
98 return PhotoCapabilities::AndroidFillLightMode::NONE;
99 } 91 }
100 NOTREACHED(); 92 NOTREACHED();
101 return PhotoCapabilities::AndroidFillLightMode::NOT_SET; 93 return PhotoCapabilities::AndroidFillLightMode::NOT_SET;
102 } 94 }
103 95
104 } // anonymous namespace 96 } // anonymous namespace
105 97
106 // static 98 // static
107 bool VideoCaptureDeviceAndroid::RegisterVideoCaptureDevice(JNIEnv* env) { 99 bool VideoCaptureDeviceAndroid::RegisterVideoCaptureDevice(JNIEnv* env) {
108 return RegisterNativesImpl(env); 100 return RegisterNativesImpl(env);
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 #endif 495 #endif
504 JNIEnv* env = AttachCurrentThread(); 496 JNIEnv* env = AttachCurrentThread();
505 497
506 PhotoCapabilities caps( 498 PhotoCapabilities caps(
507 Java_VideoCapture_getPhotoCapabilities(env, j_capture_)); 499 Java_VideoCapture_getPhotoCapabilities(env, j_capture_));
508 500
509 // TODO(mcasas): Manual member copying sucks, consider adding typemapping from 501 // TODO(mcasas): Manual member copying sucks, consider adding typemapping from
510 // PhotoCapabilities to mojom::PhotoCapabilitiesPtr, https://crbug.com/622002. 502 // PhotoCapabilities to mojom::PhotoCapabilitiesPtr, https://crbug.com/622002.
511 mojom::PhotoCapabilitiesPtr photo_capabilities = 503 mojom::PhotoCapabilitiesPtr photo_capabilities =
512 mojom::PhotoCapabilities::New(); 504 mojom::PhotoCapabilities::New();
513 photo_capabilities->iso = mojom::Range::New(); 505
514 photo_capabilities->iso->current = caps.getCurrentIso(); 506 photo_capabilities->white_balance_mode =
515 photo_capabilities->iso->max = caps.getMaxIso(); 507 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 = 508 photo_capabilities->exposure_mode =
535 ToMojomMeteringMode(caps.getExposureMode()); 509 ToMojomMeteringMode(caps.getExposureMode());
510 photo_capabilities->focus_mode = ToMojomMeteringMode(caps.getFocusMode());
511
536 photo_capabilities->exposure_compensation = mojom::Range::New(); 512 photo_capabilities->exposure_compensation = mojom::Range::New();
537 photo_capabilities->exposure_compensation->current = 513 photo_capabilities->exposure_compensation->current =
538 caps.getCurrentExposureCompensation(); 514 caps.getCurrentExposureCompensation();
539 photo_capabilities->exposure_compensation->max = 515 photo_capabilities->exposure_compensation->max =
540 caps.getMaxExposureCompensation(); 516 caps.getMaxExposureCompensation();
541 photo_capabilities->exposure_compensation->min = 517 photo_capabilities->exposure_compensation->min =
542 caps.getMinExposureCompensation(); 518 caps.getMinExposureCompensation();
543 photo_capabilities->exposure_compensation->step = 519 photo_capabilities->exposure_compensation->step =
544 caps.getStepExposureCompensation(); 520 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(); 521 photo_capabilities->color_temperature = mojom::Range::New();
551 photo_capabilities->color_temperature->current = 522 photo_capabilities->color_temperature->current =
552 caps.getCurrentColorTemperature(); 523 caps.getCurrentColorTemperature();
553 photo_capabilities->color_temperature->max = caps.getMaxColorTemperature(); 524 photo_capabilities->color_temperature->max = caps.getMaxColorTemperature();
554 photo_capabilities->color_temperature->min = caps.getMinColorTemperature(); 525 photo_capabilities->color_temperature->min = caps.getMinColorTemperature();
555 photo_capabilities->color_temperature->step = caps.getStepColorTemperature(); 526 photo_capabilities->color_temperature->step = caps.getStepColorTemperature();
527 photo_capabilities->iso = mojom::Range::New();
528 photo_capabilities->iso->current = caps.getCurrentIso();
529 photo_capabilities->iso->max = caps.getMaxIso();
530 photo_capabilities->iso->min = caps.getMinIso();
531 photo_capabilities->iso->step = caps.getStepIso();
532
556 photo_capabilities->brightness = media::mojom::Range::New(); 533 photo_capabilities->brightness = media::mojom::Range::New();
557 photo_capabilities->contrast = media::mojom::Range::New(); 534 photo_capabilities->contrast = media::mojom::Range::New();
558 photo_capabilities->saturation = media::mojom::Range::New(); 535 photo_capabilities->saturation = media::mojom::Range::New();
559 photo_capabilities->sharpness = media::mojom::Range::New(); 536 photo_capabilities->sharpness = media::mojom::Range::New();
560 537
538 photo_capabilities->zoom = mojom::Range::New();
539 photo_capabilities->zoom->current = caps.getCurrentZoom();
540 photo_capabilities->zoom->max = caps.getMaxZoom();
541 photo_capabilities->zoom->min = caps.getMinZoom();
542 photo_capabilities->zoom->step = caps.getStepZoom();
543
544 photo_capabilities->torch = caps.getTorch();
545
546 photo_capabilities->red_eye_reduction =
547 caps.getRedEyeReduction() ? media::mojom::RedEyeReduction::CONTROLLABLE
548 : media::mojom::RedEyeReduction::NEVER;
549 photo_capabilities->height = mojom::Range::New();
550 photo_capabilities->height->current = caps.getCurrentHeight();
551 photo_capabilities->height->max = caps.getMaxHeight();
552 photo_capabilities->height->min = caps.getMinHeight();
553 photo_capabilities->height->step = caps.getStepHeight();
554 photo_capabilities->width = mojom::Range::New();
555 photo_capabilities->width->current = caps.getCurrentWidth();
556 photo_capabilities->width->max = caps.getMaxWidth();
557 photo_capabilities->width->min = caps.getMinWidth();
558 photo_capabilities->width->step = caps.getStepWidth();
559 const auto fill_light_modes = caps.getFillLightModes();
560 std::vector<media::mojom::FillLightMode> modes;
561 for (const auto& fill_light_mode : fill_light_modes)
562 modes.push_back(ToMojomFillLightMode(fill_light_mode));
563 photo_capabilities->fill_light_mode = modes;
564
561 callback.Run(std::move(photo_capabilities)); 565 callback.Run(std::move(photo_capabilities));
562 } 566 }
563 567
564 void VideoCaptureDeviceAndroid::DoSetPhotoOptions( 568 void VideoCaptureDeviceAndroid::DoSetPhotoOptions(
565 mojom::PhotoSettingsPtr settings, 569 mojom::PhotoSettingsPtr settings,
566 SetPhotoOptionsCallback callback) { 570 SetPhotoOptionsCallback callback) {
567 DCHECK(main_task_runner_->BelongsToCurrentThread()); 571 DCHECK(main_task_runner_->BelongsToCurrentThread());
568 #if DCHECK_IS_ON() 572 #if DCHECK_IS_ON()
569 { 573 {
570 base::AutoLock lock(lock_); 574 base::AutoLock lock(lock_);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
615 619
616 const double color_temperature = 620 const double color_temperature =
617 settings->has_color_temperature ? settings->color_temperature : 0.0; 621 settings->has_color_temperature ? settings->color_temperature : 0.0;
618 622
619 Java_VideoCapture_setPhotoOptions( 623 Java_VideoCapture_setPhotoOptions(
620 env, j_capture_, zoom, static_cast<int>(focus_mode), 624 env, j_capture_, zoom, static_cast<int>(focus_mode),
621 static_cast<int>(exposure_mode), width, height, points_of_interest, 625 static_cast<int>(exposure_mode), width, height, points_of_interest,
622 settings->has_exposure_compensation, exposure_compensation, 626 settings->has_exposure_compensation, exposure_compensation,
623 static_cast<int>(white_balance_mode), iso, 627 static_cast<int>(white_balance_mode), iso,
624 settings->has_red_eye_reduction, settings->red_eye_reduction, 628 settings->has_red_eye_reduction, settings->red_eye_reduction,
625 static_cast<int>(fill_light_mode), color_temperature); 629 static_cast<int>(fill_light_mode), settings->has_torch, settings->torch,
630 color_temperature);
626 631
627 callback.Run(true); 632 callback.Run(true);
628 } 633 }
629 634
630 } // namespace media 635 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698