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) { |