1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//! HLS / LL-HLS <-> MoQ gateway.
//!
//! Bridges HLS (and Low-Latency HLS) and [`moq_net`] broadcasts in both
//! directions, mirroring the WHIP/WHEP split in `moq-rtc`:
//!
//! - [`import`] pulls a remote HLS master/media playlist and publishes its CMAF
//! segments into MoQ (an HTTP *client* that *publishes*).
//! - [`server`] serves HLS playlists and CMAF segments over HTTP for MoQ
//! broadcasts (an HTTP *server*). It subscribes only to each broadcast's
//! catalog and per-rendition timeline tracks; media bytes are FETCHed from
//! the relay one group at a time, only when a segment is actually requested.
//! It serves every request; gate access by layering your own middleware onto
//! [`Server::router`](server::Server::router).
//!
//! All CMAF byte handling (import via [`moq_mux::container::fmp4::Import`],
//! export via [`moq_mux::container::fmp4::Muxer`]) lives in `moq-mux`; this
//! crate owns the HLS manifest generation, the timeline-driven playlist
//! window, and the HTTP surface.
pub use status_retryable;
pub use *;
pub use Server;
/// Re-export of the HTTP stack behind the export server, so consumers can name the
/// types that surface through [`Server::router`] (and layer their own middleware on
/// it) without adding their own axum dependency and risking a version mismatch.
/// `axum::http` covers the `http` crate types too. A major axum bump is therefore a
/// breaking change for this crate.
pub use axum;
/// Re-export of the HTTP client used by [`import`], so consumers can name the
/// [`reqwest::Error`] carried by [`Error::Reqwest`] without adding their own reqwest
/// dependency. A major reqwest bump is therefore a breaking change for this crate.
pub use reqwest;
/// Re-export of the URL parser, so consumers can name the [`url::Url`] and
/// [`url::ParseError`] carried by [`Error`] without adding their own url dependency.
/// A major url bump is therefore a breaking change for this crate.
pub use url;