Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 <html> | 1 <html> |
| 2 <head> | 2 <head> |
| 3 <script type="text/javascript" src="webrtc_test_utilities.js"></script> | 3 <script type="text/javascript" src="webrtc_test_utilities.js"></script> |
| 4 <script type="text/javascript" src="webrtc_test_audio.js"></script> | 4 <script type="text/javascript" src="webrtc_test_audio.js"></script> |
| 5 <script type="text/javascript"> | 5 <script type="text/javascript"> |
| 6 $ = function(id) { | 6 $ = function(id) { |
| 7 return document.getElementById(id); | 7 return document.getElementById(id); |
| 8 }; | 8 }; |
| 9 | 9 |
| 10 var gFirstConnection = null; | 10 var gFirstConnection = null; |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 152 gSecondConnection.getRemoteStreams()[0].getAudioTracks()[0]); | 152 gSecondConnection.getRemoteStreams()[0].getAudioTracks()[0]); |
| 153 newStream.addTrack( | 153 newStream.addTrack( |
| 154 gSecondConnection.getRemoteStreams()[0].getVideoTracks()[0]); | 154 gSecondConnection.getRemoteStreams()[0].getVideoTracks()[0]); |
| 155 var videoElement = document.createElement('video'); | 155 var videoElement = document.createElement('video'); |
| 156 | 156 |
| 157 // No crash for this operation. | 157 // No crash for this operation. |
| 158 videoElement.src = URL.createObjectURL(newStream); | 158 videoElement.src = URL.createObjectURL(newStream); |
| 159 waitForVideo('remote-view-2'); | 159 waitForVideo('remote-view-2'); |
| 160 }); | 160 }); |
| 161 } | 161 } |
| 162 | 162 |
| 163 // Test that we can setup call with an audio and video track and | 163 // Test that we can setup call with an audio and video track and |
| 164 // simulate that the remote peer don't support MSID. | 164 // simulate that the remote peer don't support MSID. |
| 165 function callWithoutMsidAndBundle() { | 165 function callWithoutMsidAndBundle() { |
| 166 createConnections(null); | 166 createConnections(null); |
| 167 transformSdp = removeBundle; | 167 transformSdp = removeBundle; |
| 168 transformRemoteSdp = removeMsid; | 168 transformRemoteSdp = removeMsid; |
| 169 gTestWithoutMsid = true; | 169 gTestWithoutMsid = true; |
| 170 navigator.webkitGetUserMedia({audio: true, video: true}, | 170 navigator.webkitGetUserMedia({audio: true, video: true}, |
| 171 addStreamToBothConnectionsAndNegotiate, printGetUserMediaError); | 171 addStreamToBothConnectionsAndNegotiate, printGetUserMediaError); |
| 172 waitForVideo('remote-view-1'); | 172 waitForVideo('remote-view-1'); |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 318 function(offer) { | 318 function(offer) { |
| 319 assertEquals(-1, offer.sdp.search('m=audio')); | 319 assertEquals(-1, offer.sdp.search('m=audio')); |
| 320 assertNotEquals(-1, offer.sdp.search('m=video')); | 320 assertNotEquals(-1, offer.sdp.search('m=video')); |
| 321 | 321 |
| 322 reportTestSuccess(); | 322 reportTestSuccess(); |
| 323 }, | 323 }, |
| 324 function(error) { failTest(error); }, | 324 function(error) { failTest(error); }, |
| 325 offerOptions); | 325 offerOptions); |
| 326 } | 326 } |
| 327 | 327 |
| 328 function enableRemoteVideo(peerConnection, enabled) { | 328 function ensureAudioPlaying(beLenient) { |
| 329 remoteStream = peerConnection.getRemoteStreams()[0]; | 329 addExpectedEvent(); |
| 330 remoteVideoTrack = remoteStream.getVideoTracks()[0]; | |
| 331 remoteVideoTrack.enabled = enabled; | |
| 332 } | |
| 333 | 330 |
| 334 function enableRemoteAudio(peerConnection, enabled) { | 331 // Gather 50 samples per second for 2 seconds. |
| 335 remoteStream = peerConnection.getRemoteStreams()[0]; | 332 gatherAudioLevelSamples(gSecondConnection, 100, 50, function(samples) { |
| 336 remoteAudioTrack = remoteStream.getAudioTracks()[0]; | 333 verifyAudioIsPlaying(samples, beLenient); |
| 337 remoteAudioTrack.enabled = enabled; | 334 eventOccured(); |
| 335 }); | |
| 338 } | 336 } |
| 339 | 337 |
| 340 function callAndEnsureAudioIsPlaying(beLenient, constraints) { | 338 function callAndEnsureAudioIsPlaying(beLenient, constraints) { |
| 341 createConnections(null); | 339 createConnections(null); |
| 340 | |
| 341 // Add the local stream to gFirstConnection to play one-way audio. | |
| 342 navigator.webkitGetUserMedia(constraints, | 342 navigator.webkitGetUserMedia(constraints, |
| 343 addStreamToBothConnectionsAndNegotiate, printGetUserMediaError); | 343 addStreamToTheFirstConnectionAndNegotiate, printGetUserMediaError); |
| 344 | 344 |
| 345 // Wait until we have gathered samples and can conclude if audio is playing. | |
| 346 addExpectedEvent(); | |
| 347 var onCallEstablished = function() { | 345 var onCallEstablished = function() { |
| 348 // Gather 50 samples per second for 2 seconds. | 346 ensureAudioPlaying(beLenient); |
| 349 gatherAudioLevelSamples(gSecondConnection, 100, 50, function(samples) { | |
| 350 verifyAudioIsPlaying(samples, beLenient); | |
| 351 eventOccured(); | |
| 352 }); | |
| 353 }; | 347 }; |
| 354 | 348 |
| 355 waitForConnectionToStabilize(gFirstConnection, onCallEstablished); | 349 waitForConnectionToStabilize(gFirstConnection, onCallEstablished); |
| 356 } | 350 } |
| 357 | 351 |
| 358 function callAndEnsureAudioTrackMutingWorks(beLenient) { | 352 function enableRemoteVideo(peerConnection, enabled) { |
| 353 remoteStream = peerConnection.getRemoteStreams()[0]; | |
| 354 remoteStream.getVideoTracks()[0].enabled = enabled; | |
|
perkj_chrome
2014/08/14 08:53:41
nit add assert that stream 0 and video track 0 exi
phoglund_chromium
2014/08/25 09:41:45
I think that will be a lot of code that doesn't ma
perkj_chrome
2014/08/25 12:05:47
Acknowledged.
| |
| 355 } | |
| 356 | |
| 357 function enableRemoteAudio(peerConnection, enabled) { | |
| 358 remoteStream = peerConnection.getRemoteStreams()[0]; | |
| 359 remoteStream.getAudioTracks()[0].enabled = enabled; | |
| 360 } | |
| 361 | |
| 362 function enableLocalVideo(peerConnection, enabled) { | |
| 363 localStream = peerConnection.getLocalStreams()[0]; | |
| 364 localStream.getVideoTracks()[0].enabled = enabled; | |
| 365 } | |
| 366 | |
| 367 function enableLocalAudio(peerConnection, enabled) { | |
| 368 localStream = peerConnection.getLocalStreams()[0]; | |
| 369 localStream.getAudioTracks()[0].enabled = enabled; | |
| 370 } | |
| 371 | |
| 372 function ensureSilence() { | |
| 373 setTimeout(function() { | |
| 374 gatherAudioLevelSamples(gSecondConnection, 100, 50, function(samples) { | |
| 375 verifyIsSilent(samples); | |
| 376 reportTestSuccess(); | |
|
perkj_chrome
2014/08/14 08:53:41
Why reportTextSuccess? Why not add addExpectedEven
phoglund_chromium
2014/08/25 09:41:45
Done.
| |
| 377 }); | |
| 378 }, 500); | |
| 379 } | |
| 380 | |
| 381 function callAndEnsureRemoteAudioTrackMutingWorks(beLenient) { | |
| 359 callAndEnsureAudioIsPlaying(beLenient, {audio: true, video: true}); | 382 callAndEnsureAudioIsPlaying(beLenient, {audio: true, video: true}); |
| 360 setAllEventsOccuredHandler(function() { | 383 setAllEventsOccuredHandler(function() { |
| 361 // Call is up, now mute the track and check everything goes silent (give | 384 // Call is up, now mute the remote track and check we stop playing out |
| 362 // it a small delay though, we don't expect it to happen instantly). | 385 // audio (after a small delay, we don't expect it to happen instantly). |
| 363 enableRemoteAudio(gSecondConnection, false); | 386 enableRemoteAudio(gSecondConnection, false); |
| 364 | 387 ensureSilence(); |
|
perkj_chrome
2014/08/14 08:53:42
ie - change ensureSilence and call setAllEventsOcc
phoglund_chromium
2014/08/25 09:41:45
Done.
| |
| 365 setTimeout(function() { | |
| 366 gatherAudioLevelSamples(gSecondConnection, 100, 50, function(samples) { | |
| 367 verifyIsSilent(samples); | |
| 368 reportTestSuccess(); | |
| 369 }); | |
| 370 }, 500); | |
| 371 }); | 388 }); |
| 372 } | 389 } |
| 373 | 390 |
| 391 function callAndEnsureLocalAudioTrackMutingWorks(beLenient) { | |
| 392 callAndEnsureAudioIsPlaying(beLenient, {audio: true, video: true}); | |
| 393 setAllEventsOccuredHandler(function() { | |
| 394 // Call is up, now mute the local track of the sending side and ensure | |
| 395 // the receiving side stops receiving audio. | |
| 396 enableLocalAudio(gFirstConnection, false); | |
| 397 ensureSilence(); | |
| 398 }); | |
| 399 } | |
| 400 | |
| 374 function callAndEnsureAudioTrackUnmutingWorks(beLenient) { | 401 function callAndEnsureAudioTrackUnmutingWorks(beLenient) { |
| 375 callAndEnsureAudioIsPlaying(beLenient, {audio: true, video: true}); | 402 callAndEnsureAudioIsPlaying(beLenient, {audio: true, video: true}); |
| 376 setAllEventsOccuredHandler(function() { | 403 setAllEventsOccuredHandler(function() { |
| 377 // Mute, wait a while, unmute, verify audio gets back up. | 404 // Mute, wait a while, unmute, verify audio gets back up. |
| 378 // (Also, ensure video muting doesn't affect audio). | 405 // (Also, ensure video muting doesn't affect audio). |
| 379 enableRemoteAudio(gSecondConnection, false); | 406 enableRemoteAudio(gSecondConnection, false); |
| 380 enableRemoteVideo(gSecondConnection, false); | 407 enableRemoteVideo(gSecondConnection, false); |
| 381 | 408 |
| 382 setTimeout(function() { | 409 setTimeout(function() { |
| 383 enableRemoteAudio(gSecondConnection, true); | 410 enableRemoteAudio(gSecondConnection, true); |
| 384 }, 500); | 411 }, 500); |
| 385 | 412 |
| 386 setTimeout(function() { | 413 setTimeout(function() { |
| 387 // Sample for four seconds here; it can take a bit of time for audio to | 414 // Sample for four seconds here; it can take a bit of time for audio to |
| 388 // get back up after the unmute. | 415 // get back up after the unmute. |
| 389 gatherAudioLevelSamples(gSecondConnection, 200, 50, function(samples) { | 416 gatherAudioLevelSamples(gSecondConnection, 200, 50, function(samples) { |
| 390 verifyAudioIsPlaying(samples, beLenient); | 417 verifyAudioIsPlaying(samples, beLenient); |
| 391 reportTestSuccess(); | 418 reportTestSuccess(); |
| 392 }); | 419 }); |
| 393 }, 1500); | 420 }, 1500); |
| 394 }); | 421 }); |
| 395 } | 422 } |
| 396 | 423 |
| 424 function callAndEnsureLocalVideoMutingDoesntMuteAudio(beLenient) { | |
| 425 callAndEnsureAudioIsPlaying(beLenient, {audio: true, video: true}); | |
|
perkj_chrome
2014/08/14 08:53:42
The problem we had is that the media player expect
phoglund_chromium
2014/08/14 09:17:37
Yes. I tried that, and it repros, but the problem
| |
| 426 setAllEventsOccuredHandler(function() { | |
| 427 setAllEventsOccuredHandler(reportTestSuccess); | |
| 428 enableLocalVideo(gFirstConnection, false); | |
| 429 ensureAudioPlaying(beLenient); | |
| 430 }); | |
| 431 } | |
| 432 | |
| 433 function callAndEnsureRemoteVideoMutingDoesntMuteAudio(beLenient) { | |
| 434 callAndEnsureAudioIsPlaying(beLenient, {audio: true, video: true}); | |
| 435 setAllEventsOccuredHandler(function() { | |
| 436 setAllEventsOccuredHandler(reportTestSuccess); | |
| 437 enableRemoteVideo(gSecondConnection, false); | |
| 438 ensureAudioPlaying(beLenient); | |
| 439 }); | |
| 440 } | |
| 441 | |
| 397 function callAndEnsureVideoTrackMutingWorks() { | 442 function callAndEnsureVideoTrackMutingWorks() { |
| 398 createConnections(null); | 443 createConnections(null); |
| 399 navigator.webkitGetUserMedia({audio: true, video: true}, | 444 navigator.webkitGetUserMedia({audio: true, video: true}, |
| 400 addStreamToBothConnectionsAndNegotiate, printGetUserMediaError); | 445 addStreamToBothConnectionsAndNegotiate, printGetUserMediaError); |
| 401 | 446 |
| 402 addExpectedEvent(); | 447 addExpectedEvent(); |
| 403 detectVideoPlaying('remote-view-2', function() { | 448 detectVideoPlaying('remote-view-2', function() { |
| 404 // Disable the receiver's remote media stream. Video should stop. | 449 // Disable the receiver's remote media stream. Video should stop. |
| 405 // (Also, ensure muting audio doesn't affect video). | 450 // (Also, ensure muting audio doesn't affect video). |
| 406 enableRemoteVideo(gSecondConnection, false); | 451 enableRemoteVideo(gSecondConnection, false); |
| (...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 867 <body> | 912 <body> |
| 868 <table border="0"> | 913 <table border="0"> |
| 869 <tr> | 914 <tr> |
| 870 <td>Local Preview</td> | 915 <td>Local Preview</td> |
| 871 <td>Remote Stream for Connection 1</td> | 916 <td>Remote Stream for Connection 1</td> |
| 872 <td>Remote Stream for Connection 2</td> | 917 <td>Remote Stream for Connection 2</td> |
| 873 <td>Remote Stream for Connection 3</td> | 918 <td>Remote Stream for Connection 3</td> |
| 874 <td>Remote Stream for Connection 4</td> | 919 <td>Remote Stream for Connection 4</td> |
| 875 </tr> | 920 </tr> |
| 876 <tr> | 921 <tr> |
| 877 <td><video width="320" height="240" id="local-view" | 922 <td><video width="320" height="240" id="local-view" autoplay muted> |
| 878 autoplay="autoplay"></video></td> | 923 </video></td> |
| 879 <td><video width="320" height="240" id="remote-view-1" | 924 <td><video width="320" height="240" id="remote-view-1" autoplay> |
| 880 autoplay="autoplay"></video></td> | 925 </video></td> |
| 881 <td><video width="320" height="240" id="remote-view-2" | 926 <td><video width="320" height="240" id="remote-view-2" autoplay> |
| 882 autoplay="autoplay"></video></td> | 927 </video></td> |
| 883 <td><video width="320" height="240" id="remote-view-3" | 928 <td><video width="320" height="240" id="remote-view-3" autoplay> |
| 884 autoplay="autoplay"></video></td> | 929 </video></td> |
| 885 <td><video width="320" height="240" id="remote-view-4" | 930 <td><video width="320" height="240" id="remote-view-4" autoplay> |
| 886 autoplay="autoplay"></video></td> | 931 </video></td> |
| 887 <!-- Canvases are named after their corresponding video elements. --> | 932 <!-- Canvases are named after their corresponding video elements. --> |
| 888 <td><canvas width="320" height="240" id="remote-view-1-canvas" | 933 <td><canvas width="320" height="240" id="remote-view-1-canvas" |
| 889 style="display:none"></canvas></td> | 934 style="display:none"></canvas></td> |
| 890 <td><canvas width="320" height="240" id="remote-view-2-canvas" | 935 <td><canvas width="320" height="240" id="remote-view-2-canvas" |
| 891 style="display:none"></canvas></td> | 936 style="display:none"></canvas></td> |
| 892 <td><canvas width="320" height="240" id="remote-view-3-canvas" | 937 <td><canvas width="320" height="240" id="remote-view-3-canvas" |
| 893 style="display:none"></canvas></td> | 938 style="display:none"></canvas></td> |
| 894 <td><canvas width="320" height="240" id="remote-view-4-canvas" | 939 <td><canvas width="320" height="240" id="remote-view-4-canvas" |
| 895 style="display:none"></canvas></td> | 940 style="display:none"></canvas></td> |
| 896 </tr> | 941 </tr> |
| 897 </table> | 942 </table> |
| 898 </body> | 943 </body> |
| 899 </html> | 944 </html> |
| OLD | NEW |