Chromium Code Reviews| Index: media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera.java |
| diff --git a/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera.java b/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera.java |
| index db3f6e3cae640953f9ecefdb8b913adea91cb474..016ae4c53f7f1d3cb64df89cc45b9c23fcac0549 100644 |
| --- a/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera.java |
| +++ b/media/capture/video/android/java/src/org/chromium/media/VideoCaptureCamera.java |
| @@ -540,29 +540,27 @@ public class VideoCaptureCamera |
| if (index >= 0) builder.setCurrentColorTemperature(COLOR_TEMPERATURES_MAP.keyAt(index)); |
| } |
| - if (parameters.getSupportedFlashModes() == null) { |
| - builder.setFillLightMode(AndroidFillLightMode.NONE); |
| - } else { |
| - switch (parameters.getFlashMode()) { |
| - case android.hardware.Camera.Parameters.FLASH_MODE_OFF: |
| - builder.setFillLightMode(AndroidFillLightMode.OFF); |
| - break; |
| - case android.hardware.Camera.Parameters.FLASH_MODE_AUTO: |
| - builder.setFillLightMode(AndroidFillLightMode.AUTO); |
| - break; |
| - case android.hardware.Camera.Parameters.FLASH_MODE_RED_EYE: |
| - builder.setRedEyeReduction(true); |
| - builder.setFillLightMode(AndroidFillLightMode.AUTO); |
| - break; |
| - case android.hardware.Camera.Parameters.FLASH_MODE_ON: |
| - builder.setFillLightMode(AndroidFillLightMode.FLASH); |
| - break; |
| - case android.hardware.Camera.Parameters.FLASH_MODE_TORCH: |
| - builder.setFillLightMode(AndroidFillLightMode.TORCH); |
| - break; |
| - default: |
| - builder.setFillLightMode(AndroidFillLightMode.NONE); |
| + final List<String> flashModes = parameters.getSupportedFlashModes(); |
| + if (flashModes != null) { |
| + builder.setTorch( |
| + flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_TORCH)); |
| + builder.setRedEyeReduction( |
| + flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_RED_EYE)); |
| + |
| + ArrayList<Integer> modes = new ArrayList<Integer>(0); |
| + if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_OFF)) { |
| + modes.add(Integer.valueOf(AndroidFillLightMode.OFF)); |
| + } |
| + if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_AUTO)) { |
| + modes.add(Integer.valueOf(AndroidFillLightMode.AUTO)); |
| + } |
| + if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_ON)) { |
| + modes.add(Integer.valueOf(AndroidFillLightMode.FLASH)); |
| } |
| + |
| + int[] modesAsIntArray = new int[modes.size()]; |
| + for (int i = 0; i < modes.size(); i++) modesAsIntArray[i] = modes.get(i).intValue(); |
| + 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>
|
| } |
| return builder.build(); |
| @@ -573,7 +571,7 @@ public class VideoCaptureCamera |
| double height, float[] pointsOfInterest2D, boolean hasExposureCompensation, |
| double exposureCompensation, int whiteBalanceMode, double iso, |
| boolean hasRedEyeReduction, boolean redEyeReduction, int fillLightMode, |
| - double colorTemperature) { |
| + boolean hasTorch, boolean torch, double colorTemperature) { |
| android.hardware.Camera.Parameters parameters = getCameraParameters(mCamera); |
| if (parameters.isZoomSupported() && zoom > 0) { |
| @@ -667,10 +665,8 @@ public class VideoCaptureCamera |
| } |
| } |
| - // NONE is only used for getting capabilities, to signify "no flash unit". Ignore it. |
| if (parameters.getSupportedFlashModes() != null |
| - && fillLightMode != AndroidFillLightMode.NOT_SET |
| - && fillLightMode != AndroidFillLightMode.NONE) { |
| + && fillLightMode != AndroidFillLightMode.NOT_SET) { |
| switch (fillLightMode) { |
| case AndroidFillLightMode.OFF: |
| parameters.setFlashMode(android.hardware.Camera.Parameters.FLASH_MODE_OFF); |
| @@ -683,11 +679,11 @@ public class VideoCaptureCamera |
| case AndroidFillLightMode.FLASH: |
| parameters.setFlashMode(android.hardware.Camera.Parameters.FLASH_MODE_ON); |
| break; |
| - case AndroidFillLightMode.TORCH: |
| - parameters.setFlashMode(android.hardware.Camera.Parameters.FLASH_MODE_TORCH); |
| - break; |
| default: |
| } |
| + if (hasTorch && torch) { |
| + parameters.setFlashMode(android.hardware.Camera.Parameters.FLASH_MODE_TORCH); |
| + } |
| } |
| try { |