Skip to content

After a re-aimed restart, a PGS set whose clear is stranded below the producer floor overstays at the landing #416

Description

@rrgomes

On the 6.40.0 re-aim path (same 1080p H.264 ~35 Mbit/s MKV + PGS SDH asset as #408), a seek that re-anchors and restarts the producer can land showing the previous position's caption over the new scene. Reproduced on 6.40.0; 6.41.0's diff does not touch the subtitle store, so it should hold there. Two devices, same day, same build:

  • Apple TV 4K 3rd gen: a coalesced far seek to 205 landed on target; the overlay then applied a set from half a minute earlier:

    [applySubtitleEvent] cueStart=33.200s cueEnd=4295000.495s sourceTime=15.256s engine.currentTime=205.000s seekGen=2
    

    The next authored set on the stream is 215.674, so the stale one stands ~10 s over the new scene's audio.

  • M4 Pro Mac (controlled repro): drain seek target 199.1; boundary 196029 is not a random-access point (no sync sample covers it), re-aimed ×2, gate opened at actual=191983, 12.30 s flight. Post-landing, the picture at ~200 s renders under the 187.729 set (authored ≈2 s, a sound-effect caption):

    [applySubtitleEvent] cueStart=187.729s cueEnd=4295155.024s sourceTime=199.400s engine.currentTime=199.400s seekGen=10
    

    No stored subtitle packet exists in (191.98, 215.674). It cleared by ~206 on this hardware; the overstay scales with device speed and with the gap to the next authored set (we have watched the same shape run tens of seconds on the Apple TVs).

Mechanism as we read it: the re-aim's floor (191.98) lands past the 187.73 set, so that set's clear (~190) sits below the floor and can never be re-harvested — the store prunes behind the producer. The retained cue keeps end_display_time = UINT32_MAX, or the next-stored-packet close reaches the far-side successor (215.674) — a real packet, but not this set's successor, which is the #362 round-2 shape. closeOpenEndedCues(startingBefore:) does not cover it: the set starts inside the reconstruction window, not before it. Fast landings never show it — two control runs stepping +10 s with sub-second landings kept every caption correct.

Two candidate shapes, your call: close a bitmap set at min(next stored packet, start + a PGS dwell cap) when its own clear is unreachable; or a one-shot subtitle-stream harvest of [floor − gap, floor] after a re-aim, so the authored clear is read before the region is abandoned.

Full traces from both devices and screenshots available on request.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions