Skip to content

Commit 5d43eac

Browse files
committed
docs(cc608): note that discontinuity recovery is a receiver concern
The stale-caption case after a seek is fixed by the player resetting its 608 decoder state at a discontinuity, as it would any other decoder. The server has no lever here, so livesim2 keeps flipping each segment's first cue rather than skipping it.
1 parent 4057eaa commit 5d43eac

2 files changed

Lines changed: 10 additions & 4 deletions

File tree

README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,12 @@ belongs to it, and what it shows for that first cue period depends on its decode
5151
608 decoder has nothing loaded and shows **no caption**, while one that keeps 608 state
5252
across the discontinuity flips whatever was last preloaded and can show **one cue of a
5353
stale caption**. Either way it corrects at the next cue boundary, typically within a
54-
second. The server cannot avoid this — any pair sent ahead of the `EOC` to clear the
55-
state would erase the build that is about to be flipped.
54+
second.
55+
56+
This is a receiver-side matter, not something the server can paper over: any pair sent
57+
ahead of the `EOC` to clear the state would erase the build that is about to be flipped.
58+
A player should reset its 608 decoder state on a seek or other discontinuity — which is
59+
what turns the stale case into the blank one — exactly as it resets any other decoder.
5660

5761
The new `livesim2` software is written in Go instead of Python and designed to handle
5862
content in a more flexible and versatile way. It is intended to be very easy to install and deploy locally

cmd/livesim2/app/cc608_inject.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,10 @@ func cc608PairCount(toks []cta608.Token) int {
105105
// to it. What it shows for that cue period depends on its decoder state: a fresh
106106
// decoder has empty non-displayed memory and shows nothing, while one that keeps 608
107107
// state across the discontinuity flips whatever was last preloaded and can show a
108-
// stale caption. Either way it is correct from the next cue on, and the server cannot
109-
// prevent it — an ENM ahead of the EOC would erase the build about to be flipped.
108+
// stale caption. Either way it is correct from the next cue on. Recovering faster is a
109+
// receiver-side matter — a player resetting its 608 state on a seek turns the stale
110+
// case into the blank one — and not something the server can paper over, since an ENM
111+
// ahead of the EOC would erase the build about to be flipped.
110112
//
111113
// Each cue is encoded with a fresh cta608.Encoder so its build is always a complete
112114
// rebuild. That keeps every EOC paired with a build that fully describes its screen,

0 commit comments

Comments
 (0)