Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(642)

Side by Side Diff: webrtc/tools/loopback_test/adapter.js

Issue 2965593002: Move webrtc/{tools => rtc_tools} (Closed)
Patch Set: Adding back root changes Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/tools/loopback_test/README ('k') | webrtc/tools/loopback_test/loopback_test.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /**
2 * Copyright (c) 2014 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. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 // This file is cloned from samples/js/base/adapter.js
12 // Modify the original and do new copy instead of doing changes here.
13
14 var RTCPeerConnection = null;
15 var getUserMedia = null;
16 var attachMediaStream = null;
17 var reattachMediaStream = null;
18 var webrtcDetectedBrowser = null;
19 var webrtcDetectedVersion = null;
20
21 function trace(text) {
22 // This function is used for logging.
23 if (text[text.length - 1] == '\n') {
24 text = text.substring(0, text.length - 1);
25 }
26 console.log((performance.now() / 1000).toFixed(3) + ": " + text);
27 }
28 function maybeFixConfiguration(pcConfig) {
29 if (pcConfig == null) {
30 return;
31 }
32 for (var i = 0; i < pcConfig.iceServers.length; i++) {
33 if (pcConfig.iceServers[i].hasOwnProperty('urls')){
34 pcConfig.iceServers[i]['url'] = pcConfig.iceServers[i]['urls'];
35 delete pcConfig.iceServers[i]['urls'];
36 }
37 }
38 }
39
40 if (navigator.mozGetUserMedia) {
41 console.log("This appears to be Firefox");
42
43 webrtcDetectedBrowser = "firefox";
44
45 webrtcDetectedVersion =
46 parseInt(navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1], 10);
47
48 // The RTCPeerConnection object.
49 var RTCPeerConnection = function(pcConfig, pcConstraints) {
50 // .urls is not supported in FF yet.
51 maybeFixConfiguration(pcConfig);
52 return new mozRTCPeerConnection(pcConfig, pcConstraints);
53 }
54
55 // The RTCSessionDescription object.
56 RTCSessionDescription = mozRTCSessionDescription;
57
58 // The RTCIceCandidate object.
59 RTCIceCandidate = mozRTCIceCandidate;
60
61 // Get UserMedia (only difference is the prefix).
62 // Code from Adam Barth.
63 getUserMedia = navigator.mozGetUserMedia.bind(navigator);
64 navigator.getUserMedia = getUserMedia;
65
66 // Creates iceServer from the url for FF.
67 createIceServer = function(url, username, password) {
68 var iceServer = null;
69 var url_parts = url.split(':');
70 if (url_parts[0].indexOf('stun') === 0) {
71 // Create iceServer with stun url.
72 iceServer = { 'url': url };
73 } else if (url_parts[0].indexOf('turn') === 0) {
74 if (webrtcDetectedVersion < 27) {
75 // Create iceServer with turn url.
76 // Ignore the transport parameter from TURN url for FF version <=27.
77 var turn_url_parts = url.split("?");
78 // Return null for createIceServer if transport=tcp.
79 if (turn_url_parts.length === 1 ||
80 turn_url_parts[1].indexOf('transport=udp') === 0) {
81 iceServer = {'url': turn_url_parts[0],
82 'credential': password,
83 'username': username};
84 }
85 } else {
86 // FF 27 and above supports transport parameters in TURN url,
87 // So passing in the full url to create iceServer.
88 iceServer = {'url': url,
89 'credential': password,
90 'username': username};
91 }
92 }
93 return iceServer;
94 };
95
96 createIceServers = function(urls, username, password) {
97 var iceServers = [];
98 // Use .url for FireFox.
99 for (i = 0; i < urls.length; i++) {
100 var iceServer = createIceServer(urls[i],
101 username,
102 password);
103 if (iceServer !== null) {
104 iceServers.push(iceServer);
105 }
106 }
107 return iceServers;
108 }
109
110 // Attach a media stream to an element.
111 attachMediaStream = function(element, stream) {
112 console.log("Attaching media stream");
113 element.mozSrcObject = stream;
114 element.play();
115 };
116
117 reattachMediaStream = function(to, from) {
118 console.log("Reattaching media stream");
119 to.mozSrcObject = from.mozSrcObject;
120 to.play();
121 };
122
123 // Fake get{Video,Audio}Tracks
124 if (!MediaStream.prototype.getVideoTracks) {
125 MediaStream.prototype.getVideoTracks = function() {
126 return [];
127 };
128 }
129
130 if (!MediaStream.prototype.getAudioTracks) {
131 MediaStream.prototype.getAudioTracks = function() {
132 return [];
133 };
134 }
135 } else if (navigator.webkitGetUserMedia) {
136 console.log("This appears to be Chrome");
137
138 webrtcDetectedBrowser = "chrome";
139 webrtcDetectedVersion =
140 parseInt(navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./)[2], 10);
141
142 // Creates iceServer from the url for Chrome M33 and earlier.
143 createIceServer = function(url, username, password) {
144 var iceServer = null;
145 var url_parts = url.split(':');
146 if (url_parts[0].indexOf('stun') === 0) {
147 // Create iceServer with stun url.
148 iceServer = { 'url': url };
149 } else if (url_parts[0].indexOf('turn') === 0) {
150 // Chrome M28 & above uses below TURN format.
151 iceServer = {'url': url,
152 'credential': password,
153 'username': username};
154 }
155 return iceServer;
156 };
157
158 // Creates iceServers from the urls for Chrome M34 and above.
159 createIceServers = function(urls, username, password) {
160 var iceServers = [];
161 if (webrtcDetectedVersion >= 34) {
162 // .urls is supported since Chrome M34.
163 iceServers = {'urls': urls,
164 'credential': password,
165 'username': username };
166 } else {
167 for (i = 0; i < urls.length; i++) {
168 var iceServer = createIceServer(urls[i],
169 username,
170 password);
171 if (iceServer !== null) {
172 iceServers.push(iceServer);
173 }
174 }
175 }
176 return iceServers;
177 };
178
179 // The RTCPeerConnection object.
180 var RTCPeerConnection = function(pcConfig, pcConstraints) {
181 // .urls is supported since Chrome M34.
182 if (webrtcDetectedVersion < 34) {
183 maybeFixConfiguration(pcConfig);
184 }
185 return new webkitRTCPeerConnection(pcConfig, pcConstraints);
186 }
187
188 // Get UserMedia (only difference is the prefix).
189 // Code from Adam Barth.
190 getUserMedia = navigator.webkitGetUserMedia.bind(navigator);
191 navigator.getUserMedia = getUserMedia;
192
193 // Attach a media stream to an element.
194 attachMediaStream = function(element, stream) {
195 if (typeof element.srcObject !== 'undefined') {
196 element.srcObject = stream;
197 } else if (typeof element.mozSrcObject !== 'undefined') {
198 element.mozSrcObject = stream;
199 } else if (typeof element.src !== 'undefined') {
200 element.src = URL.createObjectURL(stream);
201 } else {
202 console.log('Error attaching stream to element.');
203 }
204 };
205
206 reattachMediaStream = function(to, from) {
207 to.src = from.src;
208 };
209 } else {
210 console.log("Browser does not appear to be WebRTC-capable");
211 }
OLDNEW
« no previous file with comments | « webrtc/tools/loopback_test/README ('k') | webrtc/tools/loopback_test/loopback_test.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698