Skip to content

Commit 65fc4df

Browse files
rogurotusrainliu
authored andcommitted
sync set_sender
1 parent ab3a4f4 commit 65fc4df

File tree

11 files changed

+96
-113
lines changed

11 files changed

+96
-113
lines changed

webrtc/src/api/media_engine/media_engine_test.rs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -533,8 +533,7 @@ async fn test_media_engine_header_extension_direction() -> Result<()> {
533533
)?;
534534

535535
let params = m
536-
.get_rtp_parameters_by_kind(RTPCodecType::Audio, RTCRtpTransceiverDirection::Recvonly)
537-
.await;
536+
.get_rtp_parameters_by_kind(RTPCodecType::Audio, RTCRtpTransceiverDirection::Recvonly);
538537

539538
assert_eq!(params.header_extensions.len(), 1);
540539
}
@@ -552,8 +551,7 @@ async fn test_media_engine_header_extension_direction() -> Result<()> {
552551
)?;
553552

554553
let params = m
555-
.get_rtp_parameters_by_kind(RTPCodecType::Audio, RTCRtpTransceiverDirection::Recvonly)
556-
.await;
554+
.get_rtp_parameters_by_kind(RTPCodecType::Audio, RTCRtpTransceiverDirection::Recvonly);
557555

558556
assert_eq!(params.header_extensions.len(), 1);
559557
}
@@ -571,8 +569,7 @@ async fn test_media_engine_header_extension_direction() -> Result<()> {
571569
)?;
572570

573571
let params = m
574-
.get_rtp_parameters_by_kind(RTPCodecType::Audio, RTCRtpTransceiverDirection::Recvonly)
575-
.await;
572+
.get_rtp_parameters_by_kind(RTPCodecType::Audio, RTCRtpTransceiverDirection::Recvonly);
576573

577574
assert_eq!(params.header_extensions.len(), 0);
578575
}
@@ -590,8 +587,7 @@ async fn test_media_engine_header_extension_direction() -> Result<()> {
590587
)?;
591588

592589
let params = m
593-
.get_rtp_parameters_by_kind(RTPCodecType::Audio, RTCRtpTransceiverDirection::Inactive)
594-
.await;
590+
.get_rtp_parameters_by_kind(RTPCodecType::Audio, RTCRtpTransceiverDirection::Inactive);
595591

596592
assert_eq!(params.header_extensions.len(), 1);
597593
}
@@ -766,8 +762,7 @@ a=rtpmap:111 opus/48000/2
766762
assert!(!mid_video_enabled);
767763

768764
let params = m
769-
.get_rtp_parameters_by_kind(RTPCodecType::Video, RTCRtpTransceiverDirection::Sendonly)
770-
.await;
765+
.get_rtp_parameters_by_kind(RTPCodecType::Video, RTCRtpTransceiverDirection::Sendonly);
771766
dbg!(&params);
772767

773768
let orientation = params

webrtc/src/api/media_engine/mod.rs

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use std::collections::HashMap;
2222
use std::ops::Range;
2323
use std::sync::atomic::{AtomicBool, Ordering};
2424
use std::time::{SystemTime, UNIX_EPOCH};
25-
use tokio::sync::Mutex;
25+
use util::sync::Mutex as SyncMutex;
2626

2727
/// MIME_TYPE_H264 H264 MIME type.
2828
/// Note: Matching should be case insensitive.
@@ -87,12 +87,12 @@ pub struct MediaEngine {
8787

8888
pub(crate) video_codecs: Vec<RTCRtpCodecParameters>,
8989
pub(crate) audio_codecs: Vec<RTCRtpCodecParameters>,
90-
pub(crate) negotiated_video_codecs: Mutex<Vec<RTCRtpCodecParameters>>,
91-
pub(crate) negotiated_audio_codecs: Mutex<Vec<RTCRtpCodecParameters>>,
90+
pub(crate) negotiated_video_codecs: SyncMutex<Vec<RTCRtpCodecParameters>>,
91+
pub(crate) negotiated_audio_codecs: SyncMutex<Vec<RTCRtpCodecParameters>>,
9292

9393
header_extensions: Vec<MediaEngineHeaderExtension>,
94-
proposed_header_extensions: Mutex<HashMap<isize, MediaEngineHeaderExtension>>,
95-
pub(crate) negotiated_header_extensions: Mutex<HashMap<isize, MediaEngineHeaderExtension>>,
94+
proposed_header_extensions: SyncMutex<HashMap<isize, MediaEngineHeaderExtension>>,
95+
pub(crate) negotiated_header_extensions: SyncMutex<HashMap<isize, MediaEngineHeaderExtension>>,
9696
}
9797

9898
impl MediaEngine {
@@ -410,7 +410,7 @@ impl MediaEngine {
410410
&self,
411411
extension: RTCRtpHeaderExtensionCapability,
412412
) -> (isize, bool, bool) {
413-
let negotiated_header_extensions = self.negotiated_header_extensions.lock().await;
413+
let negotiated_header_extensions = self.negotiated_header_extensions.lock();
414414
if negotiated_header_extensions.is_empty() {
415415
return (0, false, false);
416416
}
@@ -440,15 +440,15 @@ impl MediaEngine {
440440
payload_type: PayloadType,
441441
) -> Result<(RTCRtpCodecParameters, RTPCodecType)> {
442442
{
443-
let negotiated_video_codecs = self.negotiated_video_codecs.lock().await;
443+
let negotiated_video_codecs = self.negotiated_video_codecs.lock();
444444
for codec in &*negotiated_video_codecs {
445445
if codec.payload_type == payload_type {
446446
return Ok((codec.clone(), RTPCodecType::Video));
447447
}
448448
}
449449
}
450450
{
451-
let negotiated_audio_codecs = self.negotiated_audio_codecs.lock().await;
451+
let negotiated_audio_codecs = self.negotiated_audio_codecs.lock();
452452
for codec in &*negotiated_audio_codecs {
453453
if codec.payload_type == payload_type {
454454
return Ok((codec.clone(), RTPCodecType::Audio));
@@ -534,8 +534,8 @@ impl MediaEngine {
534534
extension: &str,
535535
typ: RTPCodecType,
536536
) -> Result<()> {
537-
let mut negotiated_header_extensions = self.negotiated_header_extensions.lock().await;
538-
let mut propsed_header_extensions = self.proposed_header_extensions.lock().await;
537+
let mut negotiated_header_extensions = self.negotiated_header_extensions.lock();
538+
let mut propsed_header_extensions = self.proposed_header_extensions.lock();
539539

540540
for local_extension in &self.header_extensions {
541541
if local_extension.uri != extension {
@@ -581,10 +581,10 @@ impl MediaEngine {
581581
pub(crate) async fn push_codecs(&self, codecs: Vec<RTCRtpCodecParameters>, typ: RTPCodecType) {
582582
for codec in codecs {
583583
if typ == RTPCodecType::Audio {
584-
let mut negotiated_audio_codecs = self.negotiated_audio_codecs.lock().await;
584+
let mut negotiated_audio_codecs = self.negotiated_audio_codecs.lock();
585585
MediaEngine::add_codec(&mut negotiated_audio_codecs, codec);
586586
} else if typ == RTPCodecType::Video {
587-
let mut negotiated_video_codecs = self.negotiated_video_codecs.lock().await;
587+
let mut negotiated_video_codecs = self.negotiated_video_codecs.lock();
588588
MediaEngine::add_codec(&mut negotiated_video_codecs, codec);
589589
}
590590
}
@@ -646,17 +646,17 @@ impl MediaEngine {
646646
Ok(())
647647
}
648648

649-
pub(crate) async fn get_codecs_by_kind(&self, typ: RTPCodecType) -> Vec<RTCRtpCodecParameters> {
649+
pub(crate) fn get_codecs_by_kind(&self, typ: RTPCodecType) -> Vec<RTCRtpCodecParameters> {
650650
if typ == RTPCodecType::Video {
651651
if self.negotiated_video.load(Ordering::SeqCst) {
652-
let negotiated_video_codecs = self.negotiated_video_codecs.lock().await;
652+
let negotiated_video_codecs = self.negotiated_video_codecs.lock();
653653
negotiated_video_codecs.clone()
654654
} else {
655655
self.video_codecs.clone()
656656
}
657657
} else if typ == RTPCodecType::Audio {
658658
if self.negotiated_audio.load(Ordering::SeqCst) {
659-
let negotiated_audio_codecs = self.negotiated_audio_codecs.lock().await;
659+
let negotiated_audio_codecs = self.negotiated_audio_codecs.lock();
660660
negotiated_audio_codecs.clone()
661661
} else {
662662
self.audio_codecs.clone()
@@ -666,7 +666,7 @@ impl MediaEngine {
666666
}
667667
}
668668

669-
pub(crate) async fn get_rtp_parameters_by_kind(
669+
pub(crate) fn get_rtp_parameters_by_kind(
670670
&self,
671671
typ: RTPCodecType,
672672
direction: RTCRtpTransceiverDirection,
@@ -676,7 +676,7 @@ impl MediaEngine {
676676
if self.negotiated_video.load(Ordering::SeqCst) && typ == RTPCodecType::Video
677677
|| self.negotiated_audio.load(Ordering::SeqCst) && typ == RTPCodecType::Audio
678678
{
679-
let negotiated_header_extensions = self.negotiated_header_extensions.lock().await;
679+
let negotiated_header_extensions = self.negotiated_header_extensions.lock();
680680
for (id, e) in &*negotiated_header_extensions {
681681
if e.is_matching_direction(direction)
682682
&& (e.is_audio && typ == RTPCodecType::Audio
@@ -689,8 +689,8 @@ impl MediaEngine {
689689
}
690690
}
691691
} else {
692-
let mut proposed_header_extensions = self.proposed_header_extensions.lock().await;
693-
let mut negotiated_header_extensions = self.negotiated_header_extensions.lock().await;
692+
let mut proposed_header_extensions = self.proposed_header_extensions.lock();
693+
let mut negotiated_header_extensions = self.negotiated_header_extensions.lock();
694694

695695
for local_extension in &self.header_extensions {
696696
let relevant = local_extension.is_matching_direction(direction)
@@ -760,7 +760,7 @@ impl MediaEngine {
760760

761761
RTCRtpParameters {
762762
header_extensions,
763-
codecs: self.get_codecs_by_kind(typ).await,
763+
codecs: self.get_codecs_by_kind(typ),
764764
}
765765
}
766766

@@ -772,7 +772,7 @@ impl MediaEngine {
772772

773773
let mut header_extensions = vec![];
774774
{
775-
let negotiated_header_extensions = self.negotiated_header_extensions.lock().await;
775+
let negotiated_header_extensions = self.negotiated_header_extensions.lock();
776776
for (id, e) in &*negotiated_header_extensions {
777777
if e.is_audio && typ == RTPCodecType::Audio
778778
|| e.is_video && typ == RTPCodecType::Video

webrtc/src/api/setting_engine/setting_engine_test.rs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ async fn test_setting_engine_set_disable_media_engine_copy() -> Result<()> {
169169
// Assert that the MediaEngine the user created isn't modified
170170
assert!(!api.media_engine.negotiated_video.load(Ordering::SeqCst));
171171
{
172-
let negotiated_video_codecs = api.media_engine.negotiated_video_codecs.lock().await;
172+
let negotiated_video_codecs = api.media_engine.negotiated_video_codecs.lock();
173173
assert!(negotiated_video_codecs.is_empty());
174174
}
175175

@@ -184,8 +184,7 @@ async fn test_setting_engine_set_disable_media_engine_copy() -> Result<()> {
184184
.internal
185185
.media_engine
186186
.negotiated_video_codecs
187-
.lock()
188-
.await;
187+
.lock();
189188
assert!(!negotiated_video_codecs.is_empty());
190189
}
191190

@@ -204,8 +203,7 @@ async fn test_setting_engine_set_disable_media_engine_copy() -> Result<()> {
204203
.internal
205204
.media_engine
206205
.negotiated_video_codecs
207-
.lock()
208-
.await;
206+
.lock();
209207
assert!(!negotiated_video_codecs.is_empty());
210208
}
211209

@@ -220,8 +218,7 @@ async fn test_setting_engine_set_disable_media_engine_copy() -> Result<()> {
220218
.internal
221219
.media_engine
222220
.negotiated_video_codecs
223-
.lock()
224-
.await;
221+
.lock();
225222
assert!(negotiated_video_codecs.is_empty());
226223
}
227224

@@ -252,7 +249,7 @@ async fn test_setting_engine_set_disable_media_engine_copy() -> Result<()> {
252249
// Assert that the user MediaEngine was modified, so no copy happened
253250
assert!(api.media_engine.negotiated_video.load(Ordering::SeqCst));
254251
{
255-
let negotiated_video_codecs = api.media_engine.negotiated_video_codecs.lock().await;
252+
let negotiated_video_codecs = api.media_engine.negotiated_video_codecs.lock();
256253
assert!(!negotiated_video_codecs.is_empty());
257254
}
258255

@@ -271,8 +268,7 @@ async fn test_setting_engine_set_disable_media_engine_copy() -> Result<()> {
271268
.internal
272269
.media_engine
273270
.negotiated_video_codecs
274-
.lock()
275-
.await;
271+
.lock();
276272
assert!(!negotiated_video_codecs.is_empty());
277273
}
278274

webrtc/src/peer_connection/mod.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ impl RTCPeerConnection {
469469
None => return true, // doesn't contain a single a=msid line
470470
};
471471

472-
let sender = t.sender().await;
472+
let sender = t.sender();
473473
// (...)or the number of MSIDs from the a=msid lines in this m= section,
474474
// or the MSID values themselves, differ from what is in
475475
// transceiver.sender.[[AssociatedMediaStreamIds]], return true.
@@ -1585,8 +1585,8 @@ impl RTCPeerConnection {
15851585
pub(crate) async fn start_rtp_senders(&self) -> Result<()> {
15861586
let current_transceivers = self.internal.rtp_transceivers.lock().await;
15871587
for transceiver in &*current_transceivers {
1588-
let sender = transceiver.sender().await;
1589-
if sender.is_negotiated() && !sender.has_sent().await {
1588+
let sender = transceiver.sender();
1589+
if sender.is_negotiated() && !sender.has_sent() {
15901590
sender.send(&sender.get_parameters().await).await?;
15911591
}
15921592
}
@@ -1643,7 +1643,7 @@ impl RTCPeerConnection {
16431643
let mut senders = vec![];
16441644
let rtp_transceivers = self.internal.rtp_transceivers.lock().await;
16451645
for transceiver in &*rtp_transceivers {
1646-
let sender = transceiver.sender().await;
1646+
let sender = transceiver.sender();
16471647
senders.push(sender);
16481648
}
16491649
senders
@@ -1678,7 +1678,7 @@ impl RTCPeerConnection {
16781678
let rtp_transceivers = self.internal.rtp_transceivers.lock().await;
16791679
for t in &*rtp_transceivers {
16801680
if !t.stopped.load(Ordering::SeqCst) && t.kind == track.kind() {
1681-
let sender = t.sender().await;
1681+
let sender = t.sender();
16821682
if sender.track().await.is_none() {
16831683
if let Err(err) = sender.replace_track(Some(track)).await {
16841684
let _ = sender.stop().await;
@@ -1705,7 +1705,7 @@ impl RTCPeerConnection {
17051705
.add_rtp_transceiver(Arc::clone(&transceiver))
17061706
.await;
17071707

1708-
Ok(transceiver.sender().await)
1708+
Ok(transceiver.sender())
17091709
}
17101710

17111711
/// remove_track removes a Track from the PeerConnection
@@ -1718,7 +1718,7 @@ impl RTCPeerConnection {
17181718
{
17191719
let rtp_transceivers = self.internal.rtp_transceivers.lock().await;
17201720
for t in &*rtp_transceivers {
1721-
if t.sender().await.id == sender.id {
1721+
if t.sender().id == sender.id {
17221722
if sender.track().await.is_none() {
17231723
return Ok(());
17241724
}

webrtc/src/peer_connection/peer_connection_internal.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -666,7 +666,7 @@ impl PeerConnectionInternal {
666666
}
667667

668668
// TODO: This is dubious because of rollbacks.
669-
t.sender().await.set_negotiated();
669+
t.sender().set_negotiated();
670670
media_sections.push(MediaSection {
671671
id: t.mid().unwrap(),
672672
transceivers: vec![Arc::clone(t)],
@@ -755,7 +755,7 @@ impl PeerConnectionInternal {
755755
}
756756

757757
if let Some(t) = find_by_mid(mid_value, &mut local_transceivers).await {
758-
t.sender().await.set_negotiated();
758+
t.sender().set_negotiated();
759759
let media_transceivers = vec![t];
760760

761761
// NB: The below could use `then_some`, but with our current MSRV
@@ -780,7 +780,7 @@ impl PeerConnectionInternal {
780780
// If we are offering also include unmatched local transceivers
781781
if include_unmatched {
782782
for t in &local_transceivers {
783-
t.sender().await.set_negotiated();
783+
t.sender().set_negotiated();
784784
media_sections.push(MediaSection {
785785
id: t.mid().unwrap(),
786786
transceivers: vec![Arc::clone(t)],
@@ -1331,7 +1331,7 @@ impl PeerConnectionInternal {
13311331
}
13321332
let mut track_infos = vec![];
13331333
for transceiver in transceivers {
1334-
let sender = transceiver.sender().await;
1334+
let sender = transceiver.sender();
13351335

13361336
let mid = match transceiver.mid() {
13371337
Some(mid) => mid,

webrtc/src/peer_connection/sdp/mod.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,7 @@ pub(crate) async fn add_transceiver_sdp(
461461
}
462462
if codecs.is_empty() {
463463
// If we are sender and we have no codecs throw an error early
464-
if t.sender().await.track().await.is_some() {
464+
if t.sender().track().await.is_some() {
465465
return Err(Error::ErrSenderWithNoCodecs);
466466
}
467467

@@ -503,8 +503,7 @@ pub(crate) async fn add_transceiver_sdp(
503503
}
504504

505505
let parameters = media_engine
506-
.get_rtp_parameters_by_kind(t.kind, t.direction())
507-
.await;
506+
.get_rtp_parameters_by_kind(t.kind, t.direction());
508507
for rtp_extension in &parameters.header_extensions {
509508
let ext_url = Url::parse(rtp_extension.uri.as_str())?;
510509
media = media.with_extmap(sdp::extmap::ExtMap {
@@ -530,7 +529,7 @@ pub(crate) async fn add_transceiver_sdp(
530529
}
531530

532531
for mt in transceivers {
533-
let sender = mt.sender().await;
532+
let sender = mt.sender();
534533
if let Some(track) = sender.track().await {
535534
media = media.with_media_source(
536535
sender.ssrc,

0 commit comments

Comments
 (0)