From 9cd8e549796bdc6b4ed574c2f4afd7ed2f8338cd Mon Sep 17 00:00:00 2001 From: metamuffin Date: Fri, 9 Dec 2022 21:28:29 +0100 Subject: support for tracks --- client-native-lib/src/lib.rs | 3 ++- client-native-lib/src/peer.rs | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) (limited to 'client-native-lib/src') diff --git a/client-native-lib/src/lib.rs b/client-native-lib/src/lib.rs index 2e9aed4..1380688 100644 --- a/client-native-lib/src/lib.rs +++ b/client-native-lib/src/lib.rs @@ -35,6 +35,7 @@ pub struct Config { pub(crate) fn build_api() -> webrtc::api::API { let mut media_engine = MediaEngine::default(); media_engine.register_default_codecs().unwrap(); + let mut registry = Registry::new(); registry = register_default_interceptors(registry, &mut media_engine).unwrap(); APIBuilder::new() @@ -59,7 +60,7 @@ pub trait EventHandler: Send + Sync + 'static { resource: &ProvideInfo, channel: TransportChannel, ) -> DynFut<()>; - fn on_relay(&self, peer: Arc, message: &RelayMessage) -> DynFut<()> { + fn on_relay(&self, _peer: Arc, _message: &RelayMessage) -> DynFut<()> { Box::pin(async move {}) } } diff --git a/client-native-lib/src/peer.rs b/client-native-lib/src/peer.rs index 82c7c94..b271318 100644 --- a/client-native-lib/src/peer.rs +++ b/client-native-lib/src/peer.rs @@ -99,6 +99,34 @@ impl Peer { .await; } + { + let weak = Arc::::downgrade(&peer); + peer.peer_connection + .on_track(box move |track_remote, receiver| { + let receiver = receiver.unwrap(); + let track_remote = track_remote.unwrap(); + let peer = weak.upgrade().unwrap(); + Box::pin(async move { + let id = &track_remote.stream_id().await; + if let Some(res) = peer.remote_provided.read().await.get(id) { + info!("track for ({:?}) '{:?}'", res.id, res.label); + peer.inst + .event_handler + .resource_connected( + peer.clone(), + res, + TransportChannel::Track(track_remote), + ) + .await; + } else { + warn!("got unassociated track; stopping receiver"); + receiver.stop().await.unwrap(); + } + }) + }) + .await; + } + { let weak = Arc::::downgrade(&peer); peer.peer_connection -- cgit v1.2.3-70-g09d2