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"
|
localesConfig="http://HOST/client/conf/locales.xml"
|
||||||
localesDirectory="http://HOST/client/locale/"/>
|
localesDirectory="http://HOST/client/locale/"/>
|
||||||
<skinning url="http://HOST/client/branding/css/V2Theme.css.swf?v=VERSION" />
|
<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" />
|
<shortcutKeys showButton="true" />
|
||||||
<browserVersions chrome="CHROME_VERSION" firefox="FIREFOX_VERSION" flash="FLASH_VERSION"/>
|
<browserVersions chrome="CHROME_VERSION" firefox="FIREFOX_VERSION" flash="FLASH_VERSION"/>
|
||||||
<layout showLogButton="false" defaultLayout="bbb.layout.name.defaultlayout"
|
<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 isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
|
||||||
const isChrome = !!window.chrome && !isOpera;
|
const isChrome = !!window.chrome && !isOpera;
|
||||||
const isSafari = navigator.userAgent.indexOf('Safari') >= 0 && !isChrome;
|
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 kurentoHandler = null;
|
||||||
const SEND_ROLE = "send";
|
const SEND_ROLE = "send";
|
||||||
const RECV_ROLE = "recv";
|
const RECV_ROLE = "recv";
|
||||||
|
@ -410,16 +410,24 @@ function WebRtcPeer(mode, options, callback) {
|
|||||||
return callback(error);
|
return callback(error);
|
||||||
constraints = [mediaConstraints];
|
constraints = [mediaConstraints];
|
||||||
constraints.unshift(constraints_);
|
constraints.unshift(constraints_);
|
||||||
if (typeof navigator.getDisplayMedia === 'function') {
|
let gDMCallback = function(stream) {
|
||||||
navigator.getDisplayMedia(recursive.apply(undefined, constraints)).then(stream => {
|
stream.getTracks()[0].applyConstraints(constraints[0].optional)
|
||||||
stream.getTracks()[0].applyConstraints(constraints[0].optional).then(() => {
|
.then(() => {
|
||||||
videoStream = stream;
|
videoStream = stream;
|
||||||
start();
|
start();
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
videoStream = stream;
|
videoStream = stream;
|
||||||
start();
|
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 {
|
} else {
|
||||||
getMedia(recursive.apply(undefined, constraints));
|
getMedia(recursive.apply(undefined, constraints));
|
||||||
}
|
}
|
||||||
|
@ -56,6 +56,7 @@
|
|||||||
<form name="form1" method="GET" onsubmit="return checkform(this);" action="/demo/demoHTML5.jsp">
|
<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="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="submit" value="Join" class="submit_btn button success large"><br>
|
||||||
|
<input type="hidden" name="isModerator" value="true">
|
||||||
<input type="hidden" name="action" value="create">
|
<input type="hidden" name="action" value="create">
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
@ -3,7 +3,8 @@ const isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
|
|||||||
const isChrome = !!window.chrome && !isOpera;
|
const isChrome = !!window.chrome && !isOpera;
|
||||||
const isSafari = navigator.userAgent.indexOf('Safari') >= 0 && !isChrome;
|
const isSafari = navigator.userAgent.indexOf('Safari') >= 0 && !isChrome;
|
||||||
const isElectron = navigator.userAgent.toLowerCase().indexOf(' electron/') > -1;
|
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;
|
const kurentoHandler = null;
|
||||||
|
|
||||||
Kurento = function (
|
Kurento = function (
|
||||||
|
@ -201,7 +201,7 @@ function WebRtcPeer(mode, options, callback) {
|
|||||||
pc.addTransceiver('video');
|
pc.addTransceiver('video');
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (useDataChannels && !dataChannel) {
|
if (useDataChannels && !dataChannel) {
|
||||||
var dcId = 'WebRtcPeer-' + self.id;
|
var dcId = 'WebRtcPeer-' + self.id;
|
||||||
var dcOptions = undefined;
|
var dcOptions = undefined;
|
||||||
@ -267,16 +267,25 @@ function WebRtcPeer(mode, options, callback) {
|
|||||||
};
|
};
|
||||||
this.generateOffer = function (callback) {
|
this.generateOffer = function (callback) {
|
||||||
callback = callback.bind(this);
|
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) {
|
const userAgent = window.navigator.userAgent.toLocaleLowerCase();
|
||||||
if(event.target.iceGatheringState == "complete") {
|
const isSafari = ((userAgent.indexOf('iphone') > -1 || userAgent.indexOf('ipad') > -1) || browser.name.toLowerCase() == 'safari');
|
||||||
var localDescription = pc.localDescription;
|
|
||||||
// logger.debug('Local description set', localDescription.sdp);
|
// Bind the SDP release to the gathering state on Safari-based envs
|
||||||
if (multistream && usePlanB) {
|
if (isSafari) {
|
||||||
localDescription = interop.toUnifiedPlan(localDescription);
|
pc.onicegatheringstatechange = function (event) {
|
||||||
logger.debug('offer::origPlanB->UnifiedPlan', dumpSDP(localDescription));
|
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');
|
// logger.debug('Created SDP offer');
|
||||||
offer = mangleSdpToAddSimulcast(offer);
|
offer = mangleSdpToAddSimulcast(offer);
|
||||||
return pc.setLocalDescription(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 () {
|
this.getLocalSessionDescriptor = function () {
|
||||||
return pc.localDescription;
|
return pc.localDescription;
|
||||||
@ -446,16 +461,24 @@ function WebRtcPeer(mode, options, callback) {
|
|||||||
return callback(error);
|
return callback(error);
|
||||||
constraints = [mediaConstraints];
|
constraints = [mediaConstraints];
|
||||||
constraints.unshift(constraints_);
|
constraints.unshift(constraints_);
|
||||||
if (typeof navigator.getDisplayMedia === 'function') {
|
let gDMCallback = function(stream) {
|
||||||
navigator.getDisplayMedia(recursive.apply(undefined, constraints)).then(stream => {
|
stream.getTracks()[0].applyConstraints(constraints[0].optional)
|
||||||
stream.getTracks()[0].applyConstraints(constraints[0].optional).then(() => {
|
.then(() => {
|
||||||
videoStream = stream;
|
videoStream = stream;
|
||||||
start();
|
start();
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
videoStream = stream;
|
videoStream = stream;
|
||||||
start();
|
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 {
|
} else {
|
||||||
getMedia(recursive.apply(undefined, constraints));
|
getMedia(recursive.apply(undefined, constraints));
|
||||||
}
|
}
|
||||||
@ -1232,7 +1255,7 @@ if (typeof Object.create === 'function') {
|
|||||||
;(function(isNode) {
|
;(function(isNode) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Merge one or more objects
|
* Merge one or more objects
|
||||||
* @param bool? clone
|
* @param bool? clone
|
||||||
* @param mixed,... arguments
|
* @param mixed,... arguments
|
||||||
* @return object
|
* @return object
|
||||||
@ -1245,7 +1268,7 @@ if (typeof Object.create === 'function') {
|
|||||||
}, publicName = 'merge';
|
}, publicName = 'merge';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Merge two or more objects recursively
|
* Merge two or more objects recursively
|
||||||
* @param bool? clone
|
* @param bool? clone
|
||||||
* @param mixed,... arguments
|
* @param mixed,... arguments
|
||||||
* @return object
|
* @return object
|
||||||
|
@ -146,7 +146,6 @@ class VideoPreview extends Component {
|
|||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
const { webcamDeviceId, changeWebcam } = this.props;
|
const { webcamDeviceId, changeWebcam } = this.props;
|
||||||
const { webcamDeviceId: savedWebcamDeviceId } = this.state;
|
|
||||||
const constraints = {
|
const constraints = {
|
||||||
video: VIDEO_CONSTRAINTS,
|
video: VIDEO_CONSTRAINTS,
|
||||||
};
|
};
|
||||||
@ -174,7 +173,7 @@ class VideoPreview extends Component {
|
|||||||
this.setState({ availableWebcams: webcams });
|
this.setState({ availableWebcams: webcams });
|
||||||
}
|
}
|
||||||
|
|
||||||
constraints.video.deviceId = { exact: savedWebcamDeviceId };
|
constraints.video.deviceId = { exact: this.state.webcamDeviceId };
|
||||||
navigator.mediaDevices.getUserMedia(constraints).then((stream) => {
|
navigator.mediaDevices.getUserMedia(constraints).then((stream) => {
|
||||||
// display the preview
|
// display the preview
|
||||||
this.video.srcObject = stream;
|
this.video.srcObject = stream;
|
||||||
|
@ -95,7 +95,7 @@ public:
|
|||||||
height:
|
height:
|
||||||
max: 480
|
max: 480
|
||||||
enableScreensharing: false
|
enableScreensharing: false
|
||||||
enableVideo: false
|
enableVideo: true
|
||||||
enableVideoStats: false
|
enableVideoStats: false
|
||||||
enableListenOnly: false
|
enableListenOnly: false
|
||||||
autoShareWebcam: false
|
autoShareWebcam: false
|
||||||
|
Loading…
Reference in New Issue
Block a user