Settings, PLAN: video previews follow the Transcode device

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Mitchell-Johnson
2026-10-23 16:09:28 -07:00
co-authored by Claude Opus 5.5
parent fac8a3a180
commit f2997a04c8
2 changed files with 12 additions and 1 deletions
+10
View File
@@ -852,6 +852,16 @@ something long in one, switch away and back, refresh — it's all still there.
- 360 files: the look-around view, zoom 8°–300° (ordinary lens into stereographic, the - 360 files: the look-around view, zoom 8°–300° (ordinary lens into stereographic, the
"little planet"), drag/pinch/wheel, phone motion. Full screen is the element's, or the "little planet"), drag/pinch/wheel, phone motion. Full screen is the element's, or the
whole window on an iPhone. whole window on an iPhone.
- **Video previews follow the setting too** (same day, asked for as "it should use the
same video generation device"). On the device's own machine the hub says which device
by header (`X-Hamlab-Device`); for a file elsewhere the hub asks the file's machine's
cache first (`?cached=1`), else has the device's machine make it from the hub's one-file
URL (`POST /api/files/thumb-from`) and keeps it in the file's machine's cache (`PUT
/api/files/thumb`, refused if the file changed since its listing), so each is made once.
A failure is kept as a failure. Unreachable → made where the file is, as before. Images
and audio covers stay on the file's machine's CPU (a JPEG is cheaper there than a GPU
round trip). Measured: a `hamtv` video previewed on grid's A380 in 0.22 s, then 2 ms
from hamtv's cache. The previews button's tooltip names the device.
- Measured (`web/scripts/e2e-player.mjs`, Chromium): an iPhone HLG clip on `core` made on - Measured (`web/scripts/e2e-player.mjs`, Chromium): an iPhone HLG clip on `core` made on
grid's A380 — 3.2 s to play, a seek 1.0 s, a quality change 1.5 s; the 8K 360 Disney day on grid's A380 — 3.2 s to play, a seek 1.0 s, a quality change 1.5 s; the 8K 360 Disney day on
grid — 3.1 s, 2160s on Auto, a seek 4.9 s (10 s source keyframes). grid — 3.1 s, 2160s on Auto, a seek 4.9 s (10 s source keyframes).
+2 -1
View File
@@ -298,7 +298,8 @@ function TranscodeDevice() {
{err && <div className="error" style={{ marginTop: 8 }}>{err}</div>} {err && <div className="error" style={{ marginTop: 8 }}>{err}</div>}
<div className="muted small" style={{ marginTop: 10 }}> <div className="muted small" style={{ marginTop: 10 }}>
Opening a video in Files plays it YouTube's way — Auto picks the quality the connection takes, any quality can be picked by hand, Opening a video in Files plays it YouTube's way — Auto picks the quality the connection takes, any quality can be picked by hand,
or the file as it is — and every quality is made on the fly, from wherever you seek to, on this device. When it is on another or the file as it is — and every quality is made on the fly, from wherever you seek to, on this device. Video previews
(thumbnails) are made on it too; image previews stay on each machine's CPU. When it is on another
machine than the file, that machine reads the file through this hub. If it can't be reached, the file's own machine makes it instead. machine than the file, that machine reads the file through this hub. If it can't be reached, the file's own machine makes it instead.
</div> </div>
</section> </section>