From d2446c2a3ff236d8b119ac50642120ec8e3a1ee6 Mon Sep 17 00:00:00 2001 From: Mattia Iavarone Date: Wed, 11 Dec 2019 18:03:29 +0100 Subject: [PATCH] Test --- .github/workflows/emulator_script.sh | 2 +- .../cameraview/engine/CameraIntegrationTest.java | 5 +++-- .../com/otaliastudios/cameraview/engine/Camera2Engine.java | 6 ++++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/emulator_script.sh b/.github/workflows/emulator_script.sh index 47e0f4b1..27592975 100755 --- a/.github/workflows/emulator_script.sh +++ b/.github/workflows/emulator_script.sh @@ -1,4 +1,4 @@ #!/usr/bin/env bash adb logcat -c -adb logcat CameraOrchestrator:I CameraEngine:I CameraView:I CameraCallbacks:I CameraIntegrationTest:I MediaEncoderEngine:I MediaEncoder:I AudioMediaEncoder:I VideoMediaEncoder:I TextureMediaEncoder:I VideoRecorder:I SnapshotVideoRecorder:I MessageQueue:W MPEG4Writer:I *:E -v color & +adb logcat CameraOrchestrator:I CameraEngine:I CameraView:I CameraCallbacks:I CameraIntegrationTest:I MediaEncoderEngine:I MediaEncoder:I AudioMediaEncoder:I VideoMediaEncoder:I TextureMediaEncoder:I VideoRecorder:I FullVideoRecorder:I SnapshotVideoRecorder:I MessageQueue:W MPEG4Writer:I *:E -v color & ./gradlew cameraview:connectedCheck \ No newline at end of file diff --git a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/CameraIntegrationTest.java b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/CameraIntegrationTest.java index b6e9229e..6cd53d8f 100644 --- a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/CameraIntegrationTest.java +++ b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/engine/CameraIntegrationTest.java @@ -988,7 +988,8 @@ public abstract class CameraIntegrationTest extends Base } @SuppressWarnings("SameParameterValue") - private static long estimateVideoBytes(long bitRate, long millis) { - return Math.round(bitRate * (millis / 1000D) / 8D); + private static long estimateVideoBytes(long videoBitRate, long millis) { + // 1.3F accounts for audio. + return Math.round((videoBitRate * 1.3F) * (millis / 1000D) / 8D); } } 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 f0f2a5f4..c68145c4 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java @@ -237,11 +237,13 @@ public class Camera2Engine extends CameraEngine implements ImageReader.OnImageAv * it should be set before calling this method, for example by calling * {@link #createRepeatingRequestBuilder(int)}. */ + @EngineThread @SuppressWarnings("WeakerAccess") protected void applyRepeatingRequestBuilder() { applyRepeatingRequestBuilder(true, CameraException.REASON_DISCONNECTED); } + @EngineThread private void applyRepeatingRequestBuilder(boolean checkStarted, int errorReason) { if ((getState() == CameraState.PREVIEW && !isChangingState()) || !checkStarted) { try { @@ -1574,15 +1576,19 @@ public class Camera2Engine extends CameraEngine implements ImageReader.OnImageAv return mRepeatingRequestBuilder; } + @EngineThread @Override public void applyBuilder(@NonNull Action source) { // NOTE: Should never be called on a non-engine thread! + // Non-engine threads are not protected by the uncaught exception handler + // and can make the process crash. applyRepeatingRequestBuilder(); } @Override public void applyBuilder(@NonNull Action source, @NonNull CaptureRequest.Builder builder) throws CameraAccessException { + // Risky - would be better to ensure that thread is the engine one. if (getState() == CameraState.PREVIEW && !isChangingState()) { mSession.capture(builder.build(), mRepeatingRequestCallback, null); }