Skip to content

Commit 3cbcf98

Browse files
rogurotusrainliu
authored andcommitted
refactor trackRemote
1 parent cb6b842 commit 3cbcf98

File tree

3 files changed

+25
-23
lines changed

3 files changed

+25
-23
lines changed

webrtc/src/peer_connection/peer_connection_internal.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -179,14 +179,14 @@ impl PeerConnectionInternal {
179179
if let Some(details) =
180180
track_details_for_rid(&track_details, t.rid().to_owned())
181181
{
182-
t.set_id(details.id.clone()).await;
183-
t.set_stream_id(details.stream_id.clone()).await;
182+
t.set_id(details.id.clone());
183+
t.set_stream_id(details.stream_id.clone());
184184
continue;
185185
}
186186
} else if t.ssrc() != 0 {
187187
if let Some(details) = track_details_for_ssrc(&track_details, t.ssrc()) {
188-
t.set_id(details.id.clone()).await;
189-
t.set_stream_id(details.stream_id.clone()).await;
188+
t.set_id(details.id.clone());
189+
t.set_stream_id(details.stream_id.clone());
190190
continue;
191191
}
192192
}
@@ -1212,7 +1212,7 @@ impl PeerConnectionInternal {
12121212
let tracks = receiver.tracks().await;
12131213

12141214
for track in tracks {
1215-
let track_id = track.id().await;
1215+
let track_id = track.id();
12161216
let kind = match track.kind() {
12171217
RTPCodecType::Unspecified => continue,
12181218
RTPCodecType::Audio => "audio",

webrtc/src/rtp_transceiver/rtp_receiver/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -672,8 +672,8 @@ impl RTCRtpReceiver {
672672
// is received from the SDP.
673673
let is_unpaused = self.current_state() == State::Started;
674674
for track_remote in &self.tracks().await {
675-
track_remote.set_id(incoming.id.clone()).await;
676-
track_remote.set_stream_id(incoming.stream_id.clone()).await;
675+
track_remote.set_id(incoming.id.clone());
676+
track_remote.set_stream_id(incoming.stream_id.clone());
677677

678678
if is_unpaused {
679679
track_remote.fire_onunmute().await;

webrtc/src/track/track_remote/mod.rs

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ use std::pin::Pin;
1414
use std::sync::atomic::{AtomicU32, AtomicU8, AtomicUsize, Ordering};
1515
use std::sync::{Arc, Weak};
1616
use tokio::sync::Mutex;
17+
use util::sync::Mutex as SyncMutex;
18+
1719
use util::Unmarshal;
1820

1921
lazy_static! {
@@ -38,14 +40,14 @@ struct TrackRemoteInternal {
3840
pub struct TrackRemote {
3941
tid: usize,
4042

41-
id: Mutex<String>,
42-
stream_id: Mutex<String>,
43+
id: SyncMutex<String>,
44+
stream_id: SyncMutex<String>,
4345

4446
receive_mtu: usize,
4547
payload_type: AtomicU8, //PayloadType,
4648
kind: AtomicU8, //RTPCodecType,
4749
ssrc: AtomicU32, //SSRC,
48-
codec: Mutex<RTCRtpCodecParameters>,
50+
codec: SyncMutex<RTCRtpCodecParameters>,
4951
pub(crate) params: Mutex<RTCRtpParameters>,
5052
rid: String,
5153

@@ -110,24 +112,24 @@ impl TrackRemote {
110112
/// id is the unique identifier for this Track. This should be unique for the
111113
/// stream, but doesn't have to globally unique. A common example would be 'audio' or 'video'
112114
/// and StreamID would be 'desktop' or 'webcam'
113-
pub async fn id(&self) -> String {
114-
let id = self.id.lock().await;
115+
pub fn id(&self) -> String {
116+
let id = self.id.lock();
115117
id.clone()
116118
}
117119

118-
pub async fn set_id(&self, s: String) {
119-
let mut id = self.id.lock().await;
120+
pub fn set_id(&self, s: String) {
121+
let mut id = self.id.lock();
120122
*id = s;
121123
}
122124

123125
/// stream_id is the group this track belongs too. This must be unique
124-
pub async fn stream_id(&self) -> String {
125-
let stream_id = self.stream_id.lock().await;
126+
pub fn stream_id(&self) -> String {
127+
let stream_id = self.stream_id.lock();
126128
stream_id.clone()
127129
}
128130

129-
pub async fn set_stream_id(&self, s: String) {
130-
let mut stream_id = self.stream_id.lock().await;
131+
pub fn set_stream_id(&self, s: String) {
132+
let mut stream_id = self.stream_id.lock();
131133
*stream_id = s;
132134
}
133135

@@ -166,18 +168,18 @@ impl TrackRemote {
166168
}
167169

168170
/// msid gets the Msid of the track
169-
pub async fn msid(&self) -> String {
170-
self.stream_id().await + " " + self.id().await.as_str()
171+
pub fn msid(&self) -> String {
172+
format!("{} {}", self.stream_id(), self.id())
171173
}
172174

173175
/// codec gets the Codec of the track
174176
pub async fn codec(&self) -> RTCRtpCodecParameters {
175-
let codec = self.codec.lock().await;
177+
let codec = self.codec.lock();
176178
codec.clone()
177179
}
178180

179181
pub async fn set_codec(&self, codec: RTCRtpCodecParameters) {
180-
let mut c = self.codec.lock().await;
182+
let mut c = self.codec.lock();
181183
*c = codec;
182184
}
183185

@@ -256,7 +258,7 @@ impl TrackRemote {
256258
}
257259
self.payload_type.store(payload_type, Ordering::SeqCst);
258260
{
259-
let mut codec = self.codec.lock().await;
261+
let mut codec = self.codec.lock();
260262
*codec = if let Some(codec) = p.codecs.first() {
261263
codec.clone()
262264
} else {

0 commit comments

Comments
 (0)