Uses optional statsId to report to callstats and push it to presence. (#608)
* Uses optional statsId to report to callstats and push it to presence.
The feature is behind a flag which is disabled by default.
* Renames statsId to statsID.
* Fixes doc.
The default was still 360p if the option was missing from config.js. In
addition, move the logic outside of a browser check, so all browsers get
glorious HD by default.
ESLint 4.8.0 discovers a lot of error related to formatting. While I
tried to fix as many of them as possible, a portion of them actually go
against our coding style. In such a case, I've disabled the indent rule
which effectively leaves it as it was before ESLint 4.8.0.
detectChrome() detects the browser but then may throw an exception while
parsing its version. The exception could be reproduced by toggling the
device toolbar and instructing Chrome to identify as iPhone 6 Plus.
adapter.screenshare.js uses the variable requestUserMedia without
defining it. And that's a problem because it's packed in strict mode so
it will cause an error to be thrown at runtime which will fail
lib-jitsi-meet and, consequently, the whole app. As the variable
requestUserMedia appears to be global in certain browser, prevent the
use of the undefined variable without really changing the outcome of its
use.
Because the implementation of LocalStorage in jitsi-meet at the time
of this writing is asynchronous with respect to loading and saving,
delay the generation of machineId in order to allow LocalStorage to
load any previously saved value.
fix(moderator): clears session ID on 'non-acceptable'
Currently Jicofo does not include 'session-invalid' tag when there is
"machine ID" and "session ID" mismatch, but in such case the session-id
must be cleared as well. Otherwise we'll end up in an endless loop.
With JitsiAuthConnection the API consumer has to:
1. JitsiConference.createAuthenticationConnection,
2. JitsiAuthConnecition.authenticateAndUpgradeRole,
3. Wait on the Promise of 2,
4. Maybe cancel the JitsiAuthConnection of 1.
With authenticateAndUpgradeRole the API consumer has to:
1. JitsiConference.authenticateAndUpgradeRole,
2. Wait on the thenableWithCancel of 1.
3. Maybe cancel the thenableWithCancel of 1.
feat(tpc): enforce preferh264 when setting the local description
For p2p, we have to take preferh264 into account when setting the local description, since
that prefer is what will be received by the far side. if we only do it on the remote description,
like before this change, we'll never actually end up preferring h264.
ref(JitsiLocalTrack): get rid of 'setMutedInProgress'
The 'setMutedInProgress' flag is unreliable and it can lead to weird
situations when mute operation is in progress, but the removal from
JingleSessionPC is waiting on the queue. In such case LocalSdpMunger
will fake SDP even if the track is in the PeerConnection which may
confuse some parts of the SDP transformation chain.
For example RtxModifier will not attempt to inject Rtx group description
if it sees that the SSRC are already there. But it can happen that even
though the SSRCs are there they do not contain valid track ID, because
the track has changed.
The LocalSdpMunger is supposed to fake the SDP only when the video
MediaStream is not in the PeerConnection. So this commit implements just
that: a way to tell if JitsiLocalTrack's stream is currently in
the PeerConnection (added through TraceablePeerConnection).