diff --git a/webrtc/tools/loopback_test/loopback_test.html b/webrtc/tools/loopback_test/loopback_test.html index ea3fc2a8d0..83088d96b6 100644 --- a/webrtc/tools/loopback_test/loopback_test.html +++ b/webrtc/tools/loopback_test/loopback_test.html @@ -40,6 +40,7 @@
Duration (s):
Max video bitrate (kbps):
+Peer connection constraints:
Force TURN:
@@ -58,6 +59,7 @@ var forceTurnInput = document.getElementById('force-turn'); var launcherButton = document.getElementById('launcher-button'); var autoModeInput = document.createElement('input'); var testStatus = document.getElementById('test-status'); +var pcConstraintsInput = document.getElementById('pc-constraints'); launcherButton.onclick = start; @@ -77,6 +79,7 @@ durationInput.value = getURLParameter('duration', 10); maxVideoBitrateInput.value = getURLParameter('max-video-bitrate', 2000); forceTurnInput.checked = (getURLParameter('force-turn', 'true') === 'true'); autoModeInput.checked = (getURLParameter('auto-mode', 'false') === 'true'); +pcConstraintsInput.value = getURLParameter('pc-constraints', ''); if (autoModeInput.checked) start(); @@ -85,6 +88,7 @@ function start() { var maxVideoBitrateKbps = parseInt(maxVideoBitrateInput.value); var forceTurn = forceTurnInput.checked; var autoClose = autoModeInput.checked; + var pcConstraints = JSON.parse(pcConstraintsInput.value); var updateStatusInterval; var testFinished = false; @@ -126,7 +130,9 @@ function start() { function gotStream(stream) { updateStatus(); - var test = new LoopbackTest(stream, durationMs, forceTurn, + var test = new LoopbackTest(stream, durationMs, + forceTurn, + pcConstraints, maxVideoBitrateKbps); test.run(onTestFinished.bind(test)); } diff --git a/webrtc/tools/loopback_test/loopback_test.js b/webrtc/tools/loopback_test/loopback_test.js index 38cac57f28..5e596b7ff3 100644 --- a/webrtc/tools/loopback_test/loopback_test.js +++ b/webrtc/tools/loopback_test/loopback_test.js @@ -15,13 +15,20 @@ // // Usage: // var test = new LoopbackTest(stream, callDurationMs, -// forceTurn, maxVideoBitrateKbps); +// forceTurn, pcConstraints, +// maxVideoBitrateKbps); // test.run(onDone); // function onDone() { // test.getResults(); // return stats recorded during the loopback test. // } // -function LoopbackTest(stream, callDurationMs, forceTurn, maxVideoBitrateKbps) { +function LoopbackTest( + stream, + callDurationMs, + forceTurn, + pcConstraints, + maxVideoBitrateKbps) { + var pc1StatTracker; var pc2StatTracker; @@ -87,7 +94,7 @@ function LoopbackTest(stream, callDurationMs, forceTurn, maxVideoBitrateKbps) { function start(turnServer) { var pcConfig = forceTurn ? { iceServers: [turnServer] } : null; console.log(pcConfig); - var pc1 = new RTCPeerConnection(pcConfig); + var pc1 = new RTCPeerConnection(pcConfig, pcConstraints); constrainTurnCandidates(pc1); constrainOfferToRemoveFec(pc1); pc1StatTracker = new StatTracker(pc1, 50); @@ -100,7 +107,7 @@ function LoopbackTest(stream, callDurationMs, forceTurn, maxVideoBitrateKbps) { pc1StatTracker.recordStat("ActualEncodedBitrate", "bweforvideo", "googActualEncBitrate"); - var pc2 = new RTCPeerConnection(pcConfig); + var pc2 = new RTCPeerConnection(pcConfig, pcConstraints); constrainTurnCandidates(pc2); constrainBitrateAnswer(pc2); pc2StatTracker = new StatTracker(pc2, 50);