From 0f928798d72edfd007e333afcb49f78270803c72 Mon Sep 17 00:00:00 2001 From: Duncan Tourolle Date: Tue, 22 Sep 2026 21:00:32 -0400 Subject: [PATCH] docs(specs): download the original and fix the audio on device MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A Jellyfin transcode is generated as it is sent — no Content-Length, Range ignored — so every interruption restarts it from byte zero, and three concurrent downloads are three ffmpeg jobs on the server. Measured on the tablet: a direct copy moves 2.06 GB in 142 s with no retries, a transcode crawls at ~1 MB/s and cannot resume. The transcode is only ever requested because of the audio track. So: always fetch Static=true, and re-encode the audio on the device when the source carries something the renderers cannot decode. DR-171 keeps its diagnosis — a downloaded film played as picture in silence, and offline there is no other source to fall back to — and loses its remedy, which explicitly accepted the loss of byte-range resumability. Its other finding survives and constrains this spec: a downloaded file outlives whatever experimentalNativeVideo was set to when it arrived, which is why the fix is to the bytes on disk rather than to one renderer. Records the rejected alternatives with the specific reason each fails, and the decision to accept HEVC staying HEVC (Android-first; recoverable by a setting, unlike silent audio). --- docs/specs/README.md | 4 +- docs/specs/on-device-audio-remux.md | 327 ++++++++++++++++++++++++++++ 2 files changed, 330 insertions(+), 1 deletion(-) create mode 100644 docs/specs/on-device-audio-remux.md diff --git a/docs/specs/README.md b/docs/specs/README.md index 1a8b95f63..71c4dbb0a 100644 --- a/docs/specs/README.md +++ b/docs/specs/README.md @@ -28,7 +28,8 @@ know how something *works*, read **Next free requirement ids** (always re-check [requirements.md](../requirements.md) before allocating): **UR-086**, -**IR-036**, **JA-038**, **DR-289**. Three specs below suggested ids that have +**IR-036**, **JA-038**, **DR-291** (DR-289/290 went to the download stall +timeout and the transcode progress estimate in v0.12.2). Three specs below suggested ids that have since been taken by other work; each carries a ⚠️ note at the top — this line was itself stale by five, two and forty-seven until 2026-09-08, which is why the re-check is not optional. @@ -49,6 +50,7 @@ re-check is not optional. |---|---| | [desktop-native-video.md](desktop-native-video.md) | mpv draws video on every desktop platform, then the webview `