| OLD | NEW |
| 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 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 383 // We need to configure by hand the exposure time when AE mode is of
f. Set it to the | 383 // We need to configure by hand the exposure time when AE mode is of
f. Set it to the |
| 384 // middle of the allowed range. Further tuning will be done via |mIs
o|. | 384 // middle of the allowed range. Further tuning will be done via |mIs
o|. |
| 385 final CameraCharacteristics cameraCharacteristics = | 385 final CameraCharacteristics cameraCharacteristics = |
| 386 getCameraCharacteristics(mContext, mId); | 386 getCameraCharacteristics(mContext, mId); |
| 387 Range<Long> range = cameraCharacteristics.get( | 387 Range<Long> range = cameraCharacteristics.get( |
| 388 CameraCharacteristics.SENSOR_INFO_EXPOSURE_TIME_RANGE); | 388 CameraCharacteristics.SENSOR_INFO_EXPOSURE_TIME_RANGE); |
| 389 requestBuilder.set(CaptureRequest.SENSOR_EXPOSURE_TIME, | 389 requestBuilder.set(CaptureRequest.SENSOR_EXPOSURE_TIME, |
| 390 range.getLower() + (range.getUpper() + range.getLower()) / 2
/* nanoseconds*/); | 390 range.getLower() + (range.getUpper() + range.getLower()) / 2
/* nanoseconds*/); |
| 391 | 391 |
| 392 } else { | 392 } else { |
| 393 requestBuilder.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTR
OL_MODE_AUTO); |
| 393 requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CO
NTROL_AE_MODE_ON); | 394 requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CO
NTROL_AE_MODE_ON); |
| 394 requestBuilder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, mAeFp
sRange); | 395 requestBuilder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, mAeFp
sRange); |
| 395 } | 396 } |
| 396 switch (mFillLightMode) { | 397 |
| 397 case AndroidFillLightMode.OFF: | 398 if (mTorch) { |
| 398 requestBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLA
SH_MODE_OFF); | 399 requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, |
| 399 break; | 400 mExposureMode == AndroidMeteringMode.CONTINUOUS |
| 400 case AndroidFillLightMode.AUTO: | 401 ? CameraMetadata.CONTROL_AE_MODE_ON |
| 401 // Setting the AE to CONTROL_AE_MODE_ON_AUTO_FLASH[_REDEYE] over
rides FLASH_MODE. | 402 : CameraMetadata.CONTROL_AE_MODE_OFF); |
| 402 requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, mRedEyeReduct
ion | 403 requestBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_M
ODE_TORCH); |
| 403 ? CameraMetadata.CONTROL_AE_MODE_ON_AUTO_FLASH_R
EDEYE | 404 } else { |
| 404 : CameraMetadata.CONTROL_AE_MODE_ON_AUTO_FLASH); | 405 switch (mFillLightMode) { |
| 405 break; | 406 case AndroidFillLightMode.OFF: |
| 406 case AndroidFillLightMode.FLASH: | 407 requestBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata
.FLASH_MODE_OFF); |
| 407 // Setting the AE to CONTROL_AE_MODE_ON_ALWAYS_FLASH overrides F
LASH_MODE. | 408 break; |
| 408 requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, | 409 case AndroidFillLightMode.AUTO: |
| 409 CameraMetadata.CONTROL_AE_MODE_ON_ALWAYS_FLASH); | 410 // Setting the AE to CONTROL_AE_MODE_ON_AUTO_FLASH[_REDEYE]
overrides |
| 410 break; | 411 // FLASH_MODE. |
| 411 default: | 412 requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, |
| 413 mRedEyeReduction ? CameraMetadata.CONTROL_AE_MODE_ON
_AUTO_FLASH_REDEYE |
| 414 : CameraMetadata.CONTROL_AE_MODE_ON
_AUTO_FLASH); |
| 415 break; |
| 416 case AndroidFillLightMode.FLASH: |
| 417 // Setting the AE to CONTROL_AE_MODE_ON_ALWAYS_FLASH overrid
es FLASH_MODE. |
| 418 requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, |
| 419 CameraMetadata.CONTROL_AE_MODE_ON_ALWAYS_FLASH); |
| 420 requestBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata
.FLASH_MODE_SINGLE); |
| 421 break; |
| 422 default: |
| 423 } |
| 424 requestBuilder.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER, |
| 425 CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_IDLE); |
| 412 } | 426 } |
| 413 if (mTorch) requestBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata
.FLASH_MODE_TORCH); | |
| 414 | 427 |
| 415 requestBuilder.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, mExp
osureCompensation); | 428 requestBuilder.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, mExp
osureCompensation); |
| 416 | 429 |
| 417 // White Balance mode AndroidMeteringMode.SINGLE_SHOT is not supported. | 430 // White Balance mode AndroidMeteringMode.SINGLE_SHOT is not supported. |
| 418 if (mWhiteBalanceMode == AndroidMeteringMode.CONTINUOUS) { | 431 if (mWhiteBalanceMode == AndroidMeteringMode.CONTINUOUS) { |
| 419 requestBuilder.set(CaptureRequest.CONTROL_AWB_LOCK, false); | 432 requestBuilder.set(CaptureRequest.CONTROL_AWB_LOCK, false); |
| 420 requestBuilder.set( | 433 requestBuilder.set( |
| 421 CaptureRequest.CONTROL_AWB_MODE, CameraMetadata.CONTROL_AWB_
MODE_AUTO); | 434 CaptureRequest.CONTROL_AWB_MODE, CameraMetadata.CONTROL_AWB_
MODE_AUTO); |
| 422 // TODO(mcasas): support different luminant color temperatures, e.g.
DAYLIGHT, SHADE. | 435 // TODO(mcasas): support different luminant color temperatures, e.g.
DAYLIGHT, SHADE. |
| 423 // https://crbug.com/518807 | 436 // https://crbug.com/518807 |
| (...skipping 618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1042 return false; | 1055 return false; |
| 1043 } | 1056 } |
| 1044 return true; | 1057 return true; |
| 1045 } | 1058 } |
| 1046 | 1059 |
| 1047 @Override | 1060 @Override |
| 1048 public void deallocate() { | 1061 public void deallocate() { |
| 1049 Log.d(TAG, "deallocate"); | 1062 Log.d(TAG, "deallocate"); |
| 1050 } | 1063 } |
| 1051 } | 1064 } |
| OLD | NEW |