OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2014 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2014 The WebRTC Project Authors. All rights reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
11 package org.appspot.apprtc.test; | 11 package org.appspot.apprtc.test; |
12 | 12 |
13 import java.util.LinkedList; | |
14 import java.util.List; | |
15 import java.util.concurrent.CountDownLatch; | |
16 import java.util.concurrent.Executor; | |
17 import java.util.concurrent.ExecutorService; | |
18 import java.util.concurrent.Executors; | |
19 import java.util.concurrent.TimeUnit; | |
20 | |
21 import org.appspot.apprtc.AppRTCClient.SignalingParameters; | 13 import org.appspot.apprtc.AppRTCClient.SignalingParameters; |
22 import org.appspot.apprtc.PeerConnectionClient; | 14 import org.appspot.apprtc.PeerConnectionClient; |
23 import org.appspot.apprtc.PeerConnectionClient.PeerConnectionEvents; | 15 import org.appspot.apprtc.PeerConnectionClient.PeerConnectionEvents; |
24 import org.appspot.apprtc.PeerConnectionClient.PeerConnectionParameters; | 16 import org.appspot.apprtc.PeerConnectionClient.PeerConnectionParameters; |
| 17 |
| 18 import android.os.Build; |
| 19 import android.test.InstrumentationTestCase; |
| 20 import android.test.suitebuilder.annotation.SmallTest; |
| 21 import android.util.Log; |
| 22 |
| 23 import org.webrtc.Camera2Enumerator; |
25 import org.webrtc.EglBase; | 24 import org.webrtc.EglBase; |
26 import org.webrtc.IceCandidate; | 25 import org.webrtc.IceCandidate; |
27 import org.webrtc.MediaCodecVideoEncoder; | 26 import org.webrtc.MediaCodecVideoEncoder; |
28 import org.webrtc.PeerConnection; | 27 import org.webrtc.PeerConnection; |
29 import org.webrtc.PeerConnectionFactory; | 28 import org.webrtc.PeerConnectionFactory; |
30 import org.webrtc.SessionDescription; | 29 import org.webrtc.SessionDescription; |
31 import org.webrtc.StatsReport; | 30 import org.webrtc.StatsReport; |
32 import org.webrtc.VideoRenderer; | 31 import org.webrtc.VideoRenderer; |
33 | 32 |
34 import android.os.Build; | 33 import java.util.LinkedList; |
35 import android.test.InstrumentationTestCase; | 34 import java.util.List; |
36 import android.test.suitebuilder.annotation.SmallTest; | 35 import java.util.concurrent.CountDownLatch; |
37 import android.util.Log; | 36 import java.util.concurrent.Executor; |
| 37 import java.util.concurrent.ExecutorService; |
| 38 import java.util.concurrent.Executors; |
| 39 import java.util.concurrent.TimeUnit; |
38 | 40 |
39 public class PeerConnectionClientTest extends InstrumentationTestCase | 41 public class PeerConnectionClientTest extends InstrumentationTestCase |
40 implements PeerConnectionEvents { | 42 implements PeerConnectionEvents { |
41 private static final String TAG = "RTCClientTest"; | 43 private static final String TAG = "RTCClientTest"; |
42 private static final int ICE_CONNECTION_WAIT_TIMEOUT = 10000; | 44 private static final int ICE_CONNECTION_WAIT_TIMEOUT = 10000; |
43 private static final int WAIT_TIMEOUT = 7000; | 45 private static final int WAIT_TIMEOUT = 7000; |
44 private static final int CAMERA_SWITCH_ATTEMPTS = 3; | 46 private static final int CAMERA_SWITCH_ATTEMPTS = 3; |
45 private static final int VIDEO_RESTART_ATTEMPTS = 3; | 47 private static final int VIDEO_RESTART_ATTEMPTS = 3; |
46 private static final int CAPTURE_FORMAT_CHANGE_ATTEMPTS = 3; | 48 private static final int CAPTURE_FORMAT_CHANGE_ATTEMPTS = 3; |
47 private static final int VIDEO_RESTART_TIMEOUT = 500; | 49 private static final int VIDEO_RESTART_TIMEOUT = 500; |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 iceServers, true, // iceServers, initiator. | 249 iceServers, true, // iceServers, initiator. |
248 null, null, null, // clientId, wssUrl, wssPostUrl. | 250 null, null, null, // clientId, wssUrl, wssPostUrl. |
249 null, null); // offerSdp, iceCandidates. | 251 null, null); // offerSdp, iceCandidates. |
250 | 252 |
251 PeerConnectionClient client = PeerConnectionClient.getInstance(); | 253 PeerConnectionClient client = PeerConnectionClient.getInstance(); |
252 PeerConnectionFactory.Options options = new PeerConnectionFactory.Options(); | 254 PeerConnectionFactory.Options options = new PeerConnectionFactory.Options(); |
253 options.networkIgnoreMask = 0; | 255 options.networkIgnoreMask = 0; |
254 options.disableNetworkMonitor = true; | 256 options.disableNetworkMonitor = true; |
255 client.setPeerConnectionFactoryOptions(options); | 257 client.setPeerConnectionFactoryOptions(options); |
256 client.createPeerConnectionFactory( | 258 client.createPeerConnectionFactory( |
257 getInstrumentation().getContext(), peerConnectionParameters, this); | 259 getInstrumentation().getTargetContext(), peerConnectionParameters, this)
; |
258 client.createPeerConnection(eglContext, localRenderer, remoteRenderer, signa
lingParameters); | 260 client.createPeerConnection(eglContext, localRenderer, remoteRenderer, signa
lingParameters); |
259 client.createOffer(); | 261 client.createOffer(); |
260 return client; | 262 return client; |
261 } | 263 } |
262 | 264 |
263 private PeerConnectionParameters createParametersForAudioCall() { | 265 private PeerConnectionParameters createParametersForAudioCall() { |
264 PeerConnectionParameters peerConnectionParameters = | 266 PeerConnectionParameters peerConnectionParameters = |
265 new PeerConnectionParameters( | 267 new PeerConnectionParameters( |
266 false, /* videoCallEnabled */ | 268 false, /* videoCallEnabled */ |
267 true, /* loopback */ | 269 true, /* loopback */ |
268 false, /* tracing */ | 270 false, /* tracing */ |
269 // Video codec parameters. | 271 // Video codec parameters. |
| 272 true, /* useCamera2 */ |
270 0, /* videoWidth */ | 273 0, /* videoWidth */ |
271 0, /* videoHeight */ | 274 0, /* videoHeight */ |
272 0, /* videoFps */ | 275 0, /* videoFps */ |
273 0, /* videoStartBitrate */ | 276 0, /* videoStartBitrate */ |
274 "", /* videoCodec */ | 277 "", /* videoCodec */ |
275 true, /* videoCodecHwAcceleration */ | 278 true, /* videoCodecHwAcceleration */ |
276 false, /* captureToToTexture */ | 279 false, /* captureToToTexture */ |
277 // Audio codec parameters. | 280 // Audio codec parameters. |
278 0, /* audioStartBitrate */ | 281 0, /* audioStartBitrate */ |
279 "OPUS", /* audioCodec */ | 282 "OPUS", /* audioCodec */ |
280 false, /* noAudioProcessing */ | 283 false, /* noAudioProcessing */ |
281 false, /* aecDump */ | 284 false, /* aecDump */ |
282 false /* useOpenSLES */, | 285 false /* useOpenSLES */, |
283 false /* disableBuiltInAEC */); | 286 false /* disableBuiltInAEC */); |
284 return peerConnectionParameters; | 287 return peerConnectionParameters; |
285 } | 288 } |
286 | 289 |
287 private PeerConnectionParameters createParametersForVideoCall( | 290 private PeerConnectionParameters createParametersForVideoCall( |
288 String videoCodec, boolean captureToTexture) { | 291 String videoCodec, boolean captureToTexture) { |
| 292 final boolean useCamera2 = captureToTexture && Camera2Enumerator.isSupported
(); |
| 293 |
289 PeerConnectionParameters peerConnectionParameters = | 294 PeerConnectionParameters peerConnectionParameters = |
290 new PeerConnectionParameters( | 295 new PeerConnectionParameters( |
291 true, /* videoCallEnabled */ | 296 true, /* videoCallEnabled */ |
292 true, /* loopback */ | 297 true, /* loopback */ |
293 false, /* tracing */ | 298 false, /* tracing */ |
294 // Video codec parameters. | 299 // Video codec parameters. |
| 300 useCamera2, /* useCamera2 */ |
295 0, /* videoWidth */ | 301 0, /* videoWidth */ |
296 0, /* videoHeight */ | 302 0, /* videoHeight */ |
297 0, /* videoFps */ | 303 0, /* videoFps */ |
298 0, /* videoStartBitrate */ | 304 0, /* videoStartBitrate */ |
299 videoCodec, /* videoCodec */ | 305 videoCodec, /* videoCodec */ |
300 true, /* videoCodecHwAcceleration */ | 306 true, /* videoCodecHwAcceleration */ |
301 captureToTexture, /* captureToToTexture */ | 307 captureToTexture, /* captureToToTexture */ |
302 // Audio codec parameters. | 308 // Audio codec parameters. |
303 0, /* audioStartBitrate */ | 309 0, /* audioStartBitrate */ |
304 "OPUS", /* audioCodec */ | 310 "OPUS", /* audioCodec */ |
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
654 assertTrue("Remote video frames were not rendered after capture format cha
nge.", | 660 assertTrue("Remote video frames were not rendered after capture format cha
nge.", |
655 remoteRenderer.waitForFramesRendered(WAIT_TIMEOUT)); | 661 remoteRenderer.waitForFramesRendered(WAIT_TIMEOUT)); |
656 } | 662 } |
657 | 663 |
658 pcClient.close(); | 664 pcClient.close(); |
659 assertTrue(waitForPeerConnectionClosed(WAIT_TIMEOUT)); | 665 assertTrue(waitForPeerConnectionClosed(WAIT_TIMEOUT)); |
660 Log.d(TAG, "testCaptureFormatChange done."); | 666 Log.d(TAG, "testCaptureFormatChange done."); |
661 } | 667 } |
662 | 668 |
663 } | 669 } |
OLD | NEW |