pull/696/head
Mattia Iavarone 6 years ago
parent 7a3b7da6d2
commit 959516222b
  1. 2
      .github/workflows/emulator_script.sh
  2. 13
      cameraview/src/main/java/com/otaliastudios/cameraview/picture/Full1PictureRecorder.java
  3. 6
      cameraview/src/main/java/com/otaliastudios/cameraview/picture/Full2PictureRecorder.java
  4. 20
      cameraview/src/main/java/com/otaliastudios/cameraview/picture/FullPictureRecorder.java
  5. 9
      cameraview/src/main/java/com/otaliastudios/cameraview/picture/Snapshot1PictureRecorder.java
  6. 3
      cameraview/src/main/java/com/otaliastudios/cameraview/picture/Snapshot2PictureRecorder.java
  7. 6
      cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotGlPictureRecorder.java
  8. 20
      cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotPictureRecorder.java
  9. 5
      cameraview/src/main/java/com/otaliastudios/cameraview/video/Full1VideoRecorder.java
  10. 8
      cameraview/src/main/java/com/otaliastudios/cameraview/video/Full2VideoRecorder.java
  11. 2
      cameraview/src/main/java/com/otaliastudios/cameraview/video/FullVideoRecorder.java

@ -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 FullVideoRecorder:I SnapshotVideoRecorder:I CameraUtils:I MessageQueue:W WorkerHandler:I DeviceEncoders:I 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 CameraUtils:I MessageQueue:W WorkerHandler:I DeviceEncoders:I MPEG4Writer:I FullPictureRecorder:I SnapshotPictureRecorder:I *:E -v color &
./gradlew cameraview:connectedCheck

@ -2,7 +2,6 @@ package com.otaliastudios.cameraview.picture;
import android.hardware.Camera;
import com.otaliastudios.cameraview.CameraLogger;
import com.otaliastudios.cameraview.PictureResult;
import com.otaliastudios.cameraview.internal.utils.ExifHelper;
@ -16,11 +15,7 @@ import java.io.IOException;
/**
* A {@link PictureResult} that uses standard APIs.
*/
public class Full1PictureRecorder extends PictureRecorder {
private static final String TAG = Full1PictureRecorder.class.getSimpleName();
@SuppressWarnings("unused")
private static final CameraLogger LOG = CameraLogger.create(TAG);
public class Full1PictureRecorder extends FullPictureRecorder {
private Camera mCamera;
@ -39,10 +34,12 @@ public class Full1PictureRecorder extends PictureRecorder {
@Override
public void take() {
LOG.i("take() called.");
mCamera.takePicture(
new Camera.ShutterCallback() {
@Override
public void onShutter() {
LOG.i("take(): got onShutter callback.");
dispatchOnShutter(true);
}
},
@ -51,6 +48,7 @@ public class Full1PictureRecorder extends PictureRecorder {
new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, final Camera camera) {
LOG.i("take(): got picture callback.");
int exifRotation;
try {
ExifInterface exif = new ExifInterface(new ByteArrayInputStream(data));
@ -63,15 +61,18 @@ public class Full1PictureRecorder extends PictureRecorder {
}
mResult.data = data;
mResult.rotation = exifRotation;
LOG.i("take(): starting preview again. ", Thread.currentThread());
camera.startPreview(); // This is needed, read somewhere in the docs.
dispatchResult();
}
}
);
LOG.i("take() returned.");
}
@Override
protected void dispatchResult() {
LOG.i("dispatching result. Thread:", Thread.currentThread());
mCamera = null;
super.dispatchResult();
}

@ -9,7 +9,6 @@ import android.media.Image;
import android.media.ImageReader;
import android.os.Build;
import com.otaliastudios.cameraview.CameraLogger;
import com.otaliastudios.cameraview.PictureResult;
import com.otaliastudios.cameraview.controls.PictureFormat;
import com.otaliastudios.cameraview.engine.Camera2Engine;
@ -33,12 +32,9 @@ import androidx.exifinterface.media.ExifInterface;
* A {@link PictureResult} that uses standard APIs.
*/
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
public class Full2PictureRecorder extends PictureRecorder
public class Full2PictureRecorder extends FullPictureRecorder
implements ImageReader.OnImageAvailableListener {
private static final String TAG = Full2PictureRecorder.class.getSimpleName();
private static final CameraLogger LOG = CameraLogger.create(TAG);
private final ActionHolder mHolder;
private final Action mAction;
private final ImageReader mPictureReader;

@ -0,0 +1,20 @@
package com.otaliastudios.cameraview.picture;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.otaliastudios.cameraview.CameraLogger;
import com.otaliastudios.cameraview.PictureResult;
/**
* Helps with logging.
*/
public abstract class FullPictureRecorder extends PictureRecorder {
private static final String TAG = FullPictureRecorder.class.getSimpleName();
protected static final CameraLogger LOG = CameraLogger.create(TAG);
public FullPictureRecorder(@NonNull PictureResult.Stub stub,
@Nullable PictureResultListener listener) {
super(stub, listener);
}
}

@ -1,14 +1,11 @@
package com.otaliastudios.cameraview.picture;
import android.graphics.ImageFormat;
import android.graphics.Rect;
import android.graphics.YuvImage;
import android.hardware.Camera;
import com.otaliastudios.cameraview.CameraLogger;
import com.otaliastudios.cameraview.PictureResult;
import com.otaliastudios.cameraview.engine.Camera1Engine;
import com.otaliastudios.cameraview.engine.CameraEngine;
import com.otaliastudios.cameraview.engine.offset.Reference;
import com.otaliastudios.cameraview.internal.utils.CropHelper;
import com.otaliastudios.cameraview.internal.utils.RotationHelper;
@ -23,11 +20,7 @@ import java.io.ByteArrayOutputStream;
/**
* A {@link PictureRecorder} that uses standard APIs.
*/
public class Snapshot1PictureRecorder extends PictureRecorder {
private static final String TAG = Snapshot1PictureRecorder.class.getSimpleName();
@SuppressWarnings("unused")
private static final CameraLogger LOG = CameraLogger.create(TAG);
public class Snapshot1PictureRecorder extends SnapshotPictureRecorder {
private Camera1Engine mEngine1;
private Camera mCamera;

@ -10,7 +10,6 @@ import android.os.Build;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import com.otaliastudios.cameraview.CameraLogger;
import com.otaliastudios.cameraview.PictureResult;
import com.otaliastudios.cameraview.engine.Camera2Engine;
import com.otaliastudios.cameraview.engine.action.Action;
@ -44,8 +43,6 @@ import com.otaliastudios.cameraview.size.AspectRatio;
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
public class Snapshot2PictureRecorder extends SnapshotGlPictureRecorder {
private final static String TAG = Snapshot2PictureRecorder.class.getSimpleName();
private final static CameraLogger LOG = CameraLogger.create(TAG);
private final static long LOCK_TIMEOUT = 2500;
private class FlashAction extends BaseAction {

@ -9,7 +9,6 @@ import android.opengl.EGLContext;
import android.opengl.Matrix;
import android.os.Build;
import com.otaliastudios.cameraview.CameraLogger;
import com.otaliastudios.cameraview.PictureResult;
import com.otaliastudios.cameraview.internal.egl.EglBaseSurface;
import com.otaliastudios.cameraview.overlay.Overlay;
@ -54,10 +53,7 @@ import android.view.Surface;
* 2. We have overlays to be drawn - we don't want to draw them on the preview surface,
* not even for a frame.
*/
public class SnapshotGlPictureRecorder extends PictureRecorder {
private static final String TAG = SnapshotGlPictureRecorder.class.getSimpleName();
private static final CameraLogger LOG = CameraLogger.create(TAG);
public class SnapshotGlPictureRecorder extends SnapshotPictureRecorder {
private CameraEngine mEngine;
private GlCameraPreview mPreview;

@ -0,0 +1,20 @@
package com.otaliastudios.cameraview.picture;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.otaliastudios.cameraview.CameraLogger;
import com.otaliastudios.cameraview.PictureResult;
/**
* Helps with logging.
*/
public abstract class SnapshotPictureRecorder extends PictureRecorder {
private static final String TAG = SnapshotPictureRecorder.class.getSimpleName();
protected static final CameraLogger LOG = CameraLogger.create(TAG);
public SnapshotPictureRecorder(@NonNull PictureResult.Stub stub,
@Nullable PictureResultListener listener) {
super(stub, listener);
}
}

@ -3,9 +3,7 @@ package com.otaliastudios.cameraview.video;
import android.hardware.Camera;
import android.media.CamcorderProfile;
import android.media.MediaRecorder;
import android.util.Log;
import com.otaliastudios.cameraview.CameraLogger;
import com.otaliastudios.cameraview.VideoResult;
import com.otaliastudios.cameraview.engine.Camera1Engine;
import com.otaliastudios.cameraview.internal.utils.CamcorderProfiles;
@ -19,9 +17,6 @@ import androidx.annotation.NonNull;
*/
public class Full1VideoRecorder extends FullVideoRecorder {
private static final String TAG = Full1VideoRecorder.class.getSimpleName();
private static final CameraLogger LOG = CameraLogger.create(TAG);
private final Camera1Engine mEngine;
private final Camera mCamera;
private final int mCameraId;

@ -1,19 +1,14 @@
package com.otaliastudios.cameraview.video;
import android.annotation.SuppressLint;
import android.hardware.camera2.CaptureRequest;
import android.hardware.camera2.CaptureResult;
import android.hardware.camera2.TotalCaptureResult;
import android.media.CamcorderProfile;
import android.media.MediaRecorder;
import android.os.Build;
import android.view.Surface;
import com.otaliastudios.cameraview.CameraLogger;
import com.otaliastudios.cameraview.VideoResult;
import com.otaliastudios.cameraview.engine.Camera2Engine;
import com.otaliastudios.cameraview.engine.action.Action;
import com.otaliastudios.cameraview.engine.action.ActionCallback;
import com.otaliastudios.cameraview.engine.action.ActionHolder;
import com.otaliastudios.cameraview.engine.action.BaseAction;
import com.otaliastudios.cameraview.engine.action.CompletionCallback;
@ -31,9 +26,6 @@ import androidx.annotation.RequiresApi;
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
public class Full2VideoRecorder extends FullVideoRecorder {
private static final String TAG = Full2VideoRecorder.class.getSimpleName();
private static final CameraLogger LOG = CameraLogger.create(TAG);
private ActionHolder mHolder;
private final String mCameraId;
private Surface mInputSurface;

@ -30,7 +30,7 @@ import androidx.annotation.Nullable;
public abstract class FullVideoRecorder extends VideoRecorder {
private static final String TAG = FullVideoRecorder.class.getSimpleName();
private static final CameraLogger LOG = CameraLogger.create(TAG);
protected static final CameraLogger LOG = CameraLogger.create(TAG);
@SuppressWarnings("WeakerAccess") protected MediaRecorder mMediaRecorder;
private CamcorderProfile mProfile;

Loading…
Cancel
Save