1 pub mod track_local; 2 pub mod track_remote; 3 4 use track_remote::*; 5 6 use interceptor::stream_info::StreamInfo; 7 use interceptor::{RTCPReader, RTPReader}; 8 use std::sync::Arc; 9 10 pub(crate) const RTP_OUTBOUND_MTU: usize = 1200; 11 pub(crate) const RTP_PAYLOAD_TYPE_BITMASK: u8 = 0x7F; 12 13 #[derive(Clone)] 14 pub(crate) struct TrackStream { 15 pub(crate) stream_info: Option<StreamInfo>, 16 pub(crate) rtp_read_stream: Option<Arc<srtp::stream::Stream>>, 17 pub(crate) rtp_interceptor: Option<Arc<dyn RTPReader + Send + Sync>>, 18 pub(crate) rtcp_read_stream: Option<Arc<srtp::stream::Stream>>, 19 pub(crate) rtcp_interceptor: Option<Arc<dyn RTCPReader + Send + Sync>>, 20 } 21 22 /// TrackStreams maintains a mapping of RTP/RTCP streams to a specific track 23 /// a RTPReceiver may contain multiple streams if we are dealing with Simulcast 24 #[derive(Clone)] 25 pub(crate) struct TrackStreams { 26 pub(crate) track: Arc<TrackRemote>, 27 pub(crate) stream: TrackStream, 28 pub(crate) repair_stream: TrackStream, 29 } 30