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