Expand description
Backend-owned stream selection (UR-079 / DR-225). What stream to play, decided in Rust and handed to a player whole.
Every player backend — mpv, ExoPlayer, the webview <video>/hls.js path —
used to receive a bare URL and re-derive the rest: the frontend decided
“is this HLS?” by looking for .m3u8 in the string, and nothing anywhere
carried why a stream was transcoded or what else the source could have
offered. This module is the replacement contract: one self-describing
StreamSelection that says what the stream is, how to fetch it, and what
the alternatives were.
The division of labour it encodes — Rust decides what stream, the player decides how to deliver it — is the point. A multi-variant playlist handed to ExoPlayer is still ExoPlayer’s to adapt over; Rust never paces bytes.
TRACES: UR-079 | DR-225
Structs§
- Quality
Option - One rung of the quality picker, as it applies to this media source.
- Rendition
- The rendition actually negotiated — what the viewer is receiving right now.
- Stream
Selection - Everything a player backend needs to open a stream, and everything the UI needs to describe it.
Enums§
- Playback
Kind - What the server is doing to the source to produce this stream.
- Transport
- How the bytes of a chosen stream are fetched.
Functions§
- quality_
options_ for_ source - Build the quality ladder as it applies to a source of a known bitrate.