blob: 8839802134f183f83a098b3ad89b1d9c0b3c55da [file] [log] [blame]
// Copyright (c) 2014 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. An additional intellectual property rights grant can be found
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
//
var localStreams = [];
var remoteStreams = [];
function ping(callback) {
callback("pong");
}
function getUserMedia(constraints, onSuccessCallback, onFailCallback){
console.log("Getting user media.");
navigator.webkitGetUserMedia(constraints,
onSuccessCallbackWraper, onFailCallback);
function onSuccessCallbackWraper(stream) {
console.log("GetUserMedia success.");
localStreams[stream.id] = stream;
onSuccessCallback(stream);
}
}
function createPeerConnection(doneCallback, failCallback) {
console.log("Creating peer connection");
var obj = {};
var pc = new webkitRTCPeerConnection(null);
expose(obj, pc, "close");
expose(obj, pc, "createOffer");
expose(obj, pc, "createAnswer");
expose(obj, pc, "addEventListener");
expose(obj, pc, "addIceCandidate", { 0: RTCIceCandidate});
expose(obj, pc, "setRemoteDescription", { 0: RTCSessionDescription });
expose(obj, pc, "setLocalDescription", { 0: RTCSessionDescription });
obj.addStream = function(stream) {
console.log("Adding local stream.");
var tempStream = localStreams[stream.id];
if (!tempStream) {
console.log("Undefined stream!");
return;
}
pc.addStream(tempStream);
};
pc.addEventListener('addstream', function(event) {
remoteStreams[event.stream.id] = event.stream;
});
doneCallback(obj);
}
function showStream(streamId, autoplay, muted) {
var stream = getStreamFromIdentifier_(streamId);
var video = document.createElement('video');
video.autoplay = autoplay;
video.muted = muted;
document.body.appendChild(video);
video.src = URL.createObjectURL(stream);
console.log("Stream " + stream.id + " attached to video element");
};
function getStreamFromIdentifier_(id) {
var tempStream = localStreams[id];
if (tempStream)
return tempStream;
tempStream = remoteStreams[id];
if (tempStream)
return tempStream;
console.log(id + " is not id for stream.");
return null;
}
connectToServer({
ping: ping,
getUserMedia: getUserMedia,
createPeerConnection: createPeerConnection,
showStream: showStream,
});