Skip to content

Commit 741c1b0

Browse files
committed
Tracks are dropped only if input is required
1 parent 407d384 commit 741c1b0

3 files changed

Lines changed: 14 additions & 4 deletions

File tree

smelter-core/src/pipeline/webrtc/whep_input/input.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,11 @@ async fn init_whep_client(
189189
let video_sender = Arc::new(Mutex::new(video_sender));
190190
let audio_sender = Arc::new(Mutex::new(audio_sender));
191191

192-
// Drop senders if appropriate tracks do not come within 2 seconds.
193-
wait_for_tracks(video_sender.clone(), audio_sender.clone());
192+
// If the input is required, drop senders if appropriate tracks do not
193+
// come within 2 seconds.
194+
if queue_input.required() {
195+
wait_for_tracks(video_sender.clone(), audio_sender.clone());
196+
}
194197

195198
pc.on_track(move |track_ctx| {
196199
let ctx = WhepTrackContext::new(track_ctx, &ctx, &buffer);

smelter-core/src/pipeline/webrtc/whip_input/create_new_session.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,11 @@ pub(crate) async fn create_new_whip_session(
9595
let video_sender = Arc::new(Mutex::new(video_sender));
9696
let audio_sender = Arc::new(Mutex::new(audio_sender));
9797

98-
// Drop senders if appropriate tracks do not come within 2 seconds.
99-
wait_for_tracks(video_sender.clone(), audio_sender.clone());
98+
// If the input is required, drop senders if appropriate tracks do not
99+
// come within 2 seconds.
100+
if queue_input.required() {
101+
wait_for_tracks(video_sender.clone(), audio_sender.clone());
102+
}
100103

101104
peer_connection.on_track(move |track_ctx| {
102105
let ctx = WhipTrackContext::new(track_ctx, &state, &buffer);

smelter-core/src/queue/queue_input.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,10 @@ impl QueueInput {
277277
self.0.lock().unwrap().resume();
278278
}
279279

280+
pub fn required(&self) -> bool {
281+
self.0.lock().unwrap().required
282+
}
283+
280284
pub fn downgrade(&self) -> WeakQueueInput {
281285
WeakQueueInput(Arc::downgrade(&self.0))
282286
}

0 commit comments

Comments
 (0)