Delays e2e encryption initialization until any encryption key is set.
Recreates peerconnections in order to enable insertable streams
only if the e2ee is used. This is to avoid bug around insertable streams
which may cause audio issue when the main JavaScript thread is loaded:
https://bugs.chromium.org/p/chromium/issues/detail?id=1103280
feat: Set degradation preference on video senders (#1229)
* feat: Set degradation preference on video senders
Use 'maintain-framerate' for camera tracks and 'maintain-resolution' for desktop tracks
* ref: apply cached video contraints and degradation preference on unmute
Since the sender encodings are available only after the renegotiation is complete (on chrome/safari), constraints/preferences have to be applied after renegotiation is complete.
Refactors the way send/receive video constraints are managed and puts the high level
logic in a separate module. See QualityController.js for high level overview on how
the constraints are managed now.
Adds events to JitsiConference fired whenever it starts new jvb/p2p session.
Adds event to JingleSessionPC.js when remote party signals receive max frame height.
Also adds signaling of the local recv preference for the p2p mode(only existed for JVB).
* fix: Fix shuffling turn servers.
In the Fisher-Yates shuffle we want to choose 0 <= j <= i. The existing
implementation always swaps the two elements in a 2-element array.
* Initial impl of lobby rooms.
* Fixes tests to check the new fulljid added to MUC_MEMBER_JOINED.
* Updates few of the comments, renaming some functions.
* Renames disableLobby ChatRoom option to enableLobby.
* Fixes a comment.
* Moves setMembersOnly method to ChatRoom.
* Fixes counting members, to exclude jicofo.
* Moves setLobbyRoomJid earlier and renames a method.
Rename _maybeEnableDisable to maybeJoinLeaveLobbyRoom.
* Drops using custom roomconfig lobbypassword field and reuse room lock.
* Handles destroying the lobby room.
* Handles clear lobby room on destroy for moderators.
We do not try to leave the lobby room as it is server-side destroyed and we handle that. The only case of leaving a lobby room is when request to join room is being approved.
* Join main room if lobby is disabled while waiting.
* Adds MEMBERS_ONLY_CHANGED conference event.
* fix: Make sure we leave lobby if main room is joined.
* fix: Setting password when joining locked room.
* fix: Fixes case where we enable lobby for already locked room.
* fix: Fixes case where we enable lobby and then lock room.
* fix: Fixes lint.
* ref: Removes shared password for lobby.
This functionality is handled by the lock room password and handled there.
Removes duplication and unnecessary complicated API for lobby room.
* fix: Fixes comments.
Add RFC 4588 to the list of advertised features on Firefox.
Use RtxModifier only for cases when simulcast is achieved through SDP munging
This will ensure that RTX is negotiated whenever it is offered by the browser.
test: add a test for jingle to sdp conversion (#1151)
follow-up from #1146. Very high level but this should cover the relevant code paths.
The jingle offer was taken from a current focus offer with a few bits removed:
* ssrc-info element
* web-socket element inside transport
* rtcp-mux element inside transport
* bridge-session element
* bundle element (removed in focus already)
Switches from using JitsiConference.isJvbConnectionInterrupted
flag to peerconnection's ICE state. The interrupted
flag is not set if the connection fails initially.
Audio fails on Safari when we try to re-use audio m-lines whose direction has been set to 'inactive'
when the remote source left the conference.
Disable noisy mic detection on Safari as this causes audio input to fail on Safari on iPadOS
A new method which not only has Promise interface,
but also allows to queue IQs regardless of the current
connection's status.
Ping and send ICE failed notification requests are changed
to use this method which makes it more reliable on XMPP
Websocket connections on mobile(which in contrary to BOSH
dies much faster there).
feat(video-quality): control the sender resolution based on video quality settings (#1119)
* feat(video-quality): control the sender resolution based on video quality settings
* fix(video-quality): Apply the settings on newly created p2p/jvb jingle sessions
If a p2p/jvb session is not present when setSenderVideoConstraint is called,
make sure the settings are applied when they are created
fix(strophe.jingle.js): exception on ICE config modification
If ICE config object gets modified while there's any native
PeerConnection instance holding a reference, it will cause
an exception about final object being modified.
It happens when trying to reconnect XMPP Websocket on RN and
is caused by the fact that new TURN config is fetched after
the connection is re-established.
fix(xmpp): clear any last strophe errors on reconnect
If user experiences any failed reconnect during the entire
session, even if followed by a success, then
the "connectionFailed" flag will trigger
JitsiConnectionEvents.CONNECTION_FAILED on hang up while
processing the disconnected transition.
When modifying the room protection (setting or unsetting a password), the muc#roomconfig_passwordprotectedroom should always be defined. This fixes issue #512.