You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
3.2 KiB
76 lines
3.2 KiB
/*
|
|
* Copyright (c) 2016 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.
|
|
*/
|
|
/* eslint-env node */
|
|
'use strict';
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
|
|
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
|
|
|
exports.shimGetUserMedia = shimGetUserMedia;
|
|
|
|
var _utils = require('../utils');
|
|
|
|
var utils = _interopRequireWildcard(_utils);
|
|
|
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
|
|
|
function shimGetUserMedia(window) {
|
|
var browserDetails = utils.detectBrowser(window);
|
|
var navigator = window && window.navigator;
|
|
var MediaStreamTrack = window && window.MediaStreamTrack;
|
|
|
|
navigator.getUserMedia = function (constraints, onSuccess, onError) {
|
|
// Replace Firefox 44+'s deprecation warning with unprefixed version.
|
|
utils.deprecated('navigator.getUserMedia', 'navigator.mediaDevices.getUserMedia');
|
|
navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError);
|
|
};
|
|
|
|
if (!(browserDetails.version > 55 && 'autoGainControl' in navigator.mediaDevices.getSupportedConstraints())) {
|
|
var remap = function remap(obj, a, b) {
|
|
if (a in obj && !(b in obj)) {
|
|
obj[b] = obj[a];
|
|
delete obj[a];
|
|
}
|
|
};
|
|
|
|
var nativeGetUserMedia = navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);
|
|
navigator.mediaDevices.getUserMedia = function (c) {
|
|
if ((typeof c === 'undefined' ? 'undefined' : _typeof(c)) === 'object' && _typeof(c.audio) === 'object') {
|
|
c = JSON.parse(JSON.stringify(c));
|
|
remap(c.audio, 'autoGainControl', 'mozAutoGainControl');
|
|
remap(c.audio, 'noiseSuppression', 'mozNoiseSuppression');
|
|
}
|
|
return nativeGetUserMedia(c);
|
|
};
|
|
|
|
if (MediaStreamTrack && MediaStreamTrack.prototype.getSettings) {
|
|
var nativeGetSettings = MediaStreamTrack.prototype.getSettings;
|
|
MediaStreamTrack.prototype.getSettings = function () {
|
|
var obj = nativeGetSettings.apply(this, arguments);
|
|
remap(obj, 'mozAutoGainControl', 'autoGainControl');
|
|
remap(obj, 'mozNoiseSuppression', 'noiseSuppression');
|
|
return obj;
|
|
};
|
|
}
|
|
|
|
if (MediaStreamTrack && MediaStreamTrack.prototype.applyConstraints) {
|
|
var nativeApplyConstraints = MediaStreamTrack.prototype.applyConstraints;
|
|
MediaStreamTrack.prototype.applyConstraints = function (c) {
|
|
if (this.kind === 'audio' && (typeof c === 'undefined' ? 'undefined' : _typeof(c)) === 'object') {
|
|
c = JSON.parse(JSON.stringify(c));
|
|
remap(c, 'autoGainControl', 'mozAutoGainControl');
|
|
remap(c, 'noiseSuppression', 'mozNoiseSuppression');
|
|
}
|
|
return nativeApplyConstraints.apply(this, [c]);
|
|
};
|
|
}
|
|
}
|
|
}
|
|
|