Skip to main content

Module stream_selection

Module stream_selection 

Source
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§

QualityOption
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.
StreamSelection
Everything a player backend needs to open a stream, and everything the UI needs to describe it.

Enums§

PlaybackKind
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.