Merge branch 'master' of github.com:bigbluebutton/bigbluebutton into remove-logs
This commit is contained in:
commit
812c1fb125
2
bigbluebutton-client/resources/config.xml.template
Normal file → Executable file
2
bigbluebutton-client/resources/config.xml.template
Normal file → Executable file
@ -11,7 +11,7 @@
|
||||
localesConfig="http://HOST/client/conf/locales.xml"
|
||||
localesDirectory="http://HOST/client/locale/"/>
|
||||
<skinning url="http://HOST/client/branding/css/V2Theme.css.swf?v=VERSION" />
|
||||
<branding logo="logos/logo.swf" copyright="© 2018 <u><a href="http://HOST/home.html" target="_blank">BigBlueButton Inc.</a></u> (build {0})" background="" toolbarColor="" showQuote="true"/>
|
||||
<branding logo="logos/logo.swf" copyright="© 2019 <u><a href="http://HOST/home.html" target="_blank">BigBlueButton Inc.</a></u> (build {0})" background="" toolbarColor="" showQuote="true"/>
|
||||
<shortcutKeys showButton="true" />
|
||||
<browserVersions chrome="CHROME_VERSION" firefox="FIREFOX_VERSION" flash="FLASH_VERSION"/>
|
||||
<layout showLogButton="false" defaultLayout="bbb.layout.name.defaultlayout"
|
||||
|
@ -2,7 +2,8 @@ const isFirefox = typeof window.InstallTrigger !== 'undefined';
|
||||
const isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
|
||||
const isChrome = !!window.chrome && !isOpera;
|
||||
const isSafari = navigator.userAgent.indexOf('Safari') >= 0 && !isChrome;
|
||||
const hasDisplayMedia = typeof navigator.getDisplayMedia === 'function';
|
||||
const hasDisplayMedia = (typeof navigator.getDisplayMedia === 'function'
|
||||
|| typeof navigator.mediaDevices.getDisplayMedia === 'function');
|
||||
const kurentoHandler = null;
|
||||
const SEND_ROLE = "send";
|
||||
const RECV_ROLE = "recv";
|
||||
|
@ -410,16 +410,24 @@ function WebRtcPeer(mode, options, callback) {
|
||||
return callback(error);
|
||||
constraints = [mediaConstraints];
|
||||
constraints.unshift(constraints_);
|
||||
if (typeof navigator.getDisplayMedia === 'function') {
|
||||
navigator.getDisplayMedia(recursive.apply(undefined, constraints)).then(stream => {
|
||||
stream.getTracks()[0].applyConstraints(constraints[0].optional).then(() => {
|
||||
let gDMCallback = function(stream) {
|
||||
stream.getTracks()[0].applyConstraints(constraints[0].optional)
|
||||
.then(() => {
|
||||
videoStream = stream;
|
||||
start();
|
||||
}).catch(() => {
|
||||
videoStream = stream;
|
||||
start();
|
||||
videoStream = stream;
|
||||
start();
|
||||
});
|
||||
}).catch(callback);
|
||||
}
|
||||
if (typeof navigator.getDisplayMedia === 'function') {
|
||||
navigator.getDisplayMedia(recursive.apply(undefined, constraints))
|
||||
.then(gDMCallback)
|
||||
.catch(callback);
|
||||
} else if (typeof navigator.mediaDevices.getDisplayMedia === 'function') {
|
||||
navigator.mediaDevices.getDisplayMedia(recursive.apply(undefined, constraints))
|
||||
.then(gDMCallback)
|
||||
.catch(callback);
|
||||
} else {
|
||||
getMedia(recursive.apply(undefined, constraints));
|
||||
}
|
||||
|
@ -56,6 +56,7 @@
|
||||
<form name="form1" method="GET" onsubmit="return checkform(this);" action="/demo/demoHTML5.jsp">
|
||||
<input type="text" id="username" required="" name="username" placeholder="Enter Your Name" size="29" class="field input-default" autofocus>
|
||||
<input type="submit" value="Join" class="submit_btn button success large"><br>
|
||||
<input type="hidden" name="isModerator" value="true">
|
||||
<input type="hidden" name="action" value="create">
|
||||
</form>
|
||||
|
||||
|
@ -3,7 +3,8 @@ const isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
|
||||
const isChrome = !!window.chrome && !isOpera;
|
||||
const isSafari = navigator.userAgent.indexOf('Safari') >= 0 && !isChrome;
|
||||
const isElectron = navigator.userAgent.toLowerCase().indexOf(' electron/') > -1;
|
||||
const hasDisplayMedia = typeof navigator.getDisplayMedia === 'function';
|
||||
const hasDisplayMedia = (typeof navigator.getDisplayMedia === 'function'
|
||||
|| typeof navigator.mediaDevices.getDisplayMedia === 'function');
|
||||
const kurentoHandler = null;
|
||||
|
||||
Kurento = function (
|
||||
|
@ -201,7 +201,7 @@ function WebRtcPeer(mode, options, callback) {
|
||||
pc.addTransceiver('video');
|
||||
} catch(e) {}
|
||||
}
|
||||
|
||||
|
||||
if (useDataChannels && !dataChannel) {
|
||||
var dcId = 'WebRtcPeer-' + self.id;
|
||||
var dcOptions = undefined;
|
||||
@ -267,16 +267,25 @@ function WebRtcPeer(mode, options, callback) {
|
||||
};
|
||||
this.generateOffer = function (callback) {
|
||||
callback = callback.bind(this);
|
||||
const descriptionCallback = () => {
|
||||
var localDescription = pc.localDescription;
|
||||
// logger.debug('Local description set', localDescription.sdp);
|
||||
if (multistream && usePlanB) {
|
||||
localDescription = interop.toUnifiedPlan(localDescription);
|
||||
logger.debug('offer::origPlanB->UnifiedPlan', dumpSDP(localDescription));
|
||||
}
|
||||
callback(null, localDescription.sdp, self.processAnswer.bind(self));
|
||||
}
|
||||
|
||||
pc.onicegatheringstatechange = function (event) {
|
||||
if(event.target.iceGatheringState == "complete") {
|
||||
var localDescription = pc.localDescription;
|
||||
// logger.debug('Local description set', localDescription.sdp);
|
||||
if (multistream && usePlanB) {
|
||||
localDescription = interop.toUnifiedPlan(localDescription);
|
||||
logger.debug('offer::origPlanB->UnifiedPlan', dumpSDP(localDescription));
|
||||
const userAgent = window.navigator.userAgent.toLocaleLowerCase();
|
||||
const isSafari = ((userAgent.indexOf('iphone') > -1 || userAgent.indexOf('ipad') > -1) || browser.name.toLowerCase() == 'safari');
|
||||
|
||||
// Bind the SDP release to the gathering state on Safari-based envs
|
||||
if (isSafari) {
|
||||
pc.onicegatheringstatechange = function (event) {
|
||||
if(event.target.iceGatheringState == "complete") {
|
||||
descriptionCallback();
|
||||
}
|
||||
callback(null, localDescription.sdp, self.processAnswer.bind(self));
|
||||
}
|
||||
}
|
||||
|
||||
@ -296,7 +305,13 @@ function WebRtcPeer(mode, options, callback) {
|
||||
// logger.debug('Created SDP offer');
|
||||
offer = mangleSdpToAddSimulcast(offer);
|
||||
return pc.setLocalDescription(offer);
|
||||
});
|
||||
}).then(() => {
|
||||
// The Safari offer release was already binded to the gathering state
|
||||
if (isSafari) {
|
||||
return;
|
||||
}
|
||||
descriptionCallback();
|
||||
}).catch(callback);
|
||||
};
|
||||
this.getLocalSessionDescriptor = function () {
|
||||
return pc.localDescription;
|
||||
@ -446,16 +461,24 @@ function WebRtcPeer(mode, options, callback) {
|
||||
return callback(error);
|
||||
constraints = [mediaConstraints];
|
||||
constraints.unshift(constraints_);
|
||||
if (typeof navigator.getDisplayMedia === 'function') {
|
||||
navigator.getDisplayMedia(recursive.apply(undefined, constraints)).then(stream => {
|
||||
stream.getTracks()[0].applyConstraints(constraints[0].optional).then(() => {
|
||||
let gDMCallback = function(stream) {
|
||||
stream.getTracks()[0].applyConstraints(constraints[0].optional)
|
||||
.then(() => {
|
||||
videoStream = stream;
|
||||
start();
|
||||
}).catch(() => {
|
||||
videoStream = stream;
|
||||
start();
|
||||
videoStream = stream;
|
||||
start();
|
||||
});
|
||||
}).catch(callback);
|
||||
}
|
||||
if (typeof navigator.getDisplayMedia === 'function') {
|
||||
navigator.getDisplayMedia(recursive.apply(undefined, constraints))
|
||||
.then(gDMCallback)
|
||||
.catch(callback);
|
||||
} else if (typeof navigator.mediaDevices.getDisplayMedia === 'function') {
|
||||
navigator.mediaDevices.getDisplayMedia(recursive.apply(undefined, constraints))
|
||||
.then(gDMCallback)
|
||||
.catch(callback);
|
||||
} else {
|
||||
getMedia(recursive.apply(undefined, constraints));
|
||||
}
|
||||
@ -1232,7 +1255,7 @@ if (typeof Object.create === 'function') {
|
||||
;(function(isNode) {
|
||||
|
||||
/**
|
||||
* Merge one or more objects
|
||||
* Merge one or more objects
|
||||
* @param bool? clone
|
||||
* @param mixed,... arguments
|
||||
* @return object
|
||||
@ -1245,7 +1268,7 @@ if (typeof Object.create === 'function') {
|
||||
}, publicName = 'merge';
|
||||
|
||||
/**
|
||||
* Merge two or more objects recursively
|
||||
* Merge two or more objects recursively
|
||||
* @param bool? clone
|
||||
* @param mixed,... arguments
|
||||
* @return object
|
||||
|
@ -146,7 +146,6 @@ class VideoPreview extends Component {
|
||||
|
||||
componentDidMount() {
|
||||
const { webcamDeviceId, changeWebcam } = this.props;
|
||||
const { webcamDeviceId: savedWebcamDeviceId } = this.state;
|
||||
const constraints = {
|
||||
video: VIDEO_CONSTRAINTS,
|
||||
};
|
||||
@ -174,7 +173,7 @@ class VideoPreview extends Component {
|
||||
this.setState({ availableWebcams: webcams });
|
||||
}
|
||||
|
||||
constraints.video.deviceId = { exact: savedWebcamDeviceId };
|
||||
constraints.video.deviceId = { exact: this.state.webcamDeviceId };
|
||||
navigator.mediaDevices.getUserMedia(constraints).then((stream) => {
|
||||
// display the preview
|
||||
this.video.srcObject = stream;
|
||||
|
@ -95,7 +95,7 @@ public:
|
||||
height:
|
||||
max: 480
|
||||
enableScreensharing: false
|
||||
enableVideo: false
|
||||
enableVideo: true
|
||||
enableVideoStats: false
|
||||
enableListenOnly: false
|
||||
autoShareWebcam: false
|
||||
|
Loading…
Reference in New Issue
Block a user