FS-10285: [verto.js] Device enumeration in Edge #resolve
This commit is contained in:
parent
d5b44cc12d
commit
eafdc9d75b
File diff suppressed because one or more lines are too long
|
@ -1054,6 +1054,7 @@
|
||||||
video: check_video,
|
video: check_video,
|
||||||
},
|
},
|
||||||
onsuccess: function(e) {
|
onsuccess: function(e) {
|
||||||
|
|
||||||
e.getTracks().forEach(function(track) {track.stop();});
|
e.getTracks().forEach(function(track) {track.stop();});
|
||||||
|
|
||||||
console.info("media perm init complete");
|
console.info("media perm init complete");
|
||||||
|
|
|
@ -2715,52 +2715,32 @@
|
||||||
var checkDevices = function(runtime) {
|
var checkDevices = function(runtime) {
|
||||||
console.info("enumerating devices");
|
console.info("enumerating devices");
|
||||||
var aud_in = [], aud_out = [], vid = [];
|
var aud_in = [], aud_out = [], vid = [];
|
||||||
|
var has_video = 0, has_audio = 0;
|
||||||
|
var Xstream;
|
||||||
|
|
||||||
if ((!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) && MediaStreamTrack.getSources) {
|
function gotDevices(deviceInfos) {
|
||||||
MediaStreamTrack.getSources(function (media_sources) {
|
// Handles being called several times to update labels. Preserve values.
|
||||||
for (var i = 0; i < media_sources.length; i++) {
|
for (var i = 0; i !== deviceInfos.length; ++i) {
|
||||||
|
var deviceInfo = deviceInfos[i];
|
||||||
|
var text = "";
|
||||||
|
|
||||||
if (media_sources[i].kind == 'video') {
|
console.log(deviceInfo);
|
||||||
vid.push(media_sources[i]);
|
console.log(deviceInfo.kind + ": " + deviceInfo.label + " id = " + deviceInfo.deviceId);
|
||||||
|
|
||||||
|
if (deviceInfo.kind === 'audioinput') {
|
||||||
|
text = deviceInfo.label || 'microphone ' + (aud_in.length + 1);
|
||||||
|
aud_in.push({id: deviceInfo.deviceId, kind: "audio_in", label: text});
|
||||||
|
} else if (deviceInfo.kind === 'audiooutput') {
|
||||||
|
text = deviceInfo.label || 'speaker ' + (aud_out.length + 1);
|
||||||
|
aud_out.push({id: deviceInfo.deviceId, kind: "audio_out", label: text});
|
||||||
|
} else if (deviceInfo.kind === 'videoinput') {
|
||||||
|
text = deviceInfo.label || 'camera ' + (vid.length + 1);
|
||||||
|
vid.push({id: deviceInfo.deviceId, kind: "video", label: text});
|
||||||
} else {
|
} else {
|
||||||
aud_in.push(media_sources[i]);
|
console.log('Some other kind of source/device: ', deviceInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$.verto.videoDevices = vid;
|
|
||||||
$.verto.audioInDevices = aud_in;
|
|
||||||
|
|
||||||
console.info("Audio Devices", $.verto.audioInDevices);
|
|
||||||
console.info("Video Devices", $.verto.videoDevices);
|
|
||||||
runtime(true);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
/* of course it's a totally different API CALL with different element names for the same exact thing */
|
|
||||||
|
|
||||||
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
|
|
||||||
console.log("enumerateDevices() not supported.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// List cameras and microphones.
|
|
||||||
|
|
||||||
navigator.mediaDevices.enumerateDevices()
|
|
||||||
.then(function(devices) {
|
|
||||||
devices.forEach(function(device) {
|
|
||||||
console.log(device);
|
|
||||||
|
|
||||||
console.log(device.kind + ": " + device.label +
|
|
||||||
" id = " + device.deviceId);
|
|
||||||
|
|
||||||
if (device.kind === "videoinput") {
|
|
||||||
vid.push({id: device.deviceId, kind: "video", label: device.label});
|
|
||||||
} else if (device.kind === "audioinput") {
|
|
||||||
aud_in.push({id: device.deviceId, kind: "audio_in", label: device.label});
|
|
||||||
} else if (device.kind === "audiooutput") {
|
|
||||||
aud_out.push({id: device.deviceId, kind: "audio_out", label: device.label});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
$.verto.videoDevices = vid;
|
$.verto.videoDevices = vid;
|
||||||
$.verto.audioInDevices = aud_in;
|
$.verto.audioInDevices = aud_in;
|
||||||
|
@ -2769,15 +2749,49 @@
|
||||||
console.info("Audio IN Devices", $.verto.audioInDevices);
|
console.info("Audio IN Devices", $.verto.audioInDevices);
|
||||||
console.info("Audio Out Devices", $.verto.audioOutDevices);
|
console.info("Audio Out Devices", $.verto.audioOutDevices);
|
||||||
console.info("Video Devices", $.verto.videoDevices);
|
console.info("Video Devices", $.verto.videoDevices);
|
||||||
runtime(true);
|
|
||||||
|
|
||||||
})
|
if (Xstream) {
|
||||||
.catch(function(err) {
|
Xstream.getTracks().forEach(function(track) {track.stop();});
|
||||||
console.log(" Device Enumeration ERROR: " + err.name + ": " + err.message);
|
|
||||||
runtime(false);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (runtime) {
|
||||||
|
runtime(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function handleError(error) {
|
||||||
|
console.log('device enumeration error: ', error);
|
||||||
|
if (runtime) runtime(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function checkTypes(devs) {
|
||||||
|
for (var i = 0; i !== devs.length; ++i) {
|
||||||
|
console.error(i, devs[i].kind);
|
||||||
|
if (devs[i].kind === 'audioinput') {
|
||||||
|
has_audio++;
|
||||||
|
} else if (devs[i].kind === 'videoinput') {
|
||||||
|
has_video++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.error("BLAH: ", has_audio, has_video);;
|
||||||
|
|
||||||
|
navigator.getUserMedia({ audio: (has_audio > 0 ? true : false), video: (has_video > 0 ? true : false)},
|
||||||
|
function(stream) {
|
||||||
|
Xstream = stream;
|
||||||
|
navigator.mediaDevices.enumerateDevices().then(gotDevices).catch(handleError);
|
||||||
|
},
|
||||||
|
function(err) {
|
||||||
|
console.log("The following error occurred: " + err.name);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
navigator.mediaDevices.enumerateDevices().then(checkTypes).catch(handleError);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
$.verto.refreshDevices = function(runtime) {
|
$.verto.refreshDevices = function(runtime) {
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1029,6 +1029,8 @@ function pop_select(id, cname, dft, onchange) {
|
||||||
function refresh_devices()
|
function refresh_devices()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
$.verto.refreshDevices();
|
||||||
|
|
||||||
$("#useshare").selectmenu({});
|
$("#useshare").selectmenu({});
|
||||||
$("#useshare").selectmenu({});
|
$("#useshare").selectmenu({});
|
||||||
$("#usemic").selectmenu({});
|
$("#usemic").selectmenu({});
|
||||||
|
|
Loading…
Reference in New Issue