@@ -202,8 +202,8 @@ func trackDetailsFromSDP(log logging.LeveledLogger, s *sdp.SessionDescription) (
202
202
id : trackID ,
203
203
rids : []string {},
204
204
}
205
- for rid := range rids {
206
- simulcastTrack .rids = append (simulcastTrack .rids , rid )
205
+ for _ , rid := range rids {
206
+ simulcastTrack .rids = append (simulcastTrack .rids , rid . id )
207
207
}
208
208
209
209
tracksInMediaSection = []trackDetails {simulcastTrack }
@@ -238,13 +238,13 @@ func trackDetailsToRTPReceiveParameters(t *trackDetails) RTPReceiveParameters {
238
238
return RTPReceiveParameters {Encodings : encodings }
239
239
}
240
240
241
- func getRids (media * sdp.MediaDescription ) map [ string ]* simulcastRid {
242
- rids := map [ string ]* simulcastRid {}
241
+ func getRids (media * sdp.MediaDescription ) [ ]* simulcastRid {
242
+ rids := [ ]* simulcastRid {}
243
243
var simulcastAttr string
244
244
for _ , attr := range media .Attributes {
245
245
if attr .Key == sdpAttributeRid {
246
246
split := strings .Split (attr .Value , " " )
247
- rids [ split [ 0 ]] = & simulcastRid {attrValue : attr .Value }
247
+ rids = append ( rids , & simulcastRid {id : split [ 0 ], attrValue : attr .Value })
248
248
} else if attr .Key == sdpAttributeSimulcast {
249
249
simulcastAttr = attr .Value
250
250
}
@@ -257,9 +257,12 @@ func getRids(media *sdp.MediaDescription) map[string]*simulcastRid {
257
257
ridStates := strings .Split (simulcastAttr , ";" )
258
258
for _ , ridState := range ridStates {
259
259
if ridState [:1 ] == "~" {
260
- rid := ridState [1 :]
261
- if r , ok := rids [rid ]; ok {
262
- r .paused = true
260
+ ridID := ridState [1 :]
261
+ for _ , rid := range rids {
262
+ if rid .id == ridID {
263
+ rid .paused = true
264
+ break
265
+ }
263
266
}
264
267
}
265
268
}
@@ -499,15 +502,16 @@ func addTransceiverSDP(
499
502
media .WithExtMap (sdp.ExtMap {Value : rtpExtension .ID , URI : extURL })
500
503
}
501
504
502
- if len (mediaSection .ridMap ) > 0 {
503
- recvRids := make ([]string , 0 , len (mediaSection .ridMap ))
505
+ if len (mediaSection .rids ) > 0 {
506
+ recvRids := make ([]string , 0 , len (mediaSection .rids ))
504
507
505
- for rid := range mediaSection .ridMap {
506
- media .WithValueAttribute (sdpAttributeRid , rid + " recv" )
507
- if mediaSection .ridMap [rid ].paused {
508
- rid = "~" + rid
508
+ for _ , rid := range mediaSection .rids {
509
+ ridID := rid .id
510
+ media .WithValueAttribute (sdpAttributeRid , ridID + " recv" )
511
+ if rid .paused {
512
+ ridID = "~" + ridID
509
513
}
510
- recvRids = append (recvRids , rid )
514
+ recvRids = append (recvRids , ridID )
511
515
}
512
516
// Simulcast
513
517
media .WithValueAttribute (sdpAttributeSimulcast , "recv " + strings .Join (recvRids , ";" ))
@@ -533,6 +537,7 @@ func addTransceiverSDP(
533
537
}
534
538
535
539
type simulcastRid struct {
540
+ id string
536
541
attrValue string
537
542
paused bool
538
543
}
@@ -542,7 +547,7 @@ type mediaSection struct {
542
547
transceivers []* RTPTransceiver
543
548
data bool
544
549
matchExtensions map [string ]int
545
- ridMap map [ string ]* simulcastRid
550
+ rids [ ]* simulcastRid
546
551
}
547
552
548
553
func bundleMatchFromRemote (matchBundleGroup * string ) func (mid string ) bool {
0 commit comments