//! **joule-moq-ingest**: WebRTC into and out of WAI rooms over MoQ. //! //! - **WHIP** (RFC 9725, [`whip`]): any standard WebRTC encoder publishes into a room. The //! gateway checks its bearer token, a room grant, against the room ([`room`]); takes //! its media, frame by frame, from the WebRTC stack; packages each frame as one WAI //! envelope ([`frame`]); groups the frames, one group per keyframe for video and per //! fixed duration for audio ([`package`]); and publishes the tracks and their catalog //! at the relay as their MoQ publisher ([`relay`], [`catalog`]), signing every group's //! receipts as the first hop. //! - **WHEP** (`draft-ietf-wish-whep-05`, [`whep`]): a standard WebRTC player watches a //! publisher's tracks. The gateway subscribes at the relay, verifies every object //! against its receipt, drops and counts what fails, and packetises the rest back to RTP. //! - **Bounds** ([`config::Limits`]): sessions, bitrate, tracks per session. //! - **Records** ([`record`]): each session ends with a record of what it carried, signed //! by the gateway: the seam for live metering's per-hop record. //! //! The WebRTC stack is `str0m` (sans-IO, MIT OR Apache-2.0) with its pure-Rust crypto //! backend; the relay protocol is `joule-moq`'s draft-22 codec and `joule-moq-relay`'s //! client. The mapping this crate implements, and the ones it specifies only (E-RTMP v2 //! multitrack and SRT), are WAI's `extensions/live-ingest.md`. pub mod catalog; pub mod config; pub mod frame; pub mod gateway; pub mod package; pub mod record; pub mod relay; pub mod room; pub mod rtc; pub mod sdp; pub mod whep; pub mod whip; pub use config::GatewayConfig; pub use gateway::{Gateway, GatewayServer}; pub use record::{SessionRecord, SignedRecord};