Chromium Code Reviews| Index: webrtc/examples/androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java |
| diff --git a/webrtc/examples/androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java b/webrtc/examples/androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java |
| index 1b0daefab650d3466b043f19d3d30beb867092bd..b26bda90a32a7737d4d78c6a9a0a71153179e85e 100644 |
| --- a/webrtc/examples/androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java |
| +++ b/webrtc/examples/androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java |
| @@ -21,7 +21,9 @@ import android.test.InstrumentationTestCase; |
| import android.test.suitebuilder.annotation.SmallTest; |
| import android.util.Log; |
| +import org.webrtc.Camera1Enumerator; |
| import org.webrtc.Camera2Enumerator; |
| +import org.webrtc.CameraEnumerator; |
| import org.webrtc.EglBase; |
| import org.webrtc.IceCandidate; |
| import org.webrtc.MediaCodecVideoEncoder; |
| @@ -29,6 +31,7 @@ import org.webrtc.PeerConnection; |
| import org.webrtc.PeerConnectionFactory; |
| import org.webrtc.SessionDescription; |
| import org.webrtc.StatsReport; |
| +import org.webrtc.VideoCapturer; |
| import org.webrtc.VideoRenderer; |
| import java.util.LinkedList; |
| @@ -235,7 +238,7 @@ public class PeerConnectionClientTest |
| PeerConnectionClient createPeerConnectionClient(MockRenderer localRenderer, |
| MockRenderer remoteRenderer, PeerConnectionParameters peerConnectionParameters, |
| - EglBase.Context eglContext) { |
| + VideoCapturer videoCapturer, EglBase.Context eglContext) { |
| List<PeerConnection.IceServer> iceServers = new LinkedList<PeerConnection.IceServer>(); |
| SignalingParameters signalingParameters = |
| new SignalingParameters(iceServers, true, // iceServers, initiator. |
| @@ -249,7 +252,9 @@ public class PeerConnectionClientTest |
| client.setPeerConnectionFactoryOptions(options); |
| client.createPeerConnectionFactory( |
| getInstrumentation().getTargetContext(), peerConnectionParameters, this); |
| - client.createPeerConnection(eglContext, localRenderer, remoteRenderer, signalingParameters); |
| + client.createPeerConnection( |
| + eglContext, localRenderer, remoteRenderer, |
| + videoCapturer, signalingParameters); |
| client.createOffer(); |
| return client; |
| } |
| @@ -260,14 +265,12 @@ public class PeerConnectionClientTest |
| true, /* loopback */ |
| false, /* tracing */ |
| // Video codec parameters. |
| - true, /* useCamera2 */ |
| 0, /* videoWidth */ |
| 0, /* videoHeight */ |
| 0, /* videoFps */ |
| 0, /* videoStartBitrate */ |
| "", /* videoCodec */ |
| true, /* videoCodecHwAcceleration */ |
| - false, /* captureToToTexture */ |
| // Audio codec parameters. |
| 0, /* audioStartBitrate */ |
| "OPUS", /* audioCodec */ |
| @@ -275,27 +278,37 @@ public class PeerConnectionClientTest |
| false, /* aecDump */ |
| false /* useOpenSLES */, false /* disableBuiltInAEC */, false /* disableBuiltInAGC */, |
| false /* disableBuiltInNS */, false /* enableLevelControl */); |
| + |
| return peerConnectionParameters; |
| } |
| - private PeerConnectionParameters createParametersForVideoCall( |
| - String videoCodec, boolean captureToTexture) { |
| + private VideoCapturer createCameraCapturer(boolean captureToTexture) { |
| final boolean useCamera2 = |
| captureToTexture && Camera2Enumerator.isSupported(getInstrumentation().getTargetContext()); |
| + CameraEnumerator enumerator; |
| + if (useCamera2) { |
| + enumerator = new Camera2Enumerator(getInstrumentation().getTargetContext()); |
| + } else { |
| + enumerator = new Camera1Enumerator(captureToTexture); |
| + } |
| + String deviceName = enumerator.getDeviceNames()[0]; |
| + return enumerator.createCapturer(deviceName, null); |
| + } |
| + |
| + private PeerConnectionParameters createParametersForVideoCall( |
| + String videoCodec) { |
| PeerConnectionParameters peerConnectionParameters = |
| new PeerConnectionParameters(true, /* videoCallEnabled */ |
| true, /* loopback */ |
| false, /* tracing */ |
| // Video codec parameters. |
| - useCamera2, /* useCamera2 */ |
| 0, /* videoWidth */ |
| 0, /* videoHeight */ |
| 0, /* videoFps */ |
| 0, /* videoStartBitrate */ |
| videoCodec, /* videoCodec */ |
| true, /* videoCodecHwAcceleration */ |
| - captureToTexture, /* captureToToTexture */ |
| // Audio codec parameters. |
| 0, /* audioStartBitrate */ |
| "OPUS", /* audioCodec */ |
| @@ -303,6 +316,7 @@ public class PeerConnectionClientTest |
| false, /* aecDump */ |
| false /* useOpenSLES */, false /* disableBuiltInAEC */, false /* disableBuiltInAGC */, |
| false /* disableBuiltInNS */, false /* enableLevelControl */); |
| + |
| return peerConnectionParameters; |
| } |
| @@ -327,7 +341,8 @@ public class PeerConnectionClientTest |
| Log.d(TAG, "testSetLocalOfferMakesVideoFlowLocally"); |
| MockRenderer localRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES, LOCAL_RENDERER_NAME); |
| pcClient = createPeerConnectionClient(localRenderer, new MockRenderer(0, null), |
| - createParametersForVideoCall(VIDEO_CODEC_VP8, false), null); |
| + createParametersForVideoCall(VIDEO_CODEC_VP8), |
| + createCameraCapturer(false), null); |
| // Wait for local SDP and ice candidates set events. |
| assertTrue("Local SDP was not set.", waitForLocalSDP(WAIT_TIMEOUT)); |
| @@ -343,7 +358,10 @@ public class PeerConnectionClientTest |
| Log.d(TAG, "testSetLocalOfferMakesVideoFlowLocally Done."); |
| } |
| - private void doLoopbackTest(PeerConnectionParameters parameters, boolean decodeToTexure) |
| + private void doLoopbackTest( |
| + PeerConnectionParameters parameters, |
| + VideoCapturer videoCapturer, |
| + boolean decodeToTexture) |
| throws InterruptedException { |
| loopback = true; |
| MockRenderer localRenderer = null; |
| @@ -355,8 +373,9 @@ public class PeerConnectionClientTest |
| } else { |
| Log.d(TAG, "testLoopback for audio."); |
| } |
| - pcClient = createPeerConnectionClient(localRenderer, remoteRenderer, parameters, |
| - decodeToTexure ? eglBase.getEglBaseContext() : null); |
| + pcClient = createPeerConnectionClient(localRenderer, remoteRenderer, |
| + parameters, videoCapturer, |
| + decodeToTexture ? eglBase.getEglBaseContext() : null); |
| // Wait for local SDP, rename it to answer and set as remote SDP. |
| assertTrue("Local SDP was not set.", waitForLocalSDP(WAIT_TIMEOUT)); |
| @@ -386,22 +405,27 @@ public class PeerConnectionClientTest |
| @SmallTest |
| public void testLoopbackAudio() throws InterruptedException { |
| - doLoopbackTest(createParametersForAudioCall(), false); |
| + doLoopbackTest(createParametersForAudioCall(), null, false); |
| } |
| @SmallTest |
| public void testLoopbackVp8() throws InterruptedException { |
| - doLoopbackTest(createParametersForVideoCall(VIDEO_CODEC_VP8, false), false); |
| + doLoopbackTest( |
| + createParametersForVideoCall(VIDEO_CODEC_VP8), |
| + createCameraCapturer(false), false); |
|
sakal
2016/10/07 11:57:21
nit: add comments to literals in this file, like c
mandermo
2016/10/10 12:22:14
Done.
|
| } |
| @SmallTest |
| public void testLoopbackVp9() throws InterruptedException { |
| - doLoopbackTest(createParametersForVideoCall(VIDEO_CODEC_VP9, false), false); |
| + doLoopbackTest( |
| + createParametersForVideoCall(VIDEO_CODEC_VP9), |
| + createCameraCapturer(false), false); |
| } |
| @SmallTest |
| public void testLoopbackH264() throws InterruptedException { |
| - doLoopbackTest(createParametersForVideoCall(VIDEO_CODEC_H264, false), false); |
| + doLoopbackTest(createParametersForVideoCall(VIDEO_CODEC_H264), |
| + createCameraCapturer(false), false); |
| } |
| @SmallTest |
| @@ -410,7 +434,8 @@ public class PeerConnectionClientTest |
| Log.i(TAG, "Decode to textures is not supported, requires SDK version 19."); |
| return; |
| } |
| - doLoopbackTest(createParametersForVideoCall(VIDEO_CODEC_VP8, false), true); |
| + doLoopbackTest(createParametersForVideoCall(VIDEO_CODEC_VP8), |
| + createCameraCapturer(false), true); |
| } |
| @SmallTest |
| @@ -419,7 +444,8 @@ public class PeerConnectionClientTest |
| Log.i(TAG, "Decode to textures is not supported, requires SDK version 19."); |
| return; |
| } |
| - doLoopbackTest(createParametersForVideoCall(VIDEO_CODEC_VP9, false), true); |
| + doLoopbackTest(createParametersForVideoCall(VIDEO_CODEC_VP9), |
| + createCameraCapturer(false), true); |
| } |
| @SmallTest |
| @@ -428,7 +454,8 @@ public class PeerConnectionClientTest |
| Log.i(TAG, "Decode to textures is not supported, requires SDK version 19."); |
| return; |
| } |
| - doLoopbackTest(createParametersForVideoCall(VIDEO_CODEC_H264, false), true); |
| + doLoopbackTest(createParametersForVideoCall(VIDEO_CODEC_H264), |
| + createCameraCapturer(false), true); |
| } |
| @SmallTest |
| @@ -443,7 +470,8 @@ public class PeerConnectionClientTest |
| Log.i(TAG, "VP8 encode to textures is not supported."); |
| return; |
| } |
| - doLoopbackTest(createParametersForVideoCall(VIDEO_CODEC_VP8, true), true); |
| + doLoopbackTest(createParametersForVideoCall(VIDEO_CODEC_VP8), |
| + createCameraCapturer(true), true); |
| } |
| // Test that a call can be setup even if the EGL context used during initialization is |
| @@ -457,11 +485,12 @@ public class PeerConnectionClientTest |
| } |
| loopback = true; |
| - PeerConnectionParameters parameters = createParametersForVideoCall(VIDEO_CODEC_VP8, true); |
| + PeerConnectionParameters parameters = createParametersForVideoCall(VIDEO_CODEC_VP8); |
| MockRenderer localRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES, LOCAL_RENDERER_NAME); |
| MockRenderer remoteRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES, REMOTE_RENDERER_NAME); |
| pcClient = createPeerConnectionClient( |
| - localRenderer, remoteRenderer, parameters, eglBase.getEglBaseContext()); |
| + localRenderer, remoteRenderer, parameters, createCameraCapturer(true), |
| + eglBase.getEglBaseContext()); |
| // Wait for local SDP, rename it to answer and set as remote SDP. |
| assertTrue("Local SDP was not set.", waitForLocalSDP(WAIT_TIMEOUT)); |
| @@ -501,7 +530,8 @@ public class PeerConnectionClientTest |
| Log.i(TAG, "H264 encode to textures is not supported."); |
| return; |
| } |
| - doLoopbackTest(createParametersForVideoCall(VIDEO_CODEC_H264, true), true); |
| + doLoopbackTest(createParametersForVideoCall(VIDEO_CODEC_H264), |
| + createCameraCapturer(true), true); |
| } |
| // Checks if default front camera can be switched to back camera and then |
| @@ -515,7 +545,9 @@ public class PeerConnectionClientTest |
| MockRenderer remoteRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES, REMOTE_RENDERER_NAME); |
| pcClient = createPeerConnectionClient( |
| - localRenderer, remoteRenderer, createParametersForVideoCall(VIDEO_CODEC_VP8, false), null); |
| + localRenderer, remoteRenderer, |
| + createParametersForVideoCall(VIDEO_CODEC_VP8), |
| + createCameraCapturer(false), null); |
| // Wait for local SDP, rename it to answer and set as remote SDP. |
| assertTrue("Local SDP was not set.", waitForLocalSDP(WAIT_TIMEOUT)); |
| @@ -563,7 +595,9 @@ public class PeerConnectionClientTest |
| MockRenderer remoteRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES, REMOTE_RENDERER_NAME); |
| pcClient = createPeerConnectionClient( |
| - localRenderer, remoteRenderer, createParametersForVideoCall(VIDEO_CODEC_VP8, false), null); |
| + localRenderer, remoteRenderer, |
| + createParametersForVideoCall(VIDEO_CODEC_VP8), |
| + createCameraCapturer(false), null); |
| // Wait for local SDP, rename it to answer and set as remote SDP. |
| assertTrue("Local SDP was not set.", waitForLocalSDP(WAIT_TIMEOUT)); |
| @@ -612,7 +646,9 @@ public class PeerConnectionClientTest |
| MockRenderer remoteRenderer = new MockRenderer(EXPECTED_VIDEO_FRAMES, REMOTE_RENDERER_NAME); |
| pcClient = createPeerConnectionClient( |
| - localRenderer, remoteRenderer, createParametersForVideoCall(VIDEO_CODEC_VP8, false), null); |
| + localRenderer, remoteRenderer, |
| + createParametersForVideoCall(VIDEO_CODEC_VP8), |
| + createCameraCapturer(false), null); |
| // Wait for local SDP, rename it to answer and set as remote SDP. |
| assertTrue("Local SDP was not set.", waitForLocalSDP(WAIT_TIMEOUT)); |