Skip to content

Commit

Permalink
Fix simucalst track set to incorrect detail
Browse files Browse the repository at this point in the history
When there are more than one simucalst media lines in sdp,
we need check mid when parse detail for simulcast track.
  • Loading branch information
cnderrauber authored and davidzhao committed Apr 14, 2023
1 parent 303f204 commit 6114c27
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 2 deletions.
3 changes: 2 additions & 1 deletion peerconnection.go
Original file line number Diff line number Diff line change
Expand Up @@ -1340,14 +1340,15 @@ func (pc *PeerConnection) configureRTPReceivers(isRenegotiation bool, remoteDesc
continue
}

mid := t.Mid()
receiverNeedsStopped := false
func() {
for _, t := range tracks {
t.mu.Lock()
defer t.mu.Unlock()

if t.rid != "" {
if details := trackDetailsForRID(incomingTracks, t.rid); details != nil {
if details := trackDetailsForRID(incomingTracks, mid, t.rid); details != nil {
t.id = details.id
t.streamID = details.streamID
continue
Expand Down
6 changes: 5 additions & 1 deletion sdp.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,12 @@ func trackDetailsForSSRC(trackDetails []trackDetails, ssrc SSRC) *trackDetails {
return nil
}

func trackDetailsForRID(trackDetails []trackDetails, rid string) *trackDetails {
func trackDetailsForRID(trackDetails []trackDetails, mid, rid string) *trackDetails {
for i := range trackDetails {
if trackDetails[i].mid != mid {
continue
}

for j := range trackDetails[i].rids {
if trackDetails[i].rids[j] == rid {
return &trackDetails[i]
Expand Down

0 comments on commit 6114c27

Please sign in to comment.