From 6aa2d3a4893264c1aa98be315be9264b5c56f384 Mon Sep 17 00:00:00 2001 From: Philippe Banwarth Date: Thu, 7 Jan 2021 17:19:44 +0100 Subject: [PATCH 1/3] Log errors when writing the image to a file (#960) Co-authored-by: Mattia Iavarone --- .../src/main/java/com/otaliastudios/cameraview/CameraUtils.java | 1 + 1 file changed, 1 insertion(+) diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraUtils.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraUtils.java index 17e06cf2..bbfdf5fb 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraUtils.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraUtils.java @@ -94,6 +94,7 @@ public class CameraUtils { stream.flush(); return file; } catch (IOException e) { + LOG.e("writeToFile:", "could not write file.", e); return null; } } From a9fcd6506ec00992892b3eb18c6a985fa25c9a69 Mon Sep 17 00:00:00 2001 From: Billy Sutomo Date: Thu, 7 Jan 2021 23:21:06 +0700 Subject: [PATCH 2/3] Update frame-processing.md (#941) add parentheses and semi colon to cameraView.addFrameProcessor code example Co-authored-by: Mattia Iavarone --- docs/_docs/frame-processing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_docs/frame-processing.md b/docs/_docs/frame-processing.md index efef2694..16412493 100644 --- a/docs/_docs/frame-processing.md +++ b/docs/_docs/frame-processing.md @@ -29,7 +29,7 @@ cameraView.addFrameProcessor(new FrameProcessor() { // Process android.media.Image... } } -} +}); ``` For your convenience, the `FrameProcessor` method is run in a background thread so you can do your job From 0f6ab20c3e30c72f61056e34485c1b82f022766a Mon Sep 17 00:00:00 2001 From: Mattia Iavarone Date: Thu, 7 Jan 2021 17:28:59 +0100 Subject: [PATCH 3/3] Make filterFrameRateRanges protected (#1026) --- .../cameraview/engine/Camera2Engine.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java index 0ee02c13..041dcc44 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java @@ -19,8 +19,6 @@ import android.location.Location; import android.media.Image; import android.media.ImageReader; import android.os.Build; -import android.os.Handler; -import android.os.Looper; import android.util.Pair; import android.util.Range; import android.util.Rational; @@ -79,7 +77,6 @@ import java.util.Comparator; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.CopyOnWriteArrayList; -import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutionException; @RequiresApi(Build.VERSION_CODES.LOLLIPOP) @@ -1382,10 +1379,10 @@ public class Camera2Engine extends CameraBaseEngine implements Range[] fpsRanges = readCharacteristic( CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES, new Range[]{}); - sortRanges(fpsRanges); + sortFrameRateRanges(fpsRanges); if (mPreviewFrameRate == 0F) { // 0F is a special value. Fallback to a reasonable default. - for (Range fpsRange : filterRanges(fpsRanges)) { + for (Range fpsRange : filterFrameRateRanges(fpsRanges)) { if (fpsRange.contains(30) || fpsRange.contains(24)) { builder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, fpsRange); return true; @@ -1397,7 +1394,7 @@ public class Camera2Engine extends CameraBaseEngine implements mCameraOptions.getPreviewFrameRateMaxValue()); mPreviewFrameRate = Math.max(mPreviewFrameRate, mCameraOptions.getPreviewFrameRateMinValue()); - for (Range fpsRange : filterRanges(fpsRanges)) { + for (Range fpsRange : filterFrameRateRanges(fpsRanges)) { if (fpsRange.contains(Math.round(mPreviewFrameRate))) { builder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, fpsRange); return true; @@ -1408,7 +1405,7 @@ public class Camera2Engine extends CameraBaseEngine implements return false; } - private void sortRanges(Range[] fpsRanges) { + private void sortFrameRateRanges(@NonNull Range[] fpsRanges) { final boolean ascending = getPreviewFrameRateExact() && mPreviewFrameRate != 0; Arrays.sort(fpsRanges, new Comparator>() { @Override @@ -1424,7 +1421,8 @@ public class Camera2Engine extends CameraBaseEngine implements }); } - private List> filterRanges(Range[] fpsRanges) { + @NonNull + protected List> filterFrameRateRanges(@NonNull Range[] fpsRanges) { List> results = new ArrayList<>(); int min = Math.round(mCameraOptions.getPreviewFrameRateMinValue()); int max = Math.round(mCameraOptions.getPreviewFrameRateMaxValue());