Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Unified Diff: webrtc/api/android/java/src/org/webrtc/Camera2Session.java

Issue 2331343010: Events refactor in Android session based capturing. (Closed)
Patch Set: Remove CameraSession parameter from onCameraOpening. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/api/android/java/src/org/webrtc/Camera2Session.java
diff --git a/webrtc/api/android/java/src/org/webrtc/Camera2Session.java b/webrtc/api/android/java/src/org/webrtc/Camera2Session.java
index a10ce8f5389422d5d2434465db5529130e2defb8..213e41d88e7421e11d1a8289afa02cd35b827e61 100644
--- a/webrtc/api/android/java/src/org/webrtc/Camera2Session.java
+++ b/webrtc/api/android/java/src/org/webrtc/Camera2Session.java
@@ -46,11 +46,10 @@ public class Camera2Session implements CameraSession {
private static enum SessionState { RUNNING, STOPPED };
private final Handler cameraThreadHandler;
- private final CameraManager cameraManager;
private final CreateSessionCallback callback;
- private final CameraVideoCapturer.CameraEventsHandler eventsHandler;
+ private final Events events;
private final Context applicationContext;
- private final CameraVideoCapturer.CapturerObserver capturerObserver;
+ private final CameraManager cameraManager;
private final SurfaceTextureHelper surfaceTextureHelper;
private final String cameraId;
private final int width;
@@ -70,7 +69,6 @@ public class Camera2Session implements CameraSession {
// Initialized when capture session is created
private CameraCaptureSession captureSession;
- private CameraVideoCapturer.CameraStatistics cameraStatistics;
// State
private SessionState state = SessionState.RUNNING;
@@ -134,7 +132,7 @@ public class Camera2Session implements CameraSession {
checkIsOnCameraThread();
Logging.d(TAG, "Camera device closed.");
- eventsHandler.onCameraClosed();
+ events.onCameraClosed(Camera2Session.this);
}
}
@@ -191,7 +189,6 @@ public class Camera2Session implements CameraSession {
}
if (!firstFrameReported) {
- eventsHandler.onFirstFrameAvailable();
firstFrameReported = true;
final int startTimeMs =
(int) TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - constructionTimeNs);
@@ -210,14 +207,10 @@ public class Camera2Session implements CameraSession {
transformMatrix = RendererCommon.rotateTextureMatrix(
transformMatrix, -cameraOrientation);
- cameraStatistics.addFrame();
- capturerObserver.onTextureFrameCaptured(captureFormat.width, captureFormat.height,
- oesTextureId, transformMatrix, rotation, timestampNs);
+ events.onTextureFrameCaptured(Camera2Session.this, captureFormat.width,
+ captureFormat.height, oesTextureId, transformMatrix, rotation, timestampNs);
}
});
- capturerObserver.onCapturerStarted(true /* success */);
- cameraStatistics = new CameraVideoCapturer.CameraStatistics(
- surfaceTextureHelper, eventsHandler);
Logging.d(TAG, "Camera device successfully started.");
callback.onDone(Camera2Session.this);
}
@@ -232,23 +225,20 @@ public class Camera2Session implements CameraSession {
}
public static void create(
- CameraManager cameraManager, CreateSessionCallback callback,
- CameraVideoCapturer.CameraEventsHandler eventsHandler, Context applicationContext,
- CameraVideoCapturer.CapturerObserver capturerObserver,
+ CreateSessionCallback callback, Events events,
+ Context applicationContext, CameraManager cameraManager,
SurfaceTextureHelper surfaceTextureHelper,
String cameraId, int width, int height, int framerate) {
new Camera2Session(
- cameraManager, callback,
- eventsHandler, applicationContext,
- capturerObserver,
+ callback, events,
+ applicationContext, cameraManager,
surfaceTextureHelper,
cameraId, width, height, framerate);
}
private Camera2Session(
- CameraManager cameraManager, CreateSessionCallback callback,
- CameraVideoCapturer.CameraEventsHandler eventsHandler, Context applicationContext,
- CameraVideoCapturer.CapturerObserver capturerObserver,
+ CreateSessionCallback callback, Events events,
+ Context applicationContext, CameraManager cameraManager,
SurfaceTextureHelper surfaceTextureHelper,
String cameraId, int width, int height, int framerate) {
Logging.d(TAG, "Create new camera2 session on camera " + cameraId);
@@ -256,11 +246,10 @@ public class Camera2Session implements CameraSession {
constructionTimeNs = System.nanoTime();
this.cameraThreadHandler = new Handler();
- this.cameraManager = cameraManager;
this.callback = callback;
- this.eventsHandler = eventsHandler;
+ this.events = events;
this.applicationContext = applicationContext;
- this.capturerObserver = capturerObserver;
+ this.cameraManager = cameraManager;
this.surfaceTextureHelper = surfaceTextureHelper;
this.cameraId = cameraId;
this.width = width;
@@ -316,7 +305,7 @@ public class Camera2Session implements CameraSession {
checkIsOnCameraThread();
Logging.d(TAG, "Opening camera " + cameraId);
- eventsHandler.onCameraOpening(cameraId);
+ events.onCameraOpening();
try {
cameraManager.openCamera(cameraId, new CameraStateCallback(), cameraThreadHandler);
@@ -332,7 +321,6 @@ public class Camera2Session implements CameraSession {
if (Thread.currentThread() == cameraThreadHandler.getLooper().getThread()) {
if (state != SessionState.STOPPED) {
state = SessionState.STOPPED;
- capturerObserver.onCapturerStopped();
// Post the stopInternal to return earlier.
cameraThreadHandler.post(new Runnable() {
@Override
@@ -352,7 +340,6 @@ public class Camera2Session implements CameraSession {
public void run() {
if (state != SessionState.STOPPED) {
state = SessionState.STOPPED;
- capturerObserver.onCapturerStopped();
stopLatch.countDown();
stopInternal();
final int stopTimeMs =
@@ -371,14 +358,19 @@ public class Camera2Session implements CameraSession {
checkIsOnCameraThread();
surfaceTextureHelper.stopListening();
- cameraStatistics.release();
- captureSession.close();
- captureSession = null;
- surface.release();
- surface = null;
- cameraDevice.close();
- cameraDevice = null;
+ if (captureSession != null) {
+ captureSession.close();
+ captureSession = null;
+ }
+ if (surface != null) {
+ surface.release();
+ surface = null;
+ }
+ if (cameraDevice != null) {
+ cameraDevice.close();
+ cameraDevice = null;
+ }
Logging.d(TAG, "Stop done");
}
@@ -387,17 +379,13 @@ public class Camera2Session implements CameraSession {
checkIsOnCameraThread();
Logging.e(TAG, "Error: " + error);
- if (captureSession == null) {
- if (cameraDevice != null) {
- cameraDevice.close();
- cameraDevice = null;
- }
-
- state = SessionState.STOPPED;
+ final boolean startFailure = (captureSession == null);
+ state = SessionState.STOPPED;
+ stopInternal();
+ if (startFailure) {
callback.onFailure(error);
- capturerObserver.onCapturerStarted(false /* success */);
} else {
- eventsHandler.onCameraError(error);
+ events.onCameraError(this, error);
}
}

Powered by Google App Engine
This is Rietveld 408576698