webrtc_sys/
media_stream.rs1use crate::impl_thread_safety;
16
17#[cxx::bridge(namespace = "livekit_ffi")]
18pub mod ffi {
19 extern "C++" {
20 include!("livekit/helper.h");
21 include!("livekit/media_stream_track.h");
22 include!("livekit/audio_track.h");
23 include!("livekit/video_track.h");
24
25 type MediaStreamTrack = crate::media_stream_track::ffi::MediaStreamTrack;
26 type AudioTrack = crate::audio_track::ffi::AudioTrack;
27 type VideoTrack = crate::video_track::ffi::VideoTrack;
28 type VideoTrackPtr = crate::helper::ffi::VideoTrackPtr;
29 type AudioTrackPtr = crate::helper::ffi::AudioTrackPtr;
30 }
31
32 unsafe extern "C++" {
33 include!("livekit/media_stream.h");
34
35 type MediaStream;
36
37 fn id(self: &MediaStream) -> String;
38 fn get_audio_tracks(self: &MediaStream) -> Vec<AudioTrackPtr>;
39 fn get_video_tracks(self: &MediaStream) -> Vec<VideoTrackPtr>;
40 fn find_audio_track(self: &MediaStream, track_id: String) -> SharedPtr<AudioTrack>;
41 fn find_video_track(self: &MediaStream, track_id: String) -> SharedPtr<VideoTrack>;
42 fn add_track(self: &MediaStream, audio_track: SharedPtr<MediaStreamTrack>) -> bool;
43 fn remove_track(self: &MediaStream, audio_track: SharedPtr<MediaStreamTrack>) -> bool;
44
45 fn _shared_media_stream() -> SharedPtr<MediaStream>;
46 }
47}
48
49impl_thread_safety!(ffi::MediaStream, Send + Sync);