Merge branch 'master' of github.com:bigbluebutton/bigbluebutton into remove-logs

This commit is contained in:
Anton Georgiev 2019-01-23 22:06:30 +00:00
commit 812c1fb125
8 changed files with 63 additions and 30 deletions

2
bigbluebutton-client/resources/config.xml.template Normal file → Executable file
View 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="&#169; 2018 &lt;u&gt;&lt;a href=&quot;http://HOST/home.html&quot; target=&quot;_blank&quot;&gt;BigBlueButton Inc.&lt;/a&gt;&lt;/u&gt; (build {0})" background="" toolbarColor="" showQuote="true"/>
<branding logo="logos/logo.swf" copyright="&#169; 2019 &lt;u&gt;&lt;a href=&quot;http://HOST/home.html&quot; target=&quot;_blank&quot;&gt;BigBlueButton Inc.&lt;/a&gt;&lt;/u&gt; (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"

View File

@ -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";

View File

@ -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));
}

View File

@ -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>

View File

@ -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 (

View File

@ -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

View File

@ -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;

View File

@ -95,7 +95,7 @@ public:
height:
max: 480
enableScreensharing: false
enableVideo: false
enableVideo: true
enableVideoStats: false
enableListenOnly: false
autoShareWebcam: false