In TraceablePeerConnection: we're no longer injecting a recvonly SSRC
when the local video track is muted, so it's normal that there is no
SSRC found in the local SDP when it's muted.
About RTPStatsCollector: at the time of adding this log statement a case
was missed when local audio track could be replaced in the P2P
connection when a new audio device is selected.
* fix(permissions): remove space from requesting camera
Chrome errors on querying permissions with "camera "
because it does not match an expected enum.
* fix(permissions): check value of returned PermissionStatus
A permissions query returns an object with a status/status
of whether or not permission has been granted. Check that
value in addition to the existence of the object.
* fix(permissions): prevent permission being set to undefined
* ref(permissions): move permissions strings to constants
fix(screenshare): defensively check for getDisplayMedia (#879)
jitsi-meet-spot currently supports mobile browsers. A
line should be drawn somewhere but maybe not here.
Chrome iOS does not have navigator.mediaDevices so add
a truthy check before checking for getDisplayMedia.
fix(screenshare): specify source type for fake and proxy (#878)
Spot is the consumer of screensharing using a camera
input and through a proxy connection. To differentiate
which one is active, declare a source type on the
created "desktop" stream.
fix(screenshare): do not limit resolution for fake screenshare (#877)
A camera source can be used as a screenshare source.
Normally for screenshare resolution is not capped and
the same will be true for the fake screenshare source.
feat(JitsiConference): delay the ICE failed notification
Because it's possible to go back from ICE FAILED state to CONNECTED it's
better to give it some time until the XMPP connection recovers and only
if they ICE does not recover in time send the ICE failed notification
to Jicofo. It's done by sending a ping to the XMPP server and checking
the ICE after 2 seconds past the ping successful response.
Make the client send ICE failed notification to let Jicofo know
that the ICE connection with the bridge has failed. It can then
re-create the channels and send new transport in the
'transport-replace' message to give it another try.
Also adds a bridge session ID so that Jicofo can discard outdated
requests. When a bridge dies multiple clients may send ICE failed
notifications at the same time. Jicofo will detect bridge failure
when processing the first one and it must not act on the following
requests for the broken bridge session which is no longer current.
A bridge session ID will be sent in new 'bridge-session' XML element
which is part of either 'session-initiate' or 'transport-replace'
message. The server's region is moved to this element as well as
it's part of a bridge session.
It should be provided by the environment, just like on web. This avoids bundling
callstats on web, where it won't be used (we dynamically download it).
This reduces the bundle size from about 1MB to 675KB, almost 40%.
feat(screenshare): support remote wireless screenshare (#857)
* feat(screenshare): support remote wireless screenshare
- ProxyConnectionService is exposed and meant to be the
facade for creating and updating a peer connection with
another peer, outside of the muc.
- ProxyConnectionPC wraps JingleSessionPC so the peer
connection handling can be reused.
* attempt to make more configurable
Fix: Old JitsiConference instance remains listening on incoming calls… (#858)
* Fix: Old JitsiConference instance remains listening on incoming calls after leave - rejoin to same room
* Remove all listeners added by setupXMPPListeners
feat(screenshare): use camera as a screenshare source
This feature is intended for spot. Spot can have an
HDMI -> usb adapter hooked up to it. In that case,
attempting to screenshare should use that adapter
as a screensharing source.
ref(JingleSessionPC): tear down remote streams state
Reset the state of remote MediaStreams in order to fix sequence number
synchronization problem. When a conference is moved to another bridge or
if channels are re-allocated the bridge looses the most recent sequence
number seen by the client which makes Chrome drop all video packets
until the JVB catches up with the sequence numbers (if at all).
Changes the behavior to actively open new WebRTC Data Channel instead
of waiting for the JVB to do it.
Adds ICE_RESTART_SUCCESS event used to re-initialize the data channel in
case of ICE restart where the conference could have been moved to
another bridge.
Handles private messages received by speakerstats component.
Updates speakers stats with values received by the spealerstats component, all the logic is activate only in case we discover speakerstats component address from disco-info and the incoming message is coming from that component.
When the main domain advertises component with type 'speakerstats' every participant will send message to the component with the name of the room where this happen.