Skip to main content

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