Add onCameraDisconnected camera event.
BUG=webrtc:6334 Review-Url: https://codereview.webrtc.org/2381343002 Cr-Commit-Position: refs/heads/master@{#14540}
This commit is contained in:
parent
11d37ba862
commit
f156bddbc6
@ -202,7 +202,11 @@ public class Camera1Session implements CameraSession {
|
||||
Logging.e(TAG, errorMessage);
|
||||
state = SessionState.STOPPED;
|
||||
stopInternal();
|
||||
events.onCameraError(Camera1Session.this, errorMessage);
|
||||
if (error == android.hardware.Camera.CAMERA_ERROR_EVICTED) {
|
||||
events.onCameraDisconnected(Camera1Session.this);
|
||||
} else {
|
||||
events.onCameraError(Camera1Session.this, errorMessage);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@ -98,7 +98,14 @@ public class Camera2Session implements CameraSession {
|
||||
@Override
|
||||
public void onDisconnected(CameraDevice camera) {
|
||||
checkIsOnCameraThread();
|
||||
reportError("Camera disconnected.");
|
||||
final boolean startFailure = (captureSession == null);
|
||||
state = SessionState.STOPPED;
|
||||
stopInternal();
|
||||
if (startFailure) {
|
||||
callback.onFailure("Camera disconnected / evicted.");
|
||||
} else {
|
||||
events.onCameraDisconnected(Camera2Session.this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -118,6 +118,19 @@ public abstract class CameraCapturer implements CameraVideoCapturer {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCameraDisconnected(CameraSession session) {
|
||||
checkIsOnCameraThread();
|
||||
synchronized (stateLock) {
|
||||
if (session != currentSession) {
|
||||
Logging.w(TAG, "onCameraDisconnected from another session.");
|
||||
return;
|
||||
}
|
||||
eventsHandler.onCameraDisconnected();
|
||||
stopCapture();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCameraClosed(CameraSession session) {
|
||||
checkIsOnCameraThread();
|
||||
@ -204,6 +217,8 @@ public abstract class CameraCapturer implements CameraVideoCapturer {
|
||||
@Override
|
||||
public void onCameraError(String errorDescription) {}
|
||||
@Override
|
||||
public void onCameraDisconnected() {}
|
||||
@Override
|
||||
public void onCameraFreezed(String errorDescription) {}
|
||||
@Override
|
||||
public void onCameraOpening(String cameraName) {}
|
||||
|
||||
@ -21,6 +21,7 @@ public interface CameraSession {
|
||||
public interface Events {
|
||||
void onCameraOpening();
|
||||
void onCameraError(CameraSession session, String error);
|
||||
void onCameraDisconnected(CameraSession session);
|
||||
void onCameraClosed(CameraSession session);
|
||||
void onByteBufferFrameCaptured(
|
||||
CameraSession session, byte[] data, int width, int height, int rotation, long timestamp);
|
||||
|
||||
@ -25,6 +25,9 @@ public interface CameraVideoCapturer extends VideoCapturer {
|
||||
// or any camera exception happens on camera thread.
|
||||
void onCameraError(String errorDescription);
|
||||
|
||||
// Called when camera is disconnected.
|
||||
void onCameraDisconnected();
|
||||
|
||||
// Invoked when camera stops receiving frames.
|
||||
void onCameraFreezed(String errorDescription);
|
||||
|
||||
|
||||
@ -95,7 +95,11 @@ public class VideoCapturerAndroid
|
||||
}
|
||||
Logging.e(TAG, errorMessage);
|
||||
if (eventsHandler != null) {
|
||||
eventsHandler.onCameraError(errorMessage);
|
||||
if (error == android.hardware.Camera.CAMERA_ERROR_EVICTED) {
|
||||
eventsHandler.onCameraDisconnected();
|
||||
} else {
|
||||
eventsHandler.onCameraError(errorMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -195,6 +195,9 @@ class CameraVideoCapturerTestFixtures {
|
||||
cameraClosed = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCameraDisconnected() {}
|
||||
|
||||
@Override
|
||||
public void onCameraFreezed(String errorDescription) {
|
||||
synchronized (onCameraFreezedLock) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user