fix(migration): reject the data channel to restart it (#760)
* fix(migration): reject the data channel to restart it
Starting on chrome 63, an error occurs when renegotiating
with the new bridge on bridge migration when the SDP sections
do not match, which occurs when removing the data channel
section. Not doing the double renegotiate prevents the data
channel from being reopened. The way around this, while still
avoing the error, is to reject the data channel section instead
of removing it to trigger a new data channel.
* squash: reword comments
* Support layer suspension
Add support for a message which notifies the endpoint whether or not it
is selected (meaning its HD stream is in use). If it is not
selected and enableLayerSuspension is set to true then it will impose a
bandwidth limit in the SDP to suspend sending the higher layers.
* only add the IS_SELECTED_CHANGED listener in JingleSessionPC if layer
suspension is enabled
this prevents doing a local o/a when we don't need it
fix(migration): do not do double offer-answer for Chrome 63 and up (#755)
When switching bridges, removing the "data" section from the SDP
and doing a double offer-answer results in an error starting on
Chrome 63. So on 63 and up, do a single off-answer without
removing the "data" section.
Line no 194 : localTracks[i].stop(); to dispose(); (#750)
localTracks[i].stop();
As localTracks doesn't have stop function , coz of this line getting error and user was not able to left the room or unload
So changed it to :
localTracks[i].dispose();
The general idea is that, when we update/upgrade react-native in
jitsi-meet, it bumps flow-bin's version and we want to be consistent
across jitsi-meet & lib-jitsi-meet.
feat(recording): frontend logic can support live streaming and recording (#741)
* feat(recording): frontend logic can support live streaming and recording
Instead of either live streaming or recording, now both can live together.
The changes to facilitate such include the following:
- Remove the old recording.js module which allowed one recording at a time.
- Remove events for live stream url changes as the url is now part of a
sesssion and not fired independently.
- Availability of sipgw and recording are gone. Instead sessions have a
failure reason. For sipgw sessions, store that failure and emit it to
listeners.
- Create a new recordingManager singleton that can start/stop sessions
and handle updating known state of those sessions. Known state is
emitted through one event.
- Create a JibriSession model to encapsulate state of a session.
* update comments, use map to store sessions
* always pass in focusmucjid
* try to fix jibrisession docs and remove default null
feat: Exposes sending JSON payload through XMPP. (#723)
* feat: Exposes sending JSON payload through XMPP.
Incudes only the payload when firing events for JSON trannsported
through XMPP.
* squash: Addresses feedback.
* squash: Addresses more feedback.
fix(screensharing): set error type for cancelling extension install
When cancelling the prompt to install the extension, instead of
treating it as a generic error treat is as the cancel extension
error. This allows existing logic to trigger that will not show
an error message on cancel.
feat(recording): show the YouTube live stream URL (#736)
* feat(recording): show the YouTube live stream URL
- Pass you_tube_broadcast_id to Jibri so it can create a
YouTube link for the live stream.
- Emit the liveStreamViewURL (the YouTube link) when it
is received from the participant doing the recording.
* set member.liveStreamViewURL only when truthy
Will emit CONNECTION_ESTABLISHED event to fill up the gap where the lib
users are not able to tell whether or not the connection has been
established if there were no interrupted/restored events emitted.
Enables RTPStatsCollector for react-native. The getStats method was
supported long time ago, but the stats produced by the RTPStatsCollector
were not consumed. Now they are needed for the automated testing on RN.
Switches camera id to mandatory when using old gum flow. (#731)
* Switches camera id to mandatory when using old gum flow.
When it fails we retry with different resolutions, and if that doesn't work we remove device id and let gum to decide which device to use.
* Fixes comments.
* refactor packet2JSON to not use jquery
also added unit tests for it and switched to use chrome-headless instead
of phantomjs
* update package-lock
* squash: undo sha512 to sha1 conversion in package-lock
fix(edge): get p2p working up to ice failure (#720)
* fix(edge): get p2p working up to ice failure
Edge does not support trickle ice. In an attempt to work around
such, and get p2p working, some other work was needed to even
get to the point of ice failure. This is that some other work.
* squash: fix typos, no intermediary map
* squash: remove extra line break