@@ -346,7 +346,6 @@ impl RTCRtpReceiver {
346
346
RTCRtpCodecCapability :: default ( )
347
347
} ;
348
348
349
- let mut tracks = vec ! [ ] ;
350
349
for encoding in & parameters. encodings {
351
350
let ( stream_info, rtp_read_stream, rtp_interceptor, rtcp_read_stream, rtcp_interceptor) =
352
351
if encoding. ssrc != 0 {
@@ -400,7 +399,10 @@ impl RTCRtpReceiver {
400
399
} ,
401
400
} ;
402
401
403
- tracks. push ( t) ;
402
+ {
403
+ let mut tracks = self . internal . tracks . lock ( ) . await ;
404
+ tracks. push ( t) ;
405
+ } ;
404
406
405
407
let rtx_ssrc = encoding. rtx . ssrc ;
406
408
if rtx_ssrc != 0 {
@@ -431,11 +433,6 @@ impl RTCRtpReceiver {
431
433
}
432
434
}
433
435
434
- {
435
- let mut internal_tracks = self . internal . tracks . lock ( ) . await ;
436
- internal_tracks. extend ( tracks) ;
437
- } ;
438
-
439
436
Ok ( ( ) )
440
437
}
441
438
@@ -574,9 +571,11 @@ impl RTCRtpReceiver {
574
571
) -> Result < Arc < TrackRemote > > {
575
572
let mut tracks = self . internal . tracks . lock ( ) . await ;
576
573
for t in & mut * tracks {
577
- if t. track . rid ( ) == rid && !params . codecs . is_empty ( ) {
574
+ if t. track . rid ( ) == rid {
578
575
t. track . set_kind ( self . kind ) ;
579
- t. track . set_codec ( params. codecs [ 0 ] . clone ( ) ) . await ;
576
+ if let Some ( codec) = params. codecs . first ( ) {
577
+ t. track . set_codec ( codec. clone ( ) ) . await ;
578
+ }
580
579
t. track . set_params ( params. clone ( ) ) . await ;
581
580
t. track
582
581
. set_ssrc ( stream. stream_info . as_ref ( ) . map_or ( 0 , |s| s. ssrc ) ) ;
0 commit comments