supervision-js
    Preparing search index...

    Interface MediaRendererState

    interface MediaRendererState {
        rendererBackend: string | null;
        playbackState: MediaRendererPlaybackState;
        fit: MediaRendererFit;
        currentTime: number;
        playbackRate: number;
        duration: number | null;
        mediaWidth: number;
        mediaHeight: number;
        presentedFrames: number;
        activeDetectionFrameTime: number | null;
        activeDetectionFrameIndex: number | null;
        activeDetectionCount: number;
        drawnMaskFrameTime?: number | null;
        playbackGateReach?: PlaybackGateReach;
        maskHeldStale?: boolean;
        seeking?: boolean;
        scrubbing?: boolean;
        detectionBuffer: DetectionBufferState;
        lastFrameRenderTimings: MediaFrameRenderTimings | null;
        source: MediaSourceState;
    }
    Index
    rendererBackend: string | null
    currentTime: number
    playbackRate: number
    duration: number | null
    mediaWidth: number
    mediaHeight: number
    presentedFrames: number
    activeDetectionFrameTime: number | null
    activeDetectionFrameIndex: number | null
    activeDetectionCount: number
    drawnMaskFrameTime?: number | null

    Detection frame the mask raster on screen belongs to, null when no mask is up. A frame whose raster is not ready yet draws no mask rather than the previous frame's, so this either names activeDetectionFrameTime or names nothing.

    Optional so a host holding a state it built before this field existed still satisfies the type.

    playbackGateReach?: PlaybackGateReach

    How far the playback gate reaches on the source this renderer opened. The same option means different things to the two kinds of source, and this reports which one a host got.

    maskHeldStale?: boolean

    Whether the raster on screen belongs to a frame other than the one the rest of the annotations were drawn from. Nothing produces this on purpose; a host that sees it true is looking at a mask over the wrong picture.

    seeking?: boolean

    Whether the playhead has been moved to a frame that is not on screen yet. playbackState cannot answer this: it keeps reporting what the transport settled on before the seek, so a seek of any length reads as paused or playing.

    A scrub sets this on every tick, so a host that draws it owes the viewer a delay before it appears, and owes them scrubbing too: a viewer dragging the playhead is not waiting for the picture, they are leading it.

    Optional so a host holding a state it built before this field existed still satisfies the type.

    scrubbing?: boolean

    Whether a drag is open on the playhead. True from the first scrub of a gesture until the seek that lands it, which is what separates a viewer leading the picture from one waiting on it.

    Optional so a host holding a state it built before this field existed still satisfies the type.

    detectionBuffer: DetectionBufferState
    lastFrameRenderTimings: MediaFrameRenderTimings | null