12843fe253
Adds a client-selectable **preferred codec** and wires the core + ABI + probe + Linux client to
negotiate and decode it. (Windows/Apple/Android follow in 2b.)
**Core:**
- `Hello.preferred_codec` (a single CODEC_* bit, 0 = auto) — a soft hint appended after
`video_codecs`. `resolve_codec(client, host, preferred)` now honors the preference when the host
can also emit it, else falls back to precedence (HEVC > AV1 > H.264). Roundtrip + preference tests.
- `NativeClient::connect` takes `video_codecs` + `preferred_codec`; `NativeClient.codec` exposes the
resolved `Welcome.codec`.
- ABI: `punktfunk_connect_ex7` (adds the two codec params; `ex6` delegates to it advertising
HEVC-only) + `punktfunk_connection_codec` getter + `PUNKTFUNK_CODEC_{H264,HEVC,AV1}` constants
(drift-guarded against the wire values). Header regenerated.
**Host:** passes `hello.preferred_codec` into `resolve_codec`.
**probe:** `--codec h264|hevc|av1|auto` sets the preference (still advertises it can decode all
three); the dump extension already follows the resolved codec.
**Linux client:** advertises the codecs FFmpeg can actually decode (`decodable_codecs()`), threads
the user's `codec` setting as the preference, and builds the decoder — both the software and VAAPI
paths, plus the mid-session VAAPI→software demotion — from the negotiated `Welcome.codec` instead of
hardcoding HEVC. New "Video codec" dropdown in Preferences (Automatic/HEVC/H.264/AV1).
Live-validated on the dev box: probe `--codec hevc` against a software (H.264-only) host resolves to
H.264 (graceful soft-preference fallback), no failure. clippy + core (57) + host (133) tests green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
37 lines
665 B
JSON
37 lines
665 B
JSON
{
|
|
"title": "Documentation",
|
|
"pages": [
|
|
"index",
|
|
"how-it-works",
|
|
"quickstart",
|
|
"install",
|
|
"---Host Setup---",
|
|
"requirements",
|
|
"ubuntu-gnome",
|
|
"ubuntu-kde",
|
|
"fedora-kde",
|
|
"bazzite",
|
|
"steamos-host",
|
|
"windows-host",
|
|
"running-as-a-service",
|
|
"---Connecting---",
|
|
"clients",
|
|
"install-client",
|
|
"steam-deck",
|
|
"moonlight",
|
|
"pairing",
|
|
"---Configuration---",
|
|
"configuration",
|
|
"host-cli",
|
|
"---Troubleshooting---",
|
|
"troubleshooting",
|
|
"forgot-password",
|
|
"---Project---",
|
|
"roadmap",
|
|
"status",
|
|
"channels",
|
|
"---Reference---",
|
|
"[API Reference](/api)"
|
|
]
|
|
}
|