| 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 2f19604a336b5fbdc493277e5f90c88c3f696bb9..d46f9a3d593837d5c647ef0b5f1e593005908016 100644
|
| --- a/webrtc/examples/androidapp/src/org/appspot/apprtc/CallActivity.java
|
| +++ b/webrtc/examples/androidapp/src/org/appspot/apprtc/CallActivity.java
|
| @@ -24,19 +24,18 @@
|
| import android.net.Uri;
|
| import android.opengl.GLSurfaceView;
|
| import android.os.Bundle;
|
| -import android.os.Handler;
|
| import android.util.Log;
|
| import android.view.View;
|
| import android.view.Window;
|
| import android.view.WindowManager.LayoutParams;
|
| import android.widget.Toast;
|
|
|
| -import org.webrtc.EglBase;
|
| import org.webrtc.IceCandidate;
|
| import org.webrtc.SessionDescription;
|
| import org.webrtc.StatsReport;
|
| -import org.webrtc.SurfaceViewRenderer;
|
| -import org.webrtc.RendererCommon.ScalingType;
|
| +import org.webrtc.VideoRenderer;
|
| +import org.webrtc.VideoRendererGui;
|
| +import org.webrtc.VideoRendererGui.ScalingType;
|
|
|
| /**
|
| * Activity for peer connection call setup, call waiting
|
| @@ -110,11 +109,8 @@
|
| private AppRTCClient appRtcClient;
|
| private SignalingParameters signalingParameters;
|
| private AppRTCAudioManager audioManager = null;
|
| - private EglBase rootEglBase;
|
| - private SurfaceViewRenderer localRender;
|
| - private SurfaceViewRenderer remoteRender;
|
| - private PercentFrameLayout localRenderLayout;
|
| - private PercentFrameLayout remoteRenderLayout;
|
| + private VideoRenderer.Callbacks localRender;
|
| + private VideoRenderer.Callbacks remoteRender;
|
| private ScalingType scalingType;
|
| private Toast logToast;
|
| private boolean commandLineRun;
|
| @@ -128,6 +124,7 @@
|
| private long callStartedTimeMs = 0;
|
|
|
| // Controls
|
| + private GLSurfaceView videoView;
|
| CallFragment callFragment;
|
| HudFragment hudFragment;
|
|
|
| @@ -157,29 +154,31 @@
|
| scalingType = ScalingType.SCALE_ASPECT_FILL;
|
|
|
| // Create UI controls.
|
| - localRender = (SurfaceViewRenderer) findViewById(R.id.local_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);
|
| + videoView = (GLSurfaceView) findViewById(R.id.glview_call);
|
| callFragment = new CallFragment();
|
| hudFragment = new HudFragment();
|
|
|
| + // Create video renderers.
|
| + VideoRendererGui.setView(videoView, new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + createPeerConnectionFactory();
|
| + }
|
| + });
|
| + remoteRender = VideoRendererGui.create(
|
| + REMOTE_X, REMOTE_Y,
|
| + REMOTE_WIDTH, REMOTE_HEIGHT, scalingType, false);
|
| + localRender = VideoRendererGui.create(
|
| + LOCAL_X_CONNECTING, LOCAL_Y_CONNECTING,
|
| + LOCAL_WIDTH_CONNECTING, LOCAL_HEIGHT_CONNECTING, scalingType, true);
|
| +
|
| // Show/hide call control fragment on view click.
|
| - View.OnClickListener listener = new View.OnClickListener() {
|
| + videoView.setOnClickListener(new View.OnClickListener() {
|
| @Override
|
| public void onClick(View view) {
|
| toggleCallControlFragmentVisibility();
|
| }
|
| - };
|
| - localRender.setOnClickListener(listener);
|
| - remoteRender.setOnClickListener(listener);
|
| -
|
| - // Create video renderers.
|
| - rootEglBase = new EglBase();
|
| - localRender.init(rootEglBase.getContext());
|
| - remoteRender.init(rootEglBase.getContext());
|
| - localRender.setZOrderMediaOverlay(true);
|
| - updateVideoView();
|
| + });
|
|
|
| // Check for mandatory permissions.
|
| for (String permission : MANDATORY_PERMISSIONS) {
|
| @@ -243,19 +242,19 @@
|
|
|
| // For command line execution run connection for <runTimeMs> and exit.
|
| if (commandLineRun && runTimeMs > 0) {
|
| - (new Handler()).postDelayed(new Runnable() {
|
| + videoView.postDelayed(new Runnable() {
|
| public void run() {
|
| disconnect();
|
| }
|
| }, runTimeMs);
|
| }
|
| - createPeerConnectionFactory();
|
| }
|
|
|
| // Activity interfaces
|
| @Override
|
| public void onPause() {
|
| super.onPause();
|
| + videoView.onPause();
|
| activityRunning = false;
|
| if (peerConnectionClient != null) {
|
| peerConnectionClient.stopVideoSource();
|
| @@ -265,6 +264,7 @@
|
| @Override
|
| public void onResume() {
|
| super.onResume();
|
| + videoView.onResume();
|
| activityRunning = true;
|
| if (peerConnectionClient != null) {
|
| peerConnectionClient.startVideoSource();
|
| @@ -279,12 +279,6 @@
|
| logToast.cancel();
|
| }
|
| activityRunning = false;
|
| - localRender.release();
|
| - localRender = null;
|
| - remoteRender.release();
|
| - remoteRender = null;
|
| - rootEglBase.release();
|
| - rootEglBase = null;
|
| }
|
|
|
| // CallFragment.OnCallEvents interface implementation.
|
| @@ -326,23 +320,19 @@
|
| }
|
|
|
| private void updateVideoView() {
|
| - remoteRenderLayout.setPosition(REMOTE_X, REMOTE_Y, REMOTE_WIDTH, REMOTE_HEIGHT);
|
| - remoteRender.setScalingType(scalingType);
|
| - remoteRender.setMirror(false);
|
| -
|
| + VideoRendererGui.update(remoteRender,
|
| + REMOTE_X, REMOTE_Y,
|
| + REMOTE_WIDTH, REMOTE_HEIGHT, scalingType, false);
|
| if (iceConnected) {
|
| - localRenderLayout.setPosition(
|
| - LOCAL_X_CONNECTED, LOCAL_Y_CONNECTED, LOCAL_WIDTH_CONNECTED, LOCAL_HEIGHT_CONNECTED);
|
| - localRender.setScalingType(ScalingType.SCALE_ASPECT_FIT);
|
| + VideoRendererGui.update(localRender,
|
| + LOCAL_X_CONNECTED, LOCAL_Y_CONNECTED,
|
| + LOCAL_WIDTH_CONNECTED, LOCAL_HEIGHT_CONNECTED,
|
| + ScalingType.SCALE_ASPECT_FIT, true);
|
| } else {
|
| - localRenderLayout.setPosition(
|
| - LOCAL_X_CONNECTING, LOCAL_Y_CONNECTING, LOCAL_WIDTH_CONNECTING, LOCAL_HEIGHT_CONNECTING);
|
| - localRender.setScalingType(scalingType);
|
| - }
|
| - localRender.setMirror(true);
|
| -
|
| - localRender.requestLayout();
|
| - remoteRender.requestLayout();
|
| + VideoRendererGui.update(localRender,
|
| + LOCAL_X_CONNECTING, LOCAL_Y_CONNECTING,
|
| + LOCAL_WIDTH_CONNECTING, LOCAL_HEIGHT_CONNECTING, scalingType, true);
|
| + }
|
| }
|
|
|
| private void startCall() {
|
| @@ -400,7 +390,7 @@
|
| Log.d(TAG, "Creating peer connection factory, delay=" + delta + "ms");
|
| peerConnectionClient = PeerConnectionClient.getInstance();
|
| peerConnectionClient.createPeerConnectionFactory(CallActivity.this,
|
| - rootEglBase.getContext(), peerConnectionParameters,
|
| + VideoRendererGui.getEGLContext(), peerConnectionParameters,
|
| CallActivity.this);
|
| }
|
| if (signalingParameters != null) {
|
|
|