Skip to content

Commit 83877d5

Browse files
committed
fix rtp_receiver bug
1 parent 82ed14b commit 83877d5

File tree

1 file changed

+8
-9
lines changed
  • src/rtp_transceiver/rtp_receiver

1 file changed

+8
-9
lines changed

src/rtp_transceiver/rtp_receiver/mod.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,6 @@ impl RTCRtpReceiver {
346346
RTCRtpCodecCapability::default()
347347
};
348348

349-
let mut tracks = vec![];
350349
for encoding in &parameters.encodings {
351350
let (stream_info, rtp_read_stream, rtp_interceptor, rtcp_read_stream, rtcp_interceptor) =
352351
if encoding.ssrc != 0 {
@@ -400,7 +399,10 @@ impl RTCRtpReceiver {
400399
},
401400
};
402401

403-
tracks.push(t);
402+
{
403+
let mut tracks = self.internal.tracks.lock().await;
404+
tracks.push(t);
405+
};
404406

405407
let rtx_ssrc = encoding.rtx.ssrc;
406408
if rtx_ssrc != 0 {
@@ -431,11 +433,6 @@ impl RTCRtpReceiver {
431433
}
432434
}
433435

434-
{
435-
let mut internal_tracks = self.internal.tracks.lock().await;
436-
internal_tracks.extend(tracks);
437-
};
438-
439436
Ok(())
440437
}
441438

@@ -574,9 +571,11 @@ impl RTCRtpReceiver {
574571
) -> Result<Arc<TrackRemote>> {
575572
let mut tracks = self.internal.tracks.lock().await;
576573
for t in &mut *tracks {
577-
if t.track.rid() == rid && !params.codecs.is_empty() {
574+
if t.track.rid() == rid {
578575
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+
}
580579
t.track.set_params(params.clone()).await;
581580
t.track
582581
.set_ssrc(stream.stream_info.as_ref().map_or(0, |s| s.ssrc));

0 commit comments

Comments
 (0)