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,8 +202,12 @@ public class Camera1Session implements CameraSession {
|
|||||||
Logging.e(TAG, errorMessage);
|
Logging.e(TAG, errorMessage);
|
||||||
state = SessionState.STOPPED;
|
state = SessionState.STOPPED;
|
||||||
stopInternal();
|
stopInternal();
|
||||||
|
if (error == android.hardware.Camera.CAMERA_ERROR_EVICTED) {
|
||||||
|
events.onCameraDisconnected(Camera1Session.this);
|
||||||
|
} else {
|
||||||
events.onCameraError(Camera1Session.this, errorMessage);
|
events.onCameraError(Camera1Session.this, errorMessage);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (captureToTexture) {
|
if (captureToTexture) {
|
||||||
|
|||||||
@ -98,7 +98,14 @@ public class Camera2Session implements CameraSession {
|
|||||||
@Override
|
@Override
|
||||||
public void onDisconnected(CameraDevice camera) {
|
public void onDisconnected(CameraDevice camera) {
|
||||||
checkIsOnCameraThread();
|
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
|
@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
|
@Override
|
||||||
public void onCameraClosed(CameraSession session) {
|
public void onCameraClosed(CameraSession session) {
|
||||||
checkIsOnCameraThread();
|
checkIsOnCameraThread();
|
||||||
@ -204,6 +217,8 @@ public abstract class CameraCapturer implements CameraVideoCapturer {
|
|||||||
@Override
|
@Override
|
||||||
public void onCameraError(String errorDescription) {}
|
public void onCameraError(String errorDescription) {}
|
||||||
@Override
|
@Override
|
||||||
|
public void onCameraDisconnected() {}
|
||||||
|
@Override
|
||||||
public void onCameraFreezed(String errorDescription) {}
|
public void onCameraFreezed(String errorDescription) {}
|
||||||
@Override
|
@Override
|
||||||
public void onCameraOpening(String cameraName) {}
|
public void onCameraOpening(String cameraName) {}
|
||||||
|
|||||||
@ -21,6 +21,7 @@ public interface CameraSession {
|
|||||||
public interface Events {
|
public interface Events {
|
||||||
void onCameraOpening();
|
void onCameraOpening();
|
||||||
void onCameraError(CameraSession session, String error);
|
void onCameraError(CameraSession session, String error);
|
||||||
|
void onCameraDisconnected(CameraSession session);
|
||||||
void onCameraClosed(CameraSession session);
|
void onCameraClosed(CameraSession session);
|
||||||
void onByteBufferFrameCaptured(
|
void onByteBufferFrameCaptured(
|
||||||
CameraSession session, byte[] data, int width, int height, int rotation, long timestamp);
|
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.
|
// or any camera exception happens on camera thread.
|
||||||
void onCameraError(String errorDescription);
|
void onCameraError(String errorDescription);
|
||||||
|
|
||||||
|
// Called when camera is disconnected.
|
||||||
|
void onCameraDisconnected();
|
||||||
|
|
||||||
// Invoked when camera stops receiving frames.
|
// Invoked when camera stops receiving frames.
|
||||||
void onCameraFreezed(String errorDescription);
|
void onCameraFreezed(String errorDescription);
|
||||||
|
|
||||||
|
|||||||
@ -95,9 +95,13 @@ public class VideoCapturerAndroid
|
|||||||
}
|
}
|
||||||
Logging.e(TAG, errorMessage);
|
Logging.e(TAG, errorMessage);
|
||||||
if (eventsHandler != null) {
|
if (eventsHandler != null) {
|
||||||
|
if (error == android.hardware.Camera.CAMERA_ERROR_EVICTED) {
|
||||||
|
eventsHandler.onCameraDisconnected();
|
||||||
|
} else {
|
||||||
eventsHandler.onCameraError(errorMessage);
|
eventsHandler.onCameraError(errorMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public static VideoCapturerAndroid create(String name, CameraEventsHandler eventsHandler) {
|
public static VideoCapturerAndroid create(String name, CameraEventsHandler eventsHandler) {
|
||||||
|
|||||||
@ -195,6 +195,9 @@ class CameraVideoCapturerTestFixtures {
|
|||||||
cameraClosed = true;
|
cameraClosed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCameraDisconnected() {}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCameraFreezed(String errorDescription) {
|
public void onCameraFreezed(String errorDescription) {
|
||||||
synchronized (onCameraFreezedLock) {
|
synchronized (onCameraFreezedLock) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user