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

Side by Side Diff: media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera.java

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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 package org.chromium.media; 5 package org.chromium.media;
6 6
7 import android.annotation.TargetApi; 7 import android.annotation.TargetApi;
8 import android.content.Context; 8 import android.content.Context;
9 import android.graphics.ImageFormat; 9 import android.graphics.ImageFormat;
10 import android.graphics.Rect; 10 import android.graphics.Rect;
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 builder.setWhiteBalanceMode(jniWhiteBalanceMode); 533 builder.setWhiteBalanceMode(jniWhiteBalanceMode);
534 534
535 builder.setMinColorTemperature(COLOR_TEMPERATURES_MAP.keyAt(0)); 535 builder.setMinColorTemperature(COLOR_TEMPERATURES_MAP.keyAt(0));
536 builder.setMaxColorTemperature( 536 builder.setMaxColorTemperature(
537 COLOR_TEMPERATURES_MAP.keyAt(COLOR_TEMPERATURES_MAP.size() - 1)) ; 537 COLOR_TEMPERATURES_MAP.keyAt(COLOR_TEMPERATURES_MAP.size() - 1)) ;
538 if (jniWhiteBalanceMode == AndroidMeteringMode.FIXED) { 538 if (jniWhiteBalanceMode == AndroidMeteringMode.FIXED) {
539 final int index = COLOR_TEMPERATURES_MAP.indexOfValue(parameters.get WhiteBalance()); 539 final int index = COLOR_TEMPERATURES_MAP.indexOfValue(parameters.get WhiteBalance());
540 if (index >= 0) builder.setCurrentColorTemperature(COLOR_TEMPERATURE S_MAP.keyAt(index)); 540 if (index >= 0) builder.setCurrentColorTemperature(COLOR_TEMPERATURE S_MAP.keyAt(index));
541 } 541 }
542 542
543 if (parameters.getSupportedFlashModes() == null) { 543 final List<String> flashModes = parameters.getSupportedFlashModes();
544 builder.setFillLightMode(AndroidFillLightMode.NONE); 544 if (flashModes != null) {
545 } else { 545 builder.setTorch(
546 switch (parameters.getFlashMode()) { 546 flashModes.contains(android.hardware.Camera.Parameters.FLASH _MODE_TORCH));
547 case android.hardware.Camera.Parameters.FLASH_MODE_OFF: 547 builder.setRedEyeReduction(
548 builder.setFillLightMode(AndroidFillLightMode.OFF); 548 flashModes.contains(android.hardware.Camera.Parameters.FLASH _MODE_RED_EYE));
549 break; 549
550 case android.hardware.Camera.Parameters.FLASH_MODE_AUTO: 550 ArrayList<Integer> modes = new ArrayList<Integer>(0);
551 builder.setFillLightMode(AndroidFillLightMode.AUTO); 551 if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MOD E_OFF)) {
552 break; 552 modes.add(Integer.valueOf(AndroidFillLightMode.OFF));
553 case android.hardware.Camera.Parameters.FLASH_MODE_RED_EYE:
554 builder.setRedEyeReduction(true);
555 builder.setFillLightMode(AndroidFillLightMode.AUTO);
556 break;
557 case android.hardware.Camera.Parameters.FLASH_MODE_ON:
558 builder.setFillLightMode(AndroidFillLightMode.FLASH);
559 break;
560 case android.hardware.Camera.Parameters.FLASH_MODE_TORCH:
561 builder.setFillLightMode(AndroidFillLightMode.TORCH);
562 break;
563 default:
564 builder.setFillLightMode(AndroidFillLightMode.NONE);
565 } 553 }
554 if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MOD E_AUTO)) {
555 modes.add(Integer.valueOf(AndroidFillLightMode.AUTO));
556 }
557 if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MOD E_ON)) {
558 modes.add(Integer.valueOf(AndroidFillLightMode.FLASH));
559 }
560
561 int[] modesAsIntArray = new int[modes.size()];
562 for (int i = 0; i < modes.size(); i++) modesAsIntArray[i] = modes.ge t(i).intValue();
563 builder.setFillLightModes(modesAsIntArray);
Reilly Grant (use Gerrit) 2017/03/31 20:13:09 builder.setFillLightModes(modes.toArray(new int[mo
mcasas 2017/03/31 21:14:47 I wish! toArray() would only on ArrayList<Integer>
566 } 564 }
567 565
568 return builder.build(); 566 return builder.build();
569 } 567 }
570 568
571 @Override 569 @Override
572 public void setPhotoOptions(double zoom, int focusMode, int exposureMode, do uble width, 570 public void setPhotoOptions(double zoom, int focusMode, int exposureMode, do uble width,
573 double height, float[] pointsOfInterest2D, boolean hasExposureCompen sation, 571 double height, float[] pointsOfInterest2D, boolean hasExposureCompen sation,
574 double exposureCompensation, int whiteBalanceMode, double iso, 572 double exposureCompensation, int whiteBalanceMode, double iso,
575 boolean hasRedEyeReduction, boolean redEyeReduction, int fillLightMo de, 573 boolean hasRedEyeReduction, boolean redEyeReduction, int fillLightMo de,
576 double colorTemperature) { 574 boolean hasTorch, boolean torch, double colorTemperature) {
577 android.hardware.Camera.Parameters parameters = getCameraParameters(mCam era); 575 android.hardware.Camera.Parameters parameters = getCameraParameters(mCam era);
578 576
579 if (parameters.isZoomSupported() && zoom > 0) { 577 if (parameters.isZoomSupported() && zoom > 0) {
580 // |zoomRatios| is an ordered list; need the closest zoom index for parameters.setZoom() 578 // |zoomRatios| is an ordered list; need the closest zoom index for parameters.setZoom()
581 final List<Integer> zoomRatios = parameters.getZoomRatios(); 579 final List<Integer> zoomRatios = parameters.getZoomRatios();
582 int i = 1; 580 int i = 1;
583 for (; i < zoomRatios.size(); ++i) { 581 for (; i < zoomRatios.size(); ++i) {
584 if (zoom < zoomRatios.get(i)) { 582 if (zoom < zoomRatios.get(i)) {
585 break; 583 break;
586 } 584 }
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
660 parameters.setWhiteBalance(android.hardware.Camera.Parameters.WHITE_ BALANCE_AUTO); 658 parameters.setWhiteBalance(android.hardware.Camera.Parameters.WHITE_ BALANCE_AUTO);
661 } else if (whiteBalanceMode == AndroidMeteringMode.FIXED 659 } else if (whiteBalanceMode == AndroidMeteringMode.FIXED
662 && parameters.isAutoWhiteBalanceLockSupported()) { 660 && parameters.isAutoWhiteBalanceLockSupported()) {
663 parameters.setAutoWhiteBalanceLock(true); 661 parameters.setAutoWhiteBalanceLock(true);
664 if (colorTemperature > 0.0) { 662 if (colorTemperature > 0.0) {
665 final String closestSetting = getClosestWhiteBalance((int) color Temperature); 663 final String closestSetting = getClosestWhiteBalance((int) color Temperature);
666 if (closestSetting != null) parameters.setWhiteBalance(closestSe tting); 664 if (closestSetting != null) parameters.setWhiteBalance(closestSe tting);
667 } 665 }
668 } 666 }
669 667
670 // NONE is only used for getting capabilities, to signify "no flash unit ". Ignore it.
671 if (parameters.getSupportedFlashModes() != null 668 if (parameters.getSupportedFlashModes() != null
672 && fillLightMode != AndroidFillLightMode.NOT_SET 669 && fillLightMode != AndroidFillLightMode.NOT_SET) {
673 && fillLightMode != AndroidFillLightMode.NONE) {
674 switch (fillLightMode) { 670 switch (fillLightMode) {
675 case AndroidFillLightMode.OFF: 671 case AndroidFillLightMode.OFF:
676 parameters.setFlashMode(android.hardware.Camera.Parameters.F LASH_MODE_OFF); 672 parameters.setFlashMode(android.hardware.Camera.Parameters.F LASH_MODE_OFF);
677 break; 673 break;
678 case AndroidFillLightMode.AUTO: 674 case AndroidFillLightMode.AUTO:
679 parameters.setFlashMode(hasRedEyeReduction && redEyeReductio n 675 parameters.setFlashMode(hasRedEyeReduction && redEyeReductio n
680 ? android.hardware.Camera.Parameters.FLASH_M ODE_RED_EYE 676 ? android.hardware.Camera.Parameters.FLASH_M ODE_RED_EYE
681 : android.hardware.Camera.Parameters.FLASH_M ODE_AUTO); 677 : android.hardware.Camera.Parameters.FLASH_M ODE_AUTO);
682 break; 678 break;
683 case AndroidFillLightMode.FLASH: 679 case AndroidFillLightMode.FLASH:
684 parameters.setFlashMode(android.hardware.Camera.Parameters.F LASH_MODE_ON); 680 parameters.setFlashMode(android.hardware.Camera.Parameters.F LASH_MODE_ON);
685 break; 681 break;
686 case AndroidFillLightMode.TORCH:
687 parameters.setFlashMode(android.hardware.Camera.Parameters.F LASH_MODE_TORCH);
688 break;
689 default: 682 default:
690 } 683 }
684 if (hasTorch && torch) {
685 parameters.setFlashMode(android.hardware.Camera.Parameters.FLASH _MODE_TORCH);
686 }
691 } 687 }
692 688
693 try { 689 try {
694 mCamera.setParameters(parameters); 690 mCamera.setParameters(parameters);
695 } catch (RuntimeException ex) { 691 } catch (RuntimeException ex) {
696 Log.e(TAG, "setParameters: ", ex); 692 Log.e(TAG, "setParameters: ", ex);
697 return; 693 return;
698 } 694 }
699 695
700 if (focusMode != AndroidMeteringMode.SINGLE_SHOT) return; 696 if (focusMode != AndroidMeteringMode.SINGLE_SHOT) return;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 getCameraRotation()); 788 getCameraRotation());
793 } 789 }
794 } finally { 790 } finally {
795 mPreviewBufferLock.unlock(); 791 mPreviewBufferLock.unlock();
796 if (camera != null) { 792 if (camera != null) {
797 camera.addCallbackBuffer(data); 793 camera.addCallbackBuffer(data);
798 } 794 }
799 } 795 }
800 } 796 }
801 } 797 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698