Skip to main content

RtcConfiguration

Struct RtcConfiguration 

Source
pub struct RtcConfiguration {
Show 52 fields pub ice_servers: Vec<IceServer>, pub ice_transport_policy: IceTransportPolicy, pub bundle_policy: BundlePolicy, pub rtcp_mux_policy: RtcpMuxPolicy, pub certificates: Vec<CertificateConfig>, pub transport_mode: TransportMode, pub nack_buffer_size: usize, pub media_capabilities: Option<MediaCapabilities>, pub external_ip: Option<String>, pub external_port: Option<u16>, pub bind_ip: Option<String>, pub disable_ipv6: bool, pub ssrc_start: u32, pub stun_timeout: Duration, pub nomination_timeout: Duration, pub ice_connection_timeout: Duration, pub ice_disconnect_threshold: Duration, pub ice_disconnect_grace: Duration, pub sctp_rto_initial: Duration, pub sctp_rto_min: Duration, pub sctp_rto_max: Duration, pub sctp_max_association_retransmits: u32, pub sctp_receive_window: usize, pub sctp_heartbeat_interval: Duration, pub sctp_max_heartbeat_failures: u32, pub sctp_max_tsn_retransmits: u32, pub sctp_max_burst: usize, pub sctp_max_cwnd: usize, pub dtls_buffer_size: usize, pub rtp_start_port: Option<u16>, pub rtp_end_port: Option<u16>, pub ice_gather_udp_hosts: bool, pub tcp_port_range_start: Option<u16>, pub tcp_port_range_end: Option<u16>, pub enable_latching: bool, pub probation_max_packets: Option<u8>, pub enable_ice_lite: bool, pub prefer_srflx_over_natted_host: bool, pub enable_upnp: bool, pub upnp_lease_duration: u32, pub upnp_discovery_timeout: Duration, pub depacketizer_strategy: DepacketizerStrategy, pub rtp_buffer_capacity: usize, pub buffer_drop_strategy: BufferDropStrategy, pub buffer_stats_log_interval: Duration, pub ice_tcp_policy: IceTcpPolicy, pub ice_udp_mux: bool, pub ice_udp_mux_port: Option<u16>, pub sdp_compatibility: SdpCompatibilityMode, pub label: Option<String>, pub cname: Option<String>, pub recorder_interceptors: RecorderInterceptors,
}
Expand description

Primary configuration for a PeerConnection.

Fields§

§ice_servers: Vec<IceServer>§ice_transport_policy: IceTransportPolicy§bundle_policy: BundlePolicy§rtcp_mux_policy: RtcpMuxPolicy§certificates: Vec<CertificateConfig>§transport_mode: TransportMode§nack_buffer_size: usize§media_capabilities: Option<MediaCapabilities>§external_ip: Option<String>

Override the advertised IP address in SDP (for NAT traversal). When set, the c=, o=, and candidate addresses in the SDP will use this IP instead of the local bind IP. The local bind address is stored in related_address on the candidate.

§external_port: Option<u16>

Override the advertised port in SDP m= line and candidates (for NAT port forwarding).

When set, the SDP will advertise this port instead of the local bind port. This is useful when you have configured NAT port forwarding (e.g. external port 30000 → local port 20000) and need the remote peer to send RTP to the external port.

Works independently or combined with external_ip. Only applies in RTP/SRTP direct mode (TransportMode::Rtp / TransportMode::Srtp). Not used in WebRTC mode.

§bind_ip: Option<String>§disable_ipv6: bool§ssrc_start: u32§stun_timeout: Duration§nomination_timeout: Duration

Timeout for the ICE nomination binding check (USE-CANDIDATE). This should be larger than stun_timeout to allow more retransmissions and reduce the probability of nomination failures under packet loss.

§ice_connection_timeout: Duration§ice_disconnect_threshold: Duration

How long without receiving any packet (STUN/DTLS/SCTP) before the ICE transport is demoted from Connected to Disconnected.

Disconnected is a recoverable state — the SCTP association is not torn down (see peer_connection.rs); the transport waits for traffic to resume. Keep this comfortably below ice_connection_timeout, which is the hard, non-recoverable failure threshold.

Default: 5s (standard heuristic). Raise it (e.g. 120s) for long-lived tunnels (SSH/port-forwarding) over lossy links where brief blackouts are expected and must not even flap the SCTP association.

§ice_disconnect_grace: Duration

How long to wait in Disconnected state before tearing down the PeerConnection (SCTP/DTLS). When ICE goes Disconnected the transport is given this long to recover before the connection is closed.

This is distinct from ice_connection_timeout which operates at the ICE transport layer. This grace period gives the application a chance to observe PeerConnectionState::Disconnected and react, while still bounding how long a dead connection lingers.

Set to 0 to tear down immediately on ICE Disconnected. Default: 15s

§sctp_rto_initial: Duration§sctp_rto_min: Duration§sctp_rto_max: Duration§sctp_max_association_retransmits: u32§sctp_receive_window: usize§sctp_heartbeat_interval: Duration§sctp_max_heartbeat_failures: u32§sctp_max_tsn_retransmits: u32§sctp_max_burst: usize§sctp_max_cwnd: usize§dtls_buffer_size: usize§rtp_start_port: Option<u16>§rtp_end_port: Option<u16>§ice_gather_udp_hosts: bool§tcp_port_range_start: Option<u16>§tcp_port_range_end: Option<u16>§enable_latching: bool§probation_max_packets: Option<u8>§enable_ice_lite: bool§prefer_srflx_over_natted_host: bool

When true, demote host candidates with private (RFC 1918) local IPs below server-reflexive candidates in the connectivity check ordering. This avoids DTLS handshake failures behind NATs where a host candidate can pass a single STUN binding check but cannot sustain bidirectional DTLS traffic. Same-LAN pairs (both sides private) are not affected. Default: false (standard RFC 5245 behavior).

§enable_upnp: bool

Enable UPnP IGD for automatic port mapping

§upnp_lease_duration: u32

UPnP port mapping lease duration in seconds

§upnp_discovery_timeout: Duration

UPnP gateway discovery timeout

§depacketizer_strategy: DepacketizerStrategy§rtp_buffer_capacity: usize§buffer_drop_strategy: BufferDropStrategy§buffer_stats_log_interval: Duration§ice_tcp_policy: IceTcpPolicy

Controls ICE TCP candidate support (RFC 6544). Default: Disabled — only UDP candidates are gathered and used.

§ice_udp_mux: bool

Enable process-wide shared ICE UDP socket (single-port multiplexing).

When true, multiple PeerConnections share one UdpSocket bound to ice_udp_mux_port. Incoming UDP packets are demultiplexed by the server ufrag embedded in the first STUN Binding Request’s USERNAME attribute, and — once a pair is established — by the remote source address.

Requires ice_udp_mux_port to be set. Useful for SFU/WHEP deployments that need to advertise a single public UDP port for many sessions.

§ice_udp_mux_port: Option<u16>

UDP port to bind the shared mux socket on. Required when ice_udp_mux is enabled. All PeerConnections sharing this port must agree on it.

§sdp_compatibility: SdpCompatibilityMode

SDP generation compatibility mode.

§label: Option<String>§cname: Option<String>§recorder_interceptors: RecorderInterceptors

Recording / tapping interceptors installed on every transceiver created by this PC. Receiver interceptors fire on incoming RTP (pre-depacketize); sender interceptors fire on outgoing RTP (post seq/timestamp rewrite, pre-wire).

Trait Implementations§

Source§

impl Clone for RtcConfiguration

Source§

fn clone(&self) -> RtcConfiguration

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RtcConfiguration

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for RtcConfiguration

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for RtcConfiguration

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for RtcConfiguration

Source§

impl From<RtcConfigurationBuilder> for RtcConfiguration

Source§

fn from(builder: RtcConfigurationBuilder) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for RtcConfiguration

Source§

fn eq(&self, other: &RtcConfiguration) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for RtcConfiguration

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for RtcConfiguration

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more