This commit changes the way the average stats are being reported to the
analytics backend. Instead of prefixes for the different scenarios
("p2p_", "jvb121_" and no prefix for multi-party calls) we now have
properties that allow to distinguish which scenario an event pertains
to. The query language of the analytics backend can be used to build
appropriate queries that group by those properties.
Additionally, we now report whether the average stats event concerns a
relayed call (a call that's routed via a TURN server) or not.
* ref: Moves the deployment info variables to config.js
instead of using globals.
* feat: If configured, adds the user's region to presence.
* fix: Guards against accessing undefined properties,
and uses the crossRegion variable from the config.
* style: Fixes formatting.
* ref(JSPC): simplify SSRC owner in P2P
There's no need for any extra extensions for SSRCs owner signalling in
P2P, because it's always the remote peer who owns them.
This also fixes a problem where no SSRC owner was added for 'source-add'
in P2P (for JVB conference Jicofo adds that).
* fix(TPC): always advertise 'sendrecv'
Our media direction is only ever updated on the remote side with
the initial offer (or answer). Because of that we want to advertise
'sendrecv' even if we start with no video (or audio) track.
It is OK to adjust this direction in the localDescription getter,
because it's adjusted again in the setter to the correct value based on
local tracks, so the SDP transformation chain still works fine.
feat(JingleSessionPC): add options for P2P evaluation
Add 'forceJVB121Ratio' config option which allows to enforce JVB
conference even if the P2P connection can be established. In such case
'forceJVB121' permanent analytics property will be added.
Will also set 'p2pFailed' analytics property to 'true' in case ICE fails
on the P2P connection.
Tries to batch as many reports as possible into single analytics event
and sends all of them under "avg.rtp.stats" event name.
Also converts dots to underscores in all of the stat names, because now
they become JSON keys where dots are not allowed.
fix(permission-prompt): increase timeout for displaying permission prompt
Firefox's getUserMedia can take longer than 500ms to complete. This
causes the permission prompt timeout to fire even if the user has
given permission to audio and video. There may not be a reliable
way right now to check if the user has given permission to both
audio and video so dumbly increase the timeout instead.
Reorders JitsiTrackEvents.TRACK_AUDIO_LEVEL_CHANGED event arguments by
putting TraceablePeerConnection at the end. This way it's easier to
treat it as "library internal".