summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Lee <jasl@google.com>2020-01-22 11:38:59 +0900
committerJason Lee <jasl@google.com>2020-01-22 12:28:13 +0900
commitd148d3a70242fc8d2975e83946f7b8b2927ab3e7 (patch)
treeb2026295bf0d5aeb5549b44142ad616c2d2d957a
parent9cbd63b0440741024fe31bf62d13f062102de059 (diff)
downloadDevCamera-d148d3a70242fc8d2975e83946f7b8b2927ab3e7.tar.gz
Add null checks when querying CaptureResultr_aml_301500702android-mainline-12.0.0_r55android-mainline-12.0.0_r112android-mainline-11.0.0_r9android-mainline-11.0.0_r8android-mainline-11.0.0_r7android-mainline-11.0.0_r6android-mainline-11.0.0_r5android-mainline-11.0.0_r45android-mainline-11.0.0_r44android-mainline-11.0.0_r43android-mainline-11.0.0_r42android-mainline-11.0.0_r41android-mainline-11.0.0_r40android-mainline-11.0.0_r4android-mainline-11.0.0_r39android-mainline-11.0.0_r38android-mainline-11.0.0_r37android-mainline-11.0.0_r36android-mainline-11.0.0_r35android-mainline-11.0.0_r34android-mainline-11.0.0_r33android-mainline-11.0.0_r32android-mainline-11.0.0_r31android-mainline-11.0.0_r30android-mainline-11.0.0_r3android-mainline-11.0.0_r29android-mainline-11.0.0_r28android-mainline-11.0.0_r27android-mainline-11.0.0_r26android-mainline-11.0.0_r25android-mainline-11.0.0_r24android-mainline-11.0.0_r23android-mainline-11.0.0_r22android-mainline-11.0.0_r21android-mainline-11.0.0_r20android-mainline-11.0.0_r2android-mainline-11.0.0_r19android-mainline-11.0.0_r18android-mainline-11.0.0_r17android-mainline-11.0.0_r16android-mainline-11.0.0_r15android-mainline-11.0.0_r14android-mainline-11.0.0_r13android-mainline-11.0.0_r12android-mainline-11.0.0_r10android-mainline-11.0.0_r1android-11.0.0_r9android-11.0.0_r8android-11.0.0_r7android-11.0.0_r48android-11.0.0_r47android-11.0.0_r46android-11.0.0_r45android-11.0.0_r44android-11.0.0_r43android-11.0.0_r42android-11.0.0_r41android-11.0.0_r40android-11.0.0_r39android-11.0.0_r38android-11.0.0_r37android-11.0.0_r36android-11.0.0_r35android-11.0.0_r34android-11.0.0_r33android-11.0.0_r32android-11.0.0_r31android-11.0.0_r30android-11.0.0_r29android-11.0.0_r28android-11.0.0_r27android-11.0.0_r26android-11.0.0_r24android-11.0.0_r23android-11.0.0_r22android-11.0.0_r21android-11.0.0_r20android-11.0.0_r19android-11.0.0_r18android-11.0.0_r16android-11.0.0_r15android-11.0.0_r14android-11.0.0_r13android-11.0.0_r12android-11.0.0_r11android-11.0.0_r10aml_tz2_305400500aml_tz2_305400300aml_tz2_305400100aml_tz2_304500300aml_tz2_303900110aml_tz2_303900102aml_tz2_303800002aml_tz2_303800001aml_tz2_303200001android12-mainline-tzdata2-releaseandroid11-qpr3-s1-releaseandroid11-qpr3-releaseandroid11-qpr2-releaseandroid11-qpr1-s2-releaseandroid11-qpr1-s1-releaseandroid11-qpr1-releaseandroid11-qpr1-d-s1-releaseandroid11-qpr1-d-releaseandroid11-qpr1-c-releaseandroid11-mainline-tethering-releaseandroid11-mainline-sparse-2021-jan-releaseandroid11-mainline-sparse-2020-dec-releaseandroid11-mainline-releaseandroid11-mainline-permission-releaseandroid11-mainline-os-statsd-releaseandroid11-mainline-networkstack-releaseandroid11-mainline-media-swcodec-releaseandroid11-mainline-media-releaseandroid11-mainline-extservices-releaseandroid11-mainline-documentsui-releaseandroid11-mainline-conscrypt-releaseandroid11-mainline-cellbroadcast-releaseandroid11-mainline-captiveportallogin-releaseandroid11-devandroid11-d2-releaseandroid11-d1-s7-releaseandroid11-d1-s6-releaseandroid11-d1-s5-releaseandroid11-d1-s1-releaseandroid11-d1-releaseandroid11-d1-b-releaseaml_tz2_305400100
Bug: 148111838 Test: Ran on maran2 and flame Change-Id: I19b5a0300311a73c10696e5460ded3b4a493e56b
-rw-r--r--src/com/android/devcamera/Api2Camera.java34
1 files changed, 23 insertions, 11 deletions
diff --git a/src/com/android/devcamera/Api2Camera.java b/src/com/android/devcamera/Api2Camera.java
index 40b9be6..0ebdc23 100644
--- a/src/com/android/devcamera/Api2Camera.java
+++ b/src/com/android/devcamera/Api2Camera.java
@@ -770,8 +770,9 @@ public class Api2Camera implements CameraInterface, SurfaceTexture.OnFrameAvaila
private void publishFrameData(TotalCaptureResult result) {
// Faces.
final Face[] faces = result.get(CaptureResult.STATISTICS_FACES);
- NormalizedFace[] newFaces = new NormalizedFace[faces.length];
- if (faces.length > 0) {
+ NormalizedFace[] newFaces = new NormalizedFace[0];
+ if (faces != null && faces.length > 0) {
+ newFaces = new NormalizedFace[faces.length];
int offX = mCameraInfoCache.faceOffsetX();
int offY = mCameraInfoCache.faceOffsetY();
int dX = mCameraInfoCache.activeAreaWidth() - 2 * offX;
@@ -800,22 +801,33 @@ public class Api2Camera implements CameraInterface, SurfaceTexture.OnFrameAvaila
}
// Normalized lens and exposure coordinates.
- double rm = Math.log10(result.get(CaptureResult.SENSOR_EXPOSURE_TIME));
- float normExposure = (float) ((rm - SHORT_LOG_EXPOSURE) / (LONG_LOG_EXPOSURE - SHORT_LOG_EXPOSURE));
- float normLensPos = (mCameraInfoCache.getDiopterHi() - result.get(CaptureResult.LENS_FOCUS_DISTANCE)) / (mCameraInfoCache.getDiopterHi() - mCameraInfoCache.getDiopterLow());
+ Long exposureTime = result.get(CaptureResult.SENSOR_EXPOSURE_TIME);
+ float normExposure = 0.0f;
+ if (exposureTime != null) {
+ normExposure = (float) ((Math.log10(exposureTime) - SHORT_LOG_EXPOSURE) / (LONG_LOG_EXPOSURE - SHORT_LOG_EXPOSURE));
+ }
+ Float focusDistance = result.get(CaptureResult.LENS_FOCUS_DISTANCE);
+ float normLensPos = 0.0f;
+ if (focusDistance != null) {
+ normLensPos = (mCameraInfoCache.getDiopterHi() - focusDistance) / (mCameraInfoCache.getDiopterHi() - mCameraInfoCache.getDiopterLow());
+ }
mLastIso = result.get(CaptureResult.SENSOR_SENSITIVITY);
// Update frame arrival history.
- mFrameTimes.add(result.get(CaptureResult.SENSOR_TIMESTAMP));
- if (mFrameTimes.size() > FPS_CALC_LOOKBACK) {
- mFrameTimes.removeFirst();
+ Long sensorTimestamp = result.get(CaptureResult.SENSOR_TIMESTAMP);
+ if (sensorTimestamp != null) {
+ mFrameTimes.add(sensorTimestamp);
+ if (mFrameTimes.size() > FPS_CALC_LOOKBACK) {
+ mFrameTimes.removeFirst();
+ }
}
// Frame drop detector
{
- float frameDuration = result.get(CaptureResult.SENSOR_FRAME_DURATION);
- if (mFrameTimes.size() > 1) {
- long dt = result.get(CaptureResult.SENSOR_TIMESTAMP) - mFrameTimes.get(mFrameTimes.size()-2);
+ Long frameDurationLong = result.get(CaptureResult.SENSOR_FRAME_DURATION);
+ if (frameDurationLong != null && sensorTimestamp != null && mFrameTimes.size() > 1) {
+ float frameDuration = frameDurationLong;
+ long dt = sensorTimestamp - mFrameTimes.get(mFrameTimes.size()-2);
if (dt > 3 * frameDuration / 2 && LOG_DROPPED_FRAMES) {
float drops = (dt * 1f / frameDuration) - 1f;
Log.e(TAG, String.format("dropped %.2f frames", drops));