Expand description
Sans-IO Smooth Streaming (MS-SSTR) client engine (issue #2370).
One engine owns everything a Smooth pull client does between bytes: manifest
fetch and live refresh, <Protection> refusal, StreamIndex identity across a
refresh, stream/quality selection, chunk enumeration, fragment URL resolution,
first-fragment track-id discovery, the synthetic init segment, the tfxd
timestamp base, the encrypted-fragment probe, retry/backoff, live join
look-ahead and discontinuity. Manifest syntax is broadcast-smooth’s; codec
glue and fMP4 demux are transmux’s.
The pull side is SmoothClient; the serving side is
server::SmoothOrigin (feature std), which renders a live Manifest from
a media_plane::Trunk and resolves fragment requests — the same split
hls-runtime makes between its client and its server module, with
multimux an adapter over it.
The shape follows dash-runtime’s DashClient: the host drives it with
SmoothClient::poll (what to fetch next), SmoothClient::on_manifest,
SmoothClient::on_fragment and SmoothClient::on_failure, and drains
SmoothClient::next_output. Every instant is an argument in microseconds; no
I/O happens and no clock is read inside the crate.
The wire syntax is MS-SSTR, transcribed in
private/specs-verified/mpeg/transmux/smooth/ms-sstr.md.
Re-exports§
pub use client::Action;pub use client::Dropped;pub use client::FetchFailure;pub use client::ManifestFault;pub use client::Output;pub use client::QualityInfo;pub use client::QualitySelector;pub use client::RequestId;pub use client::SmoothClient;pub use client::SmoothConfig;pub use client::StreamId;pub use error::SmoothError;pub use server::FragmentLocation;stdpub use server::SmoothBody;stdpub use server::SmoothOrigin;stdpub use server::SmoothOriginConfig;stdpub use server::SmoothOriginError;stdpub use server::SmoothRequest;stdpub use server::StreamKey;std
Modules§
- client
- The Smooth client engine:
SmoothClientand the types it exchanges with a host. - error
- The engine’s fatal outcome:
SmoothError. - server
std - Smooth Streaming live origin engine (issue #2453): the client Manifest and
fragment decision logic, driven from a shared
media_plane::Trunk— the same shape ashls-runtime’sservermodule.