* ref(TraceablePeerConnection): rename var to what it is
* ref(ssrc info): get rid of 'ssrc' and 'group' roots
Removes 'ssrc' and 'group' root Objects from "ssrc info" structure.
Also removed redundant 'primarySSRC' from the group.
Do not split and join back and forth the SSRCs, but store them as
numbers.
* feat: add SdpTransformUtil
* ref(rtxModifier): rename "previousAssociatedRtxStream"
* ref(RtxModifier): use for .. of
* fix(SdpConsistency): organize imports
* fix(RtxModifier): organize imports
* ref(JitsiLocalTrack): simplify the expression
* extract MLineWrap (ongoing)
* ref(TPC.extractSSRCMap): some ES6 cleanup
* ref(RtxModifier): use template strings
* doc(SdpTransformUtil): update and fill missing
* ref(SdpTransformUtil): const, template strings
* style(TPC): object formatting
* ref(JitsiLocalTrack): simplify expression + syntax
* ref(TPC): more "extractSSRCMap" improvements
* ref(RtxModifier): const all the things
* ref(SdpConsistency): template strings
* ref(SdpTransformUtil): syntax + other
* doc(SdpConsistency): add throws description
* fix(TPC): broken "extractSSCMap"
* fix(JitsiConference): adopt to Map
* ref(SdpTransformUtil): remove forEachSSRCGroup and static methods
There's no reason to involve the ChatRoom directly into the generation
of remote stream added event. It merely provides some info carried in
the presence about muted state etc.
* re-enable setting for enabling/disabling rtx
* add tests for rtxmodifier. (and a bugfix found by the tests)
* remove rtx handling from sdp-consistency (it will be handled separately)
* better error printing in JingleSessionPC around renegotiation
* add rtx modifier to handle inserting local rtx ssrcs, keeping local rtx ssrcs consistent, and imploding remote rtx ssrcs
* jsdoc, es6 cleanup, logging tweaks
* fix line that's too long
* add a 'parseGroupSsrcs' helper function
* fix a bug when passing group ssrcs to be parsed
* address pr feedback
* address pr feedback
* fix for loop
* address pr feedback
* better const in SampleSdpStrings
Add 'replaceTrack' method to API, make all replace track operations local (use same ssrcs so no need for source-add/source-remove)
* M1: device change now uses new flow. fundamentally "works" but may be corner cases/side effects to other flows. haven't touched ffox yet
* M1a: fixed a bug where the ssrc info of the new stream wasn't being set correctly, causing problems with video mute/unmute
* M1b: fix firefox. changing camera, video mute/unmute looks good
* M1c: 'replaceStream' processing is not integrated with the same queue as all of the other o/a-related events.
* fix typo, some deprecated code cleanup
* move the rfc4145 fix to traceablepeerconnection::createanswer so both the new and old o/a flows leverage it. also cleanup some now-unused code and change more functions to arrow functions so we can get rid of 'var self = this' workarounds.
* get rid of separately-mainted local description in JingleSessionPC. keep TraceablePeerConnection as the source of truth for the local sdp and have JingleSessionPC retrieve it from there.
* change the code in the old modifySources shim to use the _renegotiate method so both old and new flows use that method.
* split out the remote change processing from the local change processing to better set us up for individual remote and local modification queues
* move the setOfferCycle flow off of the old shim and into the new flow. also removes the new for this this.jingleOfferIq member
* move addRemoteStream (nee addSource) to the new flow. gets rid of the need for the this.addssrc member.
* move remove remote stream over to the new flow. gets rid of the need for the this.removessrc member variable
* temporary '_processRemoteChange' method is no longer needed, as all remote changes are processed directly (rather than setting member variables and calling a catch-all method which checks each member to see what needs to be done)
* M2: add 'sdp-consistency' in an attempt to separate out the restoration of the same ssrcs (also requires the changes i've made to sdp-simulcast, currently in my brian/rework branch @90aceaddb1eec4d15026efac82c140579c7af2b3, as well as a commit in jitsi-meet to change the toggle-screenshare flows over to use the new 'replace' chain). as of this point video mute, change device and toggle screenshare all happen as local operatons. there is a bug when starting as video muted i need to look into, and i haven't checked firefox yet.
* fix the bug with start-as-video-muted (relies on commit f1d8d3c831 in brian/overual sdp-simulcast branch)
* some code cleanup, marked some TODO list items. got addStream off of the old shim and onto the new flow
* change removeStream over to the new flow and off of the shim. shim is now removed!
* fix a bug when muting a stream. remove some logic from addstream/removestream that i don't think makes sense, and move the source-remove parsing logic into a helper
* move the source-add/source-remove processing into the atomic queued operation since it looks at sdp.
* remove unused code used for old ssrc replacement logic
* get rid of the need for TraceablePeerConnection::addStreamNoSideEffects
* get rid of need for TraceablePeerConnection::removeStreamNoSideEffects
* distinguish XXXStream and XXXStreamToPeerConnection (was XXXStreamNoSideEffects)
* remove shim methods for add/removeRemoteStream
* fix a bug when adding local media for the first time
* replace the old 'dispose' method with the new one
* address feedback comments. update version of sdp-simulcast.
* update sdp-simulcast version
* add missing semicolons
* move sdpconsistency to es6 style
* restore JitsiConference::removeTrack, restore JitsiLocalTrack::dispose back to how it was (doing o/a if necessary)--we get around this on replace by not disposing the track until after we do the replace)
* change removeTrack and addTrack to leverage replaceStream
* fix removeTrack to return the promise, handle an already-disposed track
* add more documentation
* remove unnecessary semicolon
* update sdp-simulcast version
* address PR feedback
* remove usage of @type in method js docs
* address (more) pr feedback. upgrades to a new sdp-simulcast version which fixes an issue in smoke tests
* more PR feedback, and clean up the success/error handling done for the work functions.
* tweak the error propagation
Currently if RTCPeerConnection is closed (an event is delivered) and we haven't called close method ourselves, this means browser has closed it due to suspending the PC.