Paweł Domas
7802bb09a1
Use media direction in P2P (#424)
* ref(p2p): use SDP 'inactive' for JVB
This commit gets rid of detach/attach logic and
replaces it with SDP media direction modification.
Now after switching to P2P instead of detaching local
tracks from the JVB peerconnection only the media direction
will be changed to 'inactive'. This will suspend media
transfer on the JVB connection.
It's meant to mitigate Chrome issue where it would randomly
choose to stop sending audio stream, after we modify it's
local SSRC.
* ref(SdpConsistency): cleanup 'recvonly'
Checking on 'recvonly' is no longer reliable way for detecting
whether video media is recvonly, because it can be set to
'inactive' at any point.
Added a check to make sure that the recvonly SSRC is not generated
more than once from '_createOfferOrAnswer'.
* log TPC instance
Logs the TraceablePeerConnection from LocalSdpMunger and
SdpConsistency as part of log messages. Given that there can be
2 TPCs at the same time it was hard to tell for which connection
a log message was printed.
* fix(SdpConsistency): depend on 'recvonly' direction
When createAnswer/createOffer returns SDP it will contain 'recvonly'
direction to reflect current media stream state even though we set
it to 'sendrecv' previously. Using 'hasAnyTracksOfType(VIDEO)' can
not be used to reliably detect 'recvonly' direction when doing video
mute, because muted video track is still in the TPC's map.
* doc(LocalSdpMunger): update description
LocalSdpMunger is currently used only for muted local video tracks.
* fix(P2P): enable P2P on Firefox
After 'detach/attach' is gone it seems that P2P works fine with Firefox.
* ref(TPC): simplify expression
* ref(SdpConsistency): do not pass whole TPC
There's no need to pass whole TPC instance if the only thing needed is
a logging prefix.