#![forbid(unsafe_code)]
#![cfg_attr(docsrs, feature(doc_cfg))]
#[cfg(feature = "av1-dd")]
#[cfg_attr(docsrs, doc(cfg(feature = "av1-dd")))]
pub mod av1;
pub mod bandwidth;
#[cfg(any(feature = "pacer", feature = "kalman-bwe", feature = "googcc-bwe"))]
#[cfg_attr(
docsrs,
doc(cfg(any(feature = "pacer", feature = "kalman-bwe", feature = "googcc-bwe")))
)]
pub mod bwe;
pub mod cc;
pub mod client;
pub mod config;
pub mod dc;
pub mod fanout;
pub mod ids;
pub mod keyframe;
pub mod layer_selector;
pub mod media;
pub mod metrics;
pub mod net;
pub mod origin;
pub mod propagate;
pub mod raw;
pub mod registry;
pub mod rtc;
pub mod rtcp_stats;
pub mod sframe;
pub mod udp_loop;
#[cfg(feature = "vfm")]
#[cfg_attr(docsrs, doc(cfg(feature = "vfm")))]
pub mod vfm;
#[cfg(feature = "av1-dd")]
#[cfg_attr(docsrs, doc(cfg(feature = "av1-dd")))]
pub use av1::Av1DdInfo;
pub use bandwidth::BandwidthEstimate;
#[cfg(feature = "kalman-bwe")]
#[cfg_attr(docsrs, doc(cfg(feature = "kalman-bwe")))]
pub use bwe::feedback::{TwccFeedback, TwccSample};
#[cfg(feature = "kalman-bwe")]
#[cfg_attr(docsrs, doc(cfg(feature = "kalman-bwe")))]
pub use bwe::kalman::DelayEstimator;
#[cfg(feature = "kalman-bwe")]
#[cfg_attr(docsrs, doc(cfg(feature = "kalman-bwe")))]
pub use bwe::loss::LossEstimator;
#[cfg(feature = "kalman-bwe")]
#[cfg_attr(docsrs, doc(cfg(feature = "kalman-bwe")))]
pub use bwe::subscriber::{ClientHint, PerSubscriber};
#[cfg(feature = "kalman-bwe")]
#[cfg_attr(docsrs, doc(cfg(feature = "kalman-bwe")))]
pub use bwe::BandwidthEstimator;
#[cfg(feature = "googcc-bwe")]
#[cfg_attr(docsrs, doc(cfg(feature = "googcc-bwe")))]
pub use bwe::GoogCcEstimator;
#[cfg(feature = "pacer")]
#[cfg_attr(docsrs, doc(cfg(feature = "pacer")))]
pub use bwe::PacerAction;
#[cfg(feature = "pacer")]
#[cfg_attr(docsrs, doc(cfg(feature = "pacer")))]
pub use bwe::SubscriberPacer;
#[cfg(feature = "pacer")]
#[cfg_attr(docsrs, doc(cfg(feature = "pacer")))]
pub use bwe::{PacerConfig, PacerConfigError};
pub use cc::{CongestionControl, DefaultGoogCC};
pub use client::{Client, TrackIn};
pub use config::SfuConfig;
pub use dc::ChannelConfig;
pub use ids::{InvalidRid, SfuMid, SfuPt, SfuRid};
pub use keyframe::{SfuKeyframeKind, SfuKeyframeRequest};
pub use layer_selector::{BestFitSelector, LayerSelector};
pub use media::{SfuMediaKind, SfuMediaPayload};
pub use metrics::SfuMetrics;
pub use net::{IncomingDatagram, OutgoingDatagram, SfuProtocol};
pub use origin::ClientOrigin;
pub use propagate::{ClientId, Propagated};
pub use raw::{rtc_config, RawRtc, RawRtcConfig};
pub use registry::Registry;
pub use rtc::{SfuRtc, SfuRtcBuilder};
pub use rtcp_stats::PeerRtcpStats;
pub use sframe::KeyEpoch;
pub use udp_loop::{bind, run_udp_loop, serve, serve_socket};
#[cfg(feature = "vfm")]
#[cfg_attr(docsrs, doc(cfg(feature = "vfm")))]
pub use vfm::FrameMarkingInfo;