aboutsummaryrefslogtreecommitdiffstats
path: root/packaging/deb
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-09-18 09:47:01 +0200
committerChristophe Besson <cbesson@gmail.com>2026-09-18 09:49:27 +0200
commitc03512aeab576a06f8d5026e5eb484897ec45f99 (patch)
tree81a2f319273d01610b1851da6e3ba20b5d2c0886 /packaging/deb
parent4742aa685129cf790d3f7510238919ffde15a949 (diff)
downloadmeshbay-c03512aeab576a06f8d5026e5eb484897ec45f99.tar.gz
feat(cast): carry subtitles to a Chromecast, on the relay's clock
The relay forwards the node's fragments untouched, and those begin at zero at the seek point. The player never notices because its SourceBuffer is given `timestampOffset = start`; a receiver has no equivalent, so the cues are shifted by `-start` before they leave, recomputed at every restart of the relay. Sent as they are, a subtitle would be out by the whole seek. The document is served from the relay's own port at /subs.vtt, behind the same token as the stream and with CORS: a receiver fetches a side-loaded track with XHR from its own origin, and without the headers it fails as a network error with nothing on screen to say so. The URL carries a version because a track is cached by address — changing the cues behind a fixed URL leaves the previous language showing. Cues that end before the stream begins are dropped rather than clamped, so a line from before the seek cannot appear over the first frames after it. The relay is plain Node, so the tests start it and fetch from it rather than reading its source. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UGY17EPph5LsLzePPXhUVc
Diffstat (limited to 'packaging/deb')
0 files changed, 0 insertions, 0 deletions