Index: webrtc/sdk/android/src/java/org/webrtc/CameraCapturer.java |
diff --git a/webrtc/sdk/android/src/java/org/webrtc/CameraCapturer.java b/webrtc/sdk/android/src/java/org/webrtc/CameraCapturer.java |
index 859b7f745331841016ff78ba52b34a27b1d4af09..c3e8daab17cd857f8f5a968f0fdc86ab94c20e63 100644 |
--- a/webrtc/sdk/android/src/java/org/webrtc/CameraCapturer.java |
+++ b/webrtc/sdk/android/src/java/org/webrtc/CameraCapturer.java |
@@ -11,7 +11,6 @@ |
package org.webrtc; |
import android.content.Context; |
-import android.media.MediaRecorder; |
import android.os.Handler; |
import android.os.Looper; |
import java.util.Arrays; |
@@ -24,13 +23,6 @@ |
IN_PROGRESS, // Waiting for new switched capture session to start. |
} |
- enum MediaRecorderState { |
- IDLE, // No media recording update (add or remove) requested. |
- IDLE_TO_ACTIVE, // Waiting for new capture session with added MediaRecorder surface to start. |
- ACTIVE_TO_IDLE, // Waiting for new capture session with removed MediaRecorder surface to start. |
- ACTIVE, // MediaRecorder was successfully added to camera pipeline. |
- } |
- |
private static final String TAG = "CameraCapturer"; |
private final static int MAX_OPEN_CAMERA_ATTEMPTS = 3; |
private final static int OPEN_CAMERA_DELAY_MS = 500; |
@@ -45,9 +37,7 @@ |
@Override |
public void onDone(CameraSession session) { |
checkIsOnCameraThread(); |
- Logging.d(TAG, |
- "Create session done. Switch state: " + switchState |
- + ". MediaRecorder state: " + mediaRecorderState); |
+ Logging.d(TAG, "Create session done"); |
uiThreadHandler.removeCallbacks(openCameraTimeoutRunnable); |
synchronized (stateLock) { |
capturerObserver.onCapturerStarted(true /* success */); |
@@ -67,19 +57,6 @@ |
switchState = SwitchState.IDLE; |
switchCameraInternal(switchEventsHandler); |
} |
- |
- if (mediaRecorderState == MediaRecorderState.IDLE_TO_ACTIVE |
- || mediaRecorderState == MediaRecorderState.ACTIVE_TO_IDLE) { |
- if (mediaRecorderEventsHandler != null) { |
- mediaRecorderEventsHandler.onMediaRecorderSuccess(); |
- mediaRecorderEventsHandler = null; |
- } |
- if (mediaRecorderState == MediaRecorderState.IDLE_TO_ACTIVE) { |
- mediaRecorderState = MediaRecorderState.ACTIVE; |
- } else { |
- mediaRecorderState = MediaRecorderState.IDLE; |
- } |
- } |
} |
} |
@@ -104,14 +81,6 @@ |
switchState = SwitchState.IDLE; |
} |
- if (mediaRecorderState != MediaRecorderState.IDLE) { |
- if (mediaRecorderEventsHandler != null) { |
- mediaRecorderEventsHandler.onMediaRecorderError(error); |
- mediaRecorderEventsHandler = null; |
- } |
- mediaRecorderState = MediaRecorderState.IDLE; |
- } |
- |
if (failureType == CameraSession.FailureType.DISCONNECTED) { |
eventsHandler.onCameraDisconnected(); |
} else { |
@@ -119,7 +88,8 @@ |
} |
} else { |
Logging.w(TAG, "Opening camera failed, retry: " + error); |
- createSessionInternal(OPEN_CAMERA_DELAY_MS, null /* mediaRecorder */); |
+ |
+ createSessionInternal(OPEN_CAMERA_DELAY_MS); |
} |
} |
} |
@@ -243,10 +213,6 @@ |
private CameraStatistics cameraStatistics; /* guarded by stateLock */ |
private boolean firstFrameObserved; /* guarded by stateLock */ |
- // Variables used on camera thread - do not require stateLock synchronization. |
- private MediaRecorderState mediaRecorderState = MediaRecorderState.IDLE; |
- private MediaRecorderHandler mediaRecorderEventsHandler; |
- |
public CameraCapturer( |
String cameraName, CameraEventsHandler eventsHandler, CameraEnumerator cameraEnumerator) { |
if (eventsHandler == null) { |
@@ -311,17 +277,17 @@ |
sessionOpening = true; |
openAttemptsRemaining = MAX_OPEN_CAMERA_ATTEMPTS; |
- createSessionInternal(0, null /* mediaRecorder */); |
- } |
- } |
- |
- private void createSessionInternal(int delayMs, final MediaRecorder mediaRecorder) { |
+ createSessionInternal(0); |
+ } |
+ } |
+ |
+ private void createSessionInternal(int delayMs) { |
uiThreadHandler.postDelayed(openCameraTimeoutRunnable, delayMs + OPEN_CAMERA_TIMEOUT); |
cameraThreadHandler.postDelayed(new Runnable() { |
@Override |
public void run() { |
createCameraSession(createSessionCallback, cameraSessionEventsHandler, applicationContext, |
- surfaceHelper, mediaRecorder, cameraName, width, height, framerate); |
+ surfaceHelper, cameraName, width, height, framerate); |
} |
}, delayMs); |
} |
@@ -384,29 +350,6 @@ |
} |
@Override |
- public void addMediaRecorderToCamera( |
- final MediaRecorder mediaRecorder, final MediaRecorderHandler mediaRecoderEventsHandler) { |
- Logging.d(TAG, "addMediaRecorderToCamera"); |
- cameraThreadHandler.post(new Runnable() { |
- @Override |
- public void run() { |
- updateMediaRecorderInternal(mediaRecorder, mediaRecoderEventsHandler); |
- } |
- }); |
- } |
- |
- @Override |
- public void removeMediaRecorderFromCamera(final MediaRecorderHandler mediaRecoderEventsHandler) { |
- Logging.d(TAG, "removeMediaRecorderFromCamera"); |
- cameraThreadHandler.post(new Runnable() { |
- @Override |
- public void run() { |
- updateMediaRecorderInternal(null /* mediaRecorder */, mediaRecoderEventsHandler); |
- } |
- }); |
- } |
- |
- @Override |
public boolean isScreencast() { |
return false; |
} |
@@ -427,13 +370,6 @@ |
} |
} |
- private void reportCameraSwitchError(String error, CameraSwitchHandler switchEventsHandler) { |
- Logging.e(TAG, error); |
- if (switchEventsHandler != null) { |
- switchEventsHandler.onCameraSwitchError(error); |
- } |
- } |
- |
private void switchCameraInternal(final CameraSwitchHandler switchEventsHandler) { |
Logging.d(TAG, "switchCamera internal"); |
@@ -448,15 +384,18 @@ |
synchronized (stateLock) { |
if (switchState != SwitchState.IDLE) { |
- reportCameraSwitchError("Camera switch already in progress.", switchEventsHandler); |
+ Logging.d(TAG, "switchCamera switchInProgress"); |
+ if (switchEventsHandler != null) { |
+ switchEventsHandler.onCameraSwitchError("Camera switch already in progress."); |
+ } |
return; |
} |
- if (mediaRecorderState != MediaRecorderState.IDLE) { |
- reportCameraSwitchError("switchCamera: media recording is active", switchEventsHandler); |
- return; |
- } |
+ |
if (!sessionOpening && currentSession == null) { |
- reportCameraSwitchError("switchCamera: camera is not running.", switchEventsHandler); |
+ Logging.d(TAG, "switchCamera: No session open"); |
+ if (switchEventsHandler != null) { |
+ switchEventsHandler.onCameraSwitchError("Camera is not running."); |
+ } |
return; |
} |
@@ -485,72 +424,9 @@ |
sessionOpening = true; |
openAttemptsRemaining = 1; |
- createSessionInternal(0, null /* mediaRecorder */); |
+ createSessionInternal(0); |
} |
Logging.d(TAG, "switchCamera done"); |
- } |
- |
- private void reportUpdateMediaRecorderError( |
- String error, MediaRecorderHandler mediaRecoderEventsHandler) { |
- checkIsOnCameraThread(); |
- Logging.e(TAG, error); |
- if (mediaRecoderEventsHandler != null) { |
- mediaRecoderEventsHandler.onMediaRecorderError(error); |
- } |
- } |
- |
- private void updateMediaRecorderInternal( |
- MediaRecorder mediaRecorder, MediaRecorderHandler mediaRecoderEventsHandler) { |
- checkIsOnCameraThread(); |
- boolean addMediaRecorder = (mediaRecorder != null); |
- Logging.d(TAG, |
- "updateMediaRecoderInternal internal. State: " + mediaRecorderState |
- + ". Switch state: " + switchState + ". Add MediaRecorder: " + addMediaRecorder); |
- |
- synchronized (stateLock) { |
- if ((addMediaRecorder && mediaRecorderState != MediaRecorderState.IDLE) |
- || (!addMediaRecorder && mediaRecorderState != MediaRecorderState.ACTIVE)) { |
- reportUpdateMediaRecorderError( |
- "Incorrect state for MediaRecorder update.", mediaRecoderEventsHandler); |
- return; |
- } |
- if (switchState != SwitchState.IDLE) { |
- reportUpdateMediaRecorderError( |
- "MediaRecorder update while camera is switching.", mediaRecoderEventsHandler); |
- return; |
- } |
- if (currentSession == null) { |
- reportUpdateMediaRecorderError( |
- "MediaRecorder update while camera is closed.", mediaRecoderEventsHandler); |
- return; |
- } |
- if (sessionOpening) { |
- reportUpdateMediaRecorderError( |
- "MediaRecorder update while camera is still opening.", mediaRecoderEventsHandler); |
- return; |
- } |
- |
- this.mediaRecorderEventsHandler = mediaRecoderEventsHandler; |
- mediaRecorderState = |
- addMediaRecorder ? MediaRecorderState.IDLE_TO_ACTIVE : MediaRecorderState.ACTIVE_TO_IDLE; |
- |
- Logging.d(TAG, "updateMediaRecoder: Stopping session"); |
- cameraStatistics.release(); |
- cameraStatistics = null; |
- final CameraSession oldSession = currentSession; |
- cameraThreadHandler.post(new Runnable() { |
- @Override |
- public void run() { |
- oldSession.stop(); |
- } |
- }); |
- currentSession = null; |
- |
- sessionOpening = true; |
- openAttemptsRemaining = 1; |
- createSessionInternal(0, mediaRecorder); |
- } |
- Logging.d(TAG, "updateMediaRecoderInternal done"); |
} |
private void checkIsOnCameraThread() { |
@@ -568,6 +444,6 @@ |
abstract protected void createCameraSession( |
CameraSession.CreateSessionCallback createSessionCallback, CameraSession.Events events, |
- Context applicationContext, SurfaceTextureHelper surfaceTextureHelper, |
- MediaRecorder mediaRecoder, String cameraName, int width, int height, int framerate); |
+ Context applicationContext, SurfaceTextureHelper surfaceTextureHelper, String cameraName, |
+ int width, int height, int framerate); |
} |