xref: /webrtc/webrtc/src/track/mod.rs (revision a6882685)
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