Essentially, the trackIDs identify a track and they are unique, but they are not guaranteed to match on both sides.
streamIDs identify a stream ("container" of tracks) and are not unique, but they are guaranteed to match on both sides.
mids identify a single transceiver/track and are not unique, but they are guaranteed to match on both sides.
Since we work on a track level and the trackID is not a sustainable option, we'll have to use mid based signaling. But since mids are not unique on their own, we'll have to use a combination of mid and some participant identifier (in our case deviceID). Then we would need to group mids that belong to a stream.
See the rationale in a discussion here: https://github.com/vector-im/voip-internal/discussions/79
trackID
s identify a track and they are unique, but they are not guaranteed to match on both sides.streamID
s identify a stream ("container" of tracks) and are not unique, but they are guaranteed to match on both sides.mid
s identify a single transceiver/track and are not unique, but they are guaranteed to match on both sides.Since we work on a track level and the
trackID
is not a sustainable option, we'll have to usemid
based signaling. But sincemid
s are not unique on their own, we'll have to use a combination ofmid
and some participant identifier (in our casedeviceID
). Then we would need to groupmid
s that belong to a stream.Use https://github.com/matrix-org/waterfall/pull/12/files as a reference on how it might have been implemented.