Skip to content

6.8.0 - the subtitle statement says when determination reaches the playhead

Choose a tag to compare

@superuser404notfound superuser404notfound released this 07 Aug 04:52
· 908 commits to main since this release

One new emission point on the #250 subtitle-resolution statement, which is additive rather than a fix, so this is a minor. Drop-in from 6.7.0, no source change on the consumer side.

Added

  • The subtitle-resolution statement says when determination reaches the playhead. The #250 line marks transitions of the frontier's SOURCE, and a frontier climbing past the rendered position is not one of those. After a far seek the sequence was: the reconstruction tick, which is via=pump by construction because the side reader has not been asked to move yet and whose resolvedThrough is therefore the drain cursor, a lower bound; then one line when the reader's position first passes the fence, which can still sit short of the seek target; then silence, because via never changes again while the frontier climbs past the playhead a second later; then the 30 s cadence tick.

    A conformance harness admitting only generation-fenced coverage therefore had nothing to adjudicate on for up to 30 s after a seek whose display state was in fact determined within about 1.4 s. Reported with a 15 repetition wired battery by @cmcpherson274 in #318 (raised in the #240 thread).

    The drain tick now emits a fifth reason on the first tick whose stated span actually contains the playhead:

    [AetherEngine] #250 subtitle-resolution loadGen=2 seekGen=7 stream=4 coveredFrom=626.40 retainedFrom=-15.00 resolvedThrough=646.10 via=prefetch decodedThrough=641.88 reason=coverage
    

    Once per decoded run, re-armed by every reset, and it does not repeat at the 2 Hz drain cadence afterwards. Nothing about the claim changed: the line prints the statement the tick already builds, so via=pump still cannot state coverage, and the span has to contain the playhead rather than merely end above it. Its absence stays informative in the same way: on a link that cannot carry both the pump and the side reader (#240) the frontier never catches the playhead, and then no line claims that it did.

    Parser note: coverage is a new value of the reason field. Field set and field order are unchanged, so key-based parsers are untouched.

Changed

  • The software path's rejected-SAR line names the axis the ratio came from. A rejected sample aspect ratio never latches, so the latch line that names frame / ctx / stream could not fire for it and the rejection line was the only line a bad ratio produced. It printed the ratio, the frame and the resolved display aspect, but not the axis, in exactly the case that asks for it. The three axes now ride on the rejection line too, and the message names the first axis that lost on the display aspect rather than the first that cleared the component gate (#290).

    On MPEG-TS, where no container ratio exists, stream= is the parser's reading of the SPS VUI at open time and frame= is the SPS in force for that frame. Agreement means the VUI genuinely declares the ratio; disagreement is the fingerprint of a declaration that moved between the join and the frame.

Upgrading

Nothing to do. Hosts that parse the #250 statement should accept reason=coverage alongside the existing four values.