/*
* Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree.
*/
'use strict';
const DEFAULT_FRAME_RATE = 30;
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
var remoteVideo = document.getElementById('remoteVideo');
var startButton = document.getElementById('startButton');
startButton.onclick = start;
var pc1;
var pc2;
var stream;
function logError(err) {
console.error(err);
}
// This function draws a red rectangle on the canvas using
// requestAnimationFrame().
function draw() {
window.requestAnimationFrame(draw);
context.rect(0, 0, canvas.clientWidth, canvas.clientHeight);
var randomNumber = Math.random();
var hue;
if (randomNumber < 0.33) {
hue = 'red';
} else if (randomNumber < 0.66) {
hue = 'green';
} else {
hue = 'blue';
}
context.fillStyle = hue;
context.fill();
}
function start() {
startButton.onclick = hangup;
startButton.className = 'red';
startButton.innerHTML = 'Stop test';
draw();
stream = canvas.captureStream(DEFAULT_FRAME_RATE);
call();
}
function call() {
var servers = null;
pc1 = new RTCPeerConnection(servers);
pc1.onicecandidate = (event) => {
if (event.candidate) {
pc2.addIceCandidate(event.candidate);
}
};
pc2 = new RTCPeerConnection(servers);
pc2.onicecandidate = (event) => {
if (event.candidate) {
pc1.addIceCandidate(event.candidate);
}
};
pc2.onaddstream = (event) => {
remoteVideo.srcObject = event.stream;
};
pc1.addStream(stream);
pc1.createOffer({
offerToReceiveAudio: 1,
offerToReceiveVideo: 1
}).then(onCreateOfferSuccess, logError);
}
function onCreateOfferSuccess(desc) {
pc1.setLocalDescription(desc);
pc2.setRemoteDescription(desc);
pc2.createAnswer().then(onCreateAnswerSuccess, logError);
}
function onCreateAnswerSuccess(desc) {
pc2.setLocalDescription(desc);
pc1.setRemoteDescription(desc);
}
function hangup() {
pc1.close();
pc2.close();
pc1 = null;
pc2 = null;
startButton.onclick = start;
startButton.className = 'green';
startButton.innerHTML = 'Start test';
}