Index: webrtc/examples/androidapp/src/org/appspot/apprtc/CallActivity.java |
diff --git a/webrtc/examples/androidapp/src/org/appspot/apprtc/CallActivity.java b/webrtc/examples/androidapp/src/org/appspot/apprtc/CallActivity.java |
index 48a771632ab7132b6d7c19ba7d154a5ae898bcff..8fdcc391298d990b088b0da09bea99e966c5c6dd 100644 |
--- a/webrtc/examples/androidapp/src/org/appspot/apprtc/CallActivity.java |
+++ b/webrtc/examples/androidapp/src/org/appspot/apprtc/CallActivity.java |
@@ -29,26 +29,14 @@ |
import android.view.WindowManager.LayoutParams; |
import android.widget.Toast; |
-import java.io.IOException; |
-import java.lang.RuntimeException; |
-import java.util.ArrayList; |
-import java.util.List; |
- |
-import org.webrtc.Camera1Enumerator; |
import org.webrtc.Camera2Enumerator; |
-import org.webrtc.CameraEnumerator; |
import org.webrtc.EglBase; |
-import org.webrtc.FileVideoCapturer; |
-import org.webrtc.VideoFileRenderer; |
import org.webrtc.IceCandidate; |
-import org.webrtc.Logging; |
import org.webrtc.PeerConnectionFactory; |
import org.webrtc.RendererCommon.ScalingType; |
import org.webrtc.SessionDescription; |
import org.webrtc.StatsReport; |
import org.webrtc.SurfaceViewRenderer; |
-import org.webrtc.VideoCapturer; |
-import org.webrtc.VideoRenderer; |
/** |
* Activity for peer connection call setup, call waiting |
@@ -84,15 +72,6 @@ |
public static final String EXTRA_TRACING = "org.appspot.apprtc.TRACING"; |
public static final String EXTRA_CMDLINE = "org.appspot.apprtc.CMDLINE"; |
public static final String EXTRA_RUNTIME = "org.appspot.apprtc.RUNTIME"; |
- public static final String EXTRA_VIDEO_FILE_AS_CAMERA = "org.appspot.apprtc.VIDEO_FILE_AS_CAMERA"; |
- public static final String EXTRA_SAVE_REMOTE_VIDEO_TO_FILE = |
- "org.appspot.apprtc.SAVE_REMOTE_VIDEO_TO_FILE"; |
- public static final String EXTRA_SAVE_REMOTE_VIDEO_TO_FILE_WIDTH = |
- "org.appspot.apprtc.SAVE_REMOTE_VIDEO_TO_FILE_WIDTH"; |
- public static final String EXTRA_SAVE_REMOTE_VIDEO_TO_FILE_HEIGHT = |
- "org.appspot.apprtc.SAVE_REMOTE_VIDEO_TO_FILE_HEIGHT"; |
- public static final String EXTRA_USE_VALUES_FROM_INTENT = |
- "org.appspot.apprtc.USE_VALUES_FROM_INTENT"; |
private static final String TAG = "CallRTCClient"; |
// List of mandatory application permissions. |
@@ -122,10 +101,7 @@ |
private AppRTCAudioManager audioManager = null; |
private EglBase rootEglBase; |
private SurfaceViewRenderer localRender; |
- private SurfaceViewRenderer remoteRenderScreen; |
- private VideoFileRenderer videoFileRenderer; |
- private final List<VideoRenderer.Callbacks> remoteRenderers = |
- new ArrayList<VideoRenderer.Callbacks>(); |
+ private SurfaceViewRenderer remoteRender; |
private PercentFrameLayout localRenderLayout; |
private PercentFrameLayout remoteRenderLayout; |
private ScalingType scalingType; |
@@ -167,7 +143,7 @@ |
// Create UI controls. |
localRender = (SurfaceViewRenderer) findViewById(R.id.local_video_view); |
- remoteRenderScreen = (SurfaceViewRenderer) findViewById(R.id.remote_video_view); |
+ remoteRender = (SurfaceViewRenderer) findViewById(R.id.remote_video_view); |
localRenderLayout = (PercentFrameLayout) findViewById(R.id.local_video_layout); |
remoteRenderLayout = (PercentFrameLayout) findViewById(R.id.remote_video_layout); |
callFragment = new CallFragment(); |
@@ -182,31 +158,12 @@ |
}; |
localRender.setOnClickListener(listener); |
- remoteRenderScreen.setOnClickListener(listener); |
- remoteRenderers.add(remoteRenderScreen); |
- |
- final Intent intent = getIntent(); |
+ remoteRender.setOnClickListener(listener); |
// Create video renderers. |
rootEglBase = EglBase.create(); |
localRender.init(rootEglBase.getEglBaseContext(), null); |
- String saveRemoteVideoToFile = intent.getStringExtra(EXTRA_SAVE_REMOTE_VIDEO_TO_FILE); |
- |
- // When saveRemoteVideoToFile is set we save the video from the remote to a file. |
- if (saveRemoteVideoToFile != null) { |
- int videoOutWidth = intent.getIntExtra(EXTRA_SAVE_REMOTE_VIDEO_TO_FILE_WIDTH, 0); |
- int videoOutHeight = intent.getIntExtra(EXTRA_SAVE_REMOTE_VIDEO_TO_FILE_HEIGHT, 0); |
- try { |
- videoFileRenderer = new VideoFileRenderer( |
- saveRemoteVideoToFile, videoOutWidth, videoOutHeight, rootEglBase.getEglBaseContext()); |
- remoteRenderers.add(videoFileRenderer); |
- } catch (IOException e) { |
- throw new RuntimeException( |
- "Failed to open video file for output: " + saveRemoteVideoToFile, e); |
- } |
- } |
- remoteRenderScreen.init(rootEglBase.getEglBaseContext(), null); |
- |
+ remoteRender.init(rootEglBase.getEglBaseContext(), null); |
localRender.setZOrderMediaOverlay(true); |
updateVideoView(); |
@@ -220,6 +177,8 @@ |
} |
} |
+ // Get Intent parameters. |
+ final Intent intent = getIntent(); |
Uri roomUri = intent.getData(); |
if (roomUri == null) { |
logAndToast(getString(R.string.missing_url)); |
@@ -228,10 +187,7 @@ |
finish(); |
return; |
} |
- |
- // Get Intent parameters. |
String roomId = intent.getStringExtra(EXTRA_ROOMID); |
- Log.d(TAG, "Room ID: " + roomId); |
if (roomId == null || roomId.length() == 0) { |
logAndToast(getString(R.string.missing_url)); |
Log.e(TAG, "Incorrect room ID in intent!"); |
@@ -243,12 +199,16 @@ |
boolean loopback = intent.getBooleanExtra(EXTRA_LOOPBACK, false); |
boolean tracing = intent.getBooleanExtra(EXTRA_TRACING, false); |
+ boolean useCamera2 = |
+ Camera2Enumerator.isSupported(this) && intent.getBooleanExtra(EXTRA_CAMERA2, true); |
+ |
peerConnectionParameters = |
new PeerConnectionParameters(intent.getBooleanExtra(EXTRA_VIDEO_CALL, true), loopback, |
- tracing, intent.getIntExtra(EXTRA_VIDEO_WIDTH, 0), |
+ tracing, useCamera2, intent.getIntExtra(EXTRA_VIDEO_WIDTH, 0), |
intent.getIntExtra(EXTRA_VIDEO_HEIGHT, 0), intent.getIntExtra(EXTRA_VIDEO_FPS, 0), |
intent.getIntExtra(EXTRA_VIDEO_BITRATE, 0), intent.getStringExtra(EXTRA_VIDEOCODEC), |
intent.getBooleanExtra(EXTRA_HWCODEC_ENABLED, true), |
+ intent.getBooleanExtra(EXTRA_CAPTURETOTEXTURE_ENABLED, false), |
intent.getIntExtra(EXTRA_AUDIO_BITRATE, 0), intent.getStringExtra(EXTRA_AUDIOCODEC), |
intent.getBooleanExtra(EXTRA_NOAUDIOPROCESSING_ENABLED, false), |
intent.getBooleanExtra(EXTRA_AECDUMP_ENABLED, false), |
@@ -260,8 +220,6 @@ |
commandLineRun = intent.getBooleanExtra(EXTRA_CMDLINE, false); |
runTimeMs = intent.getIntExtra(EXTRA_RUNTIME, 0); |
- Log.d(TAG, "VIDEO_FILE: '" + intent.getStringExtra(EXTRA_VIDEO_FILE_AS_CAMERA) + "'"); |
- |
// Create connection client. Use DirectRTCClient if room name is an IP otherwise use the |
// standard WebSocketRTCClient. |
if (loopback || !DirectRTCClient.IP_PATTERN.matcher(roomId).matches()) { |
@@ -307,46 +265,6 @@ |
CallActivity.this, peerConnectionParameters, CallActivity.this); |
} |
- private boolean useCamera2() { |
- return Camera2Enumerator.isSupported(this) && getIntent().getBooleanExtra(EXTRA_CAMERA2, true); |
- } |
- |
- private boolean captureToTexture() { |
- return getIntent().getBooleanExtra(EXTRA_CAPTURETOTEXTURE_ENABLED, false); |
- } |
- |
- private VideoCapturer createCameraCapturer(CameraEnumerator enumerator) { |
- final String[] deviceNames = enumerator.getDeviceNames(); |
- |
- // First, try to find front facing camera |
- Logging.d(TAG, "Looking for front facing cameras."); |
- for (String deviceName : deviceNames) { |
- if (enumerator.isFrontFacing(deviceName)) { |
- Logging.d(TAG, "Creating front facing camera capturer."); |
- VideoCapturer videoCapturer = enumerator.createCapturer(deviceName, null); |
- |
- if (videoCapturer != null) { |
- return videoCapturer; |
- } |
- } |
- } |
- |
- // Front facing camera not found, try something else |
- Logging.d(TAG, "Looking for other cameras."); |
- for (String deviceName : deviceNames) { |
- if (!enumerator.isFrontFacing(deviceName)) { |
- Logging.d(TAG, "Creating other camera capturer."); |
- VideoCapturer videoCapturer = enumerator.createCapturer(deviceName, null); |
- |
- if (videoCapturer != null) { |
- return videoCapturer; |
- } |
- } |
- } |
- |
- return null; |
- } |
- |
// Activity interfaces |
@Override |
public void onPause() { |
@@ -435,8 +353,8 @@ |
private void updateVideoView() { |
remoteRenderLayout.setPosition(REMOTE_X, REMOTE_Y, REMOTE_WIDTH, REMOTE_HEIGHT); |
- remoteRenderScreen.setScalingType(scalingType); |
- remoteRenderScreen.setMirror(false); |
+ remoteRender.setScalingType(scalingType); |
+ remoteRender.setMirror(false); |
if (iceConnected) { |
localRenderLayout.setPosition( |
@@ -450,7 +368,7 @@ |
localRender.setMirror(true); |
localRender.requestLayout(); |
- remoteRenderScreen.requestLayout(); |
+ remoteRender.requestLayout(); |
} |
private void startCall() { |
@@ -514,13 +432,9 @@ |
localRender.release(); |
localRender = null; |
} |
- if (videoFileRenderer != null) { |
- videoFileRenderer.release(); |
- videoFileRenderer = null; |
- } |
- if (remoteRenderScreen != null) { |
- remoteRenderScreen.release(); |
- remoteRenderScreen = null; |
+ if (remoteRender != null) { |
+ remoteRender.release(); |
+ remoteRender = null; |
} |
if (audioManager != null) { |
audioManager.close(); |
@@ -578,35 +492,6 @@ |
}); |
} |
- private VideoCapturer createVideoCapturer() { |
- VideoCapturer videoCapturer = null; |
- String videoFileAsCamera = getIntent().getStringExtra(EXTRA_VIDEO_FILE_AS_CAMERA); |
- if (videoFileAsCamera != null) { |
- try { |
- videoCapturer = new FileVideoCapturer(videoFileAsCamera); |
- } catch (IOException e) { |
- reportError("Failed to open video file for emulated camera"); |
- return null; |
- } |
- } else if (useCamera2()) { |
- if (!captureToTexture()) { |
- reportError(getString(R.string.camera2_texture_only_error)); |
- return null; |
- } |
- |
- Logging.d(TAG, "Creating capturer using camera2 API."); |
- videoCapturer = createCameraCapturer(new Camera2Enumerator(this)); |
- } else { |
- Logging.d(TAG, "Creating capturer using camera1 API."); |
- videoCapturer = createCameraCapturer(new Camera1Enumerator(captureToTexture())); |
- } |
- if (videoCapturer == null) { |
- reportError("Failed to open camera"); |
- return null; |
- } |
- return videoCapturer; |
- } |
- |
// -----Implementation of AppRTCClient.AppRTCSignalingEvents --------------- |
// All callbacks are invoked from websocket signaling looper thread and |
// are routed to UI thread. |
@@ -615,12 +500,8 @@ |
signalingParameters = params; |
logAndToast("Creating peer connection, delay=" + delta + "ms"); |
- VideoCapturer videoCapturer = null; |
- if (peerConnectionParameters.videoCallEnabled) { |
- videoCapturer = createVideoCapturer(); |
- } |
- peerConnectionClient.createPeerConnection(rootEglBase.getEglBaseContext(), localRender, |
- remoteRenderers, videoCapturer, signalingParameters); |
+ peerConnectionClient.createPeerConnection( |
+ rootEglBase.getEglBaseContext(), localRender, remoteRender, signalingParameters); |
if (signalingParameters.initiator) { |
logAndToast("Creating OFFER..."); |