OLD | NEW |
(Empty) | |
| 1 /* |
| 2 * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. |
| 3 * |
| 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 |
| 6 * tree. |
| 7 */ |
| 8 |
| 9 'use strict'; |
| 10 |
| 11 const DEFAULT_FRAME_RATE = 30; |
| 12 |
| 13 var canvas = document.getElementById('canvas'); |
| 14 var context = canvas.getContext('2d'); |
| 15 |
| 16 var remoteVideo = document.getElementById('remoteVideo'); |
| 17 var startButton = document.getElementById('startButton'); |
| 18 startButton.onclick = start; |
| 19 |
| 20 var pc1; |
| 21 var pc2; |
| 22 var stream; |
| 23 |
| 24 function logError(err) { |
| 25 console.error(err); |
| 26 } |
| 27 |
| 28 // This function draws a red rectangle on the canvas using |
| 29 // requestAnimationFrame(). |
| 30 function draw() { |
| 31 window.requestAnimationFrame(draw); |
| 32 context.rect(0, 0, canvas.clientWidth, canvas.clientHeight); |
| 33 var randomNumber = Math.random(); |
| 34 var hue; |
| 35 if (randomNumber < 0.33) |
| 36 hue = 'red'; |
| 37 else if (randomNumber < 0.66) |
| 38 hue = 'green'; |
| 39 else |
| 40 hue = 'blue'; |
| 41 context.fillStyle = hue; |
| 42 context.fill(); |
| 43 } |
| 44 |
| 45 function start() { |
| 46 startButton.onclick = hangup; |
| 47 startButton.className = 'red'; |
| 48 startButton.innerHTML = 'Stop test'; |
| 49 draw(); |
| 50 stream = canvas.captureStream(DEFAULT_FRAME_RATE); |
| 51 call(); |
| 52 } |
| 53 |
| 54 function call() { |
| 55 var servers = null; |
| 56 pc1 = new RTCPeerConnection(servers); |
| 57 pc1.onicecandidate = (event) => { |
| 58 if (event.candidate) { |
| 59 pc2.addIceCandidate(event.candidate); |
| 60 } |
| 61 }; |
| 62 |
| 63 pc2 = new RTCPeerConnection(servers); |
| 64 pc2.onicecandidate = (event) => { |
| 65 if (event.candidate) { |
| 66 pc1.addIceCandidate(event.candidate); |
| 67 } |
| 68 }; |
| 69 pc2.onaddstream = (event) => { |
| 70 remoteVideo.srcObject = event.stream; |
| 71 }; |
| 72 |
| 73 pc1.addStream(stream); |
| 74 pc1.createOffer({ |
| 75 offerToReceiveAudio: 1, |
| 76 offerToReceiveVideo: 1 |
| 77 }).then(onCreateOfferSuccess, logError); |
| 78 } |
| 79 |
| 80 function onCreateOfferSuccess(desc) { |
| 81 pc1.setLocalDescription(desc); |
| 82 pc2.setRemoteDescription(desc); |
| 83 pc2.createAnswer().then(onCreateAnswerSuccess, logError); |
| 84 } |
| 85 |
| 86 function onCreateAnswerSuccess(desc) { |
| 87 pc2.setLocalDescription(desc); |
| 88 pc1.setRemoteDescription(desc); |
| 89 } |
| 90 |
| 91 function hangup() { |
| 92 pc1.close(); |
| 93 pc2.close(); |
| 94 pc1 = null; |
| 95 pc2 = null; |
| 96 startButton.onclick = start; |
| 97 startButton.className = 'green'; |
| 98 startButton.innerHTML = 'Start test'; |
| 99 } |
OLD | NEW |