supervision 0.2.0-next.0 → 0.2.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/dist/constants/media-renderer.d.ts +3 -0
  2. package/dist/constants/media-renderer.d.ts.map +1 -1
  3. package/dist/index.d.ts +5 -5
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +1722 -1395
  6. package/dist/index.js.map +1 -1
  7. package/dist/mask-preparation.worker.js +109 -31
  8. package/dist/mask-preparation.worker.js.map +1 -1
  9. package/dist/media/media-frame-clock.d.ts +4 -0
  10. package/dist/media/media-frame-clock.d.ts.map +1 -0
  11. package/dist/media/media-source-state.d.ts.map +1 -1
  12. package/dist/media/media-source.d.ts +6 -0
  13. package/dist/media/media-source.d.ts.map +1 -1
  14. package/dist/media/video-engine-media-source.d.ts +17 -7
  15. package/dist/media/video-engine-media-source.d.ts.map +1 -1
  16. package/dist/media/video-engine-media-source.js +3 -0
  17. package/dist/media/video-engine-media-source.js.map +1 -0
  18. package/dist/playback/media-playback-controller.d.ts +7 -1
  19. package/dist/playback/media-playback-controller.d.ts.map +1 -1
  20. package/dist/render-preparation/mask-frame-artifact.d.ts +2 -0
  21. package/dist/render-preparation/mask-frame-artifact.d.ts.map +1 -1
  22. package/dist/render-preparation/mask-frame-compositor.d.ts +7 -0
  23. package/dist/render-preparation/mask-frame-compositor.d.ts.map +1 -1
  24. package/dist/render-preparation/mask-preparation-worker-protocol.d.ts +1 -0
  25. package/dist/render-preparation/mask-preparation-worker-protocol.d.ts.map +1 -1
  26. package/dist/render-preparation/prepared-render-window.d.ts +21 -2
  27. package/dist/render-preparation/prepared-render-window.d.ts.map +1 -1
  28. package/dist/render-preparation/prepared-window-timeline.d.ts +1 -0
  29. package/dist/render-preparation/prepared-window-timeline.d.ts.map +1 -1
  30. package/dist/renderers/injected-pixi.d.ts +38 -0
  31. package/dist/renderers/injected-pixi.d.ts.map +1 -0
  32. package/dist/renderers/media-frame-navigation.d.ts +17 -0
  33. package/dist/renderers/media-frame-navigation.d.ts.map +1 -0
  34. package/dist/renderers/media-renderer-core.d.ts +9 -0
  35. package/dist/renderers/media-renderer-core.d.ts.map +1 -1
  36. package/dist/renderers/media-renderer-scene.d.ts +17 -5
  37. package/dist/renderers/media-renderer-scene.d.ts.map +1 -1
  38. package/dist/renderers/media-renderer-state.d.ts +9 -0
  39. package/dist/renderers/media-renderer-state.d.ts.map +1 -1
  40. package/dist/renderers/media-renderer-transport.d.ts +19 -3
  41. package/dist/renderers/media-renderer-transport.d.ts.map +1 -1
  42. package/dist/renderers/pixi-focus-layer.d.ts +1 -0
  43. package/dist/renderers/pixi-focus-layer.d.ts.map +1 -1
  44. package/dist/renderers/pixi-frame-present.d.ts +1 -1
  45. package/dist/renderers/pixi-frame-present.d.ts.map +1 -1
  46. package/dist/renderers/pixi-id-mask-shader.d.ts +4 -33
  47. package/dist/renderers/pixi-id-mask-shader.d.ts.map +1 -1
  48. package/dist/renderers/pixi-interaction-presentation-layer.d.ts +0 -1
  49. package/dist/renderers/pixi-interaction-presentation-layer.d.ts.map +1 -1
  50. package/dist/renderers/pixi-mask-halo.d.ts +4 -33
  51. package/dist/renderers/pixi-mask-halo.d.ts.map +1 -1
  52. package/dist/renderers/pixi-mask-layer.d.ts +28 -29
  53. package/dist/renderers/pixi-mask-layer.d.ts.map +1 -1
  54. package/dist/renderers/pixi-media-scene.d.ts.map +1 -1
  55. package/dist/renderers/pixi-polygon-layer.d.ts +2 -0
  56. package/dist/renderers/pixi-polygon-layer.d.ts.map +1 -1
  57. package/dist/renderers/pixi-region-coverage-mask.d.ts +4 -33
  58. package/dist/renderers/pixi-region-coverage-mask.d.ts.map +1 -1
  59. package/dist/renderers/pixi-region-layer.d.ts +6 -31
  60. package/dist/renderers/pixi-region-layer.d.ts.map +1 -1
  61. package/dist/renderers/pixi-shader-lifecycle.d.ts +14 -0
  62. package/dist/renderers/pixi-shader-lifecycle.d.ts.map +1 -0
  63. package/dist/renderers/prepared-annotation-window.d.ts.map +1 -1
  64. package/dist/renderers/presented-frame-channel.d.ts +34 -1
  65. package/dist/renderers/presented-frame-channel.d.ts.map +1 -1
  66. package/dist/sessions/media-session-defaults.d.ts.map +1 -1
  67. package/dist/sessions/media-session-detections.d.ts.map +1 -1
  68. package/dist/sessions/media-session-state.d.ts.map +1 -1
  69. package/dist/sessions/media-session.d.ts.map +1 -1
  70. package/dist/tracking.worker.js +19 -5
  71. package/dist/tracking.worker.js.map +1 -1
  72. package/dist/types/media-frame-clock.d.ts +16 -0
  73. package/dist/types/media-frame-clock.d.ts.map +1 -0
  74. package/dist/types/media-frame-navigation.d.ts +28 -0
  75. package/dist/types/media-frame-navigation.d.ts.map +1 -0
  76. package/dist/types/media-renderer-display.d.ts +12 -0
  77. package/dist/types/media-renderer-display.d.ts.map +1 -0
  78. package/dist/types/media-renderer.d.ts +13 -0
  79. package/dist/types/media-renderer.d.ts.map +1 -1
  80. package/dist/types/media-session.d.ts +35 -32
  81. package/dist/types/media-session.d.ts.map +1 -1
  82. package/dist/types/render-preparation.d.ts +78 -28
  83. package/dist/types/render-preparation.d.ts.map +1 -1
  84. package/dist/video-engine-media-source-DR-x1UfK.js +483 -0
  85. package/dist/video-engine-media-source-DR-x1UfK.js.map +1 -0
  86. package/dist/web-video-engine/analysis-session.d.ts +0 -1
  87. package/dist/web-video-engine/analysis.d.ts +0 -1
  88. package/dist/web-video-engine/analysis.js +211 -23
  89. package/dist/web-video-engine/cache-budget.d.ts +0 -1
  90. package/dist/web-video-engine/canvas-sink-scrub-cursor.d.ts +6 -2
  91. package/dist/web-video-engine/clock.d.ts +0 -1
  92. package/dist/web-video-engine/constants.d.ts +9 -1
  93. package/dist/web-video-engine/create-scrub-cursor.d.ts +6 -3
  94. package/dist/web-video-engine/decode-resolution.d.ts +0 -1
  95. package/dist/web-video-engine/decode-scheduler.d.ts +26 -5
  96. package/dist/web-video-engine/decode-session.d.ts +11 -1
  97. package/dist/web-video-engine/decode-source.d.ts +11 -1
  98. package/dist/web-video-engine/diagnostics-store.d.ts +0 -1
  99. package/dist/web-video-engine/diagnostics.d.ts +19 -19
  100. package/dist/web-video-engine/embedded-engine-worker.d.ts +0 -1
  101. package/dist/web-video-engine/engine-core.d.ts +31 -11
  102. package/dist/web-video-engine/engine.d.ts +3 -4
  103. package/dist/web-video-engine/engine.js +175 -44
  104. package/dist/web-video-engine/engine.worker.d.ts +0 -1
  105. package/dist/web-video-engine/engine.worker.js +5712 -2947
  106. package/dist/web-video-engine/frame-cache.d.ts +121 -12
  107. package/dist/web-video-engine/frame-extractor.d.ts +0 -1
  108. package/dist/web-video-engine/{frame-timeline-GINI8Gum.js → frame-timeline-DreEwsRY.js} +83 -27
  109. package/dist/web-video-engine/frame-timeline.d.ts +10 -1
  110. package/dist/web-video-engine/frame-walker.d.ts +0 -1
  111. package/dist/web-video-engine/index.d.ts +12 -2
  112. package/dist/web-video-engine/index.d.ts.map +1 -1
  113. package/dist/web-video-engine/index.js +2 -2
  114. package/dist/web-video-engine/key-packet.d.ts +0 -1
  115. package/dist/web-video-engine/keyframe-index.d.ts +0 -1
  116. package/dist/web-video-engine/mirror-store.d.ts +0 -1
  117. package/dist/web-video-engine/pausable-deadline.d.ts +11 -0
  118. package/dist/web-video-engine/renderer.d.ts +0 -1
  119. package/dist/web-video-engine/rotation.d.ts +0 -1
  120. package/dist/web-video-engine/scrub-controller.d.ts +8 -5
  121. package/dist/web-video-engine/scrub-cursor.d.ts +15 -7
  122. package/dist/web-video-engine/scrub-trajectory.d.ts +0 -1
  123. package/dist/web-video-engine/source-residency.d.ts +35 -1
  124. package/dist/web-video-engine/trace-recorder.d.ts +0 -1
  125. package/dist/web-video-engine/types.d.ts +18 -22
  126. package/dist/web-video-engine/video-engine.d.ts +39 -17
  127. package/dist/web-video-engine/webgpu-renderer.d.ts +0 -1
  128. package/dist/web-video-engine/worker-bridge.d.ts +0 -1
  129. package/dist/web-video-engine/worker-dispatch.d.ts +0 -1
  130. package/dist/web-video-engine/worker-protocol.d.ts +38 -15
  131. package/node_modules/supervision-js-core/dist/detections/buffered-detection-timeline.d.ts.map +1 -1
  132. package/node_modules/supervision-js-core/dist/index.d.ts +2 -2
  133. package/node_modules/supervision-js-core/dist/index.d.ts.map +1 -1
  134. package/node_modules/supervision-js-core/dist/index.js +182 -68
  135. package/node_modules/supervision-js-core/dist/index.js.map +1 -1
  136. package/node_modules/supervision-js-core/dist/types/detection-timeline.d.ts +20 -3
  137. package/node_modules/supervision-js-core/dist/types/detection-timeline.d.ts.map +1 -1
  138. package/node_modules/supervision-js-core/dist/types/media-rendering.d.ts +28 -26
  139. package/node_modules/supervision-js-core/dist/types/media-rendering.d.ts.map +1 -1
  140. package/node_modules/supervision-js-core/dist/types/session-lifecycle.d.ts +16 -0
  141. package/node_modules/supervision-js-core/dist/types/session-lifecycle.d.ts.map +1 -1
  142. package/node_modules/supervision-js-core/dist/utils/detection-masks.d.ts.map +1 -1
  143. package/node_modules/supervision-js-core/dist/utils/id-mask-frame.d.ts +19 -0
  144. package/node_modules/supervision-js-core/dist/utils/id-mask-frame.d.ts.map +1 -1
  145. package/package.json +3 -3
  146. package/dist/media/media-condition-probe.d.ts +0 -51
  147. package/dist/media/media-condition-probe.d.ts.map +0 -1
  148. package/dist/media/media-conditions.d.ts +0 -28
  149. package/dist/media/media-conditions.d.ts.map +0 -1
  150. package/dist/types/media-conditions.d.ts +0 -149
  151. package/dist/types/media-conditions.d.ts.map +0 -1
  152. package/dist/web-video-engine/analysis-session.d.ts.map +0 -1
  153. package/dist/web-video-engine/analysis.d.ts.map +0 -1
  154. package/dist/web-video-engine/analysis.js.map +0 -1
  155. package/dist/web-video-engine/cache-budget.d.ts.map +0 -1
  156. package/dist/web-video-engine/canvas-sink-scrub-cursor.d.ts.map +0 -1
  157. package/dist/web-video-engine/clock.d.ts.map +0 -1
  158. package/dist/web-video-engine/constants.d.ts.map +0 -1
  159. package/dist/web-video-engine/create-scrub-cursor.d.ts.map +0 -1
  160. package/dist/web-video-engine/decode-resolution.d.ts.map +0 -1
  161. package/dist/web-video-engine/decode-scheduler.d.ts.map +0 -1
  162. package/dist/web-video-engine/decode-session.d.ts.map +0 -1
  163. package/dist/web-video-engine/decode-source.d.ts.map +0 -1
  164. package/dist/web-video-engine/diagnostics-store.d.ts.map +0 -1
  165. package/dist/web-video-engine/diagnostics.d.ts.map +0 -1
  166. package/dist/web-video-engine/embedded-engine-worker.d.ts.map +0 -1
  167. package/dist/web-video-engine/engine-core.d.ts.map +0 -1
  168. package/dist/web-video-engine/engine.d.ts.map +0 -1
  169. package/dist/web-video-engine/engine.js.map +0 -1
  170. package/dist/web-video-engine/engine.worker.d.ts.map +0 -1
  171. package/dist/web-video-engine/engine.worker.js.map +0 -1
  172. package/dist/web-video-engine/frame-cache.d.ts.map +0 -1
  173. package/dist/web-video-engine/frame-extractor.d.ts.map +0 -1
  174. package/dist/web-video-engine/frame-timeline-GINI8Gum.js.map +0 -1
  175. package/dist/web-video-engine/frame-timeline.d.ts.map +0 -1
  176. package/dist/web-video-engine/frame-walker.d.ts.map +0 -1
  177. package/dist/web-video-engine/key-packet.d.ts.map +0 -1
  178. package/dist/web-video-engine/keyframe-index.d.ts.map +0 -1
  179. package/dist/web-video-engine/mirror-store.d.ts.map +0 -1
  180. package/dist/web-video-engine/renderer.d.ts.map +0 -1
  181. package/dist/web-video-engine/rotation.d.ts.map +0 -1
  182. package/dist/web-video-engine/scrub-controller.d.ts.map +0 -1
  183. package/dist/web-video-engine/scrub-cursor.d.ts.map +0 -1
  184. package/dist/web-video-engine/scrub-trajectory.d.ts.map +0 -1
  185. package/dist/web-video-engine/source-residency.d.ts.map +0 -1
  186. package/dist/web-video-engine/trace-recorder.d.ts.map +0 -1
  187. package/dist/web-video-engine/types.d.ts.map +0 -1
  188. package/dist/web-video-engine/video-engine.d.ts.map +0 -1
  189. package/dist/web-video-engine/webgpu-renderer.d.ts.map +0 -1
  190. package/dist/web-video-engine/worker-bridge.d.ts.map +0 -1
  191. package/dist/web-video-engine/worker-dispatch.d.ts.map +0 -1
  192. package/dist/web-video-engine/worker-protocol.d.ts.map +0 -1
@@ -1,6 +1,7 @@
1
1
  import { BlobSource, ReadableStreamSource, UrlSource } from "mediabunny";
2
2
  import type { CreateScrubCursorOptions } from "./create-scrub-cursor";
3
3
  import { type SessionFrameSource } from "./decode-session";
4
+ import { type DecodeDimensions } from "./decode-resolution";
4
5
  import type { SourceResidency } from "./source-residency";
5
6
  import type { KeyframeProbe } from "./keyframe-index";
6
7
  import { type ScrubTrackInfo, type VideoSampleLike } from "./scrub-cursor";
@@ -97,6 +98,7 @@ export type DecodedFrame = {
97
98
  * which the scheduler reports so a human can see which machinery is decoding.
98
99
  */
99
100
  export interface FrameProvider {
101
+ resizeOutput?(dimensions: DecodeDimensions): Promise<void>;
100
102
  readonly decodePath: DecodePath;
101
103
  readonly track: ScrubTrackInfo;
102
104
  readonly keyframeProbe: KeyframeProbe;
@@ -220,6 +222,15 @@ export interface DecodeSessionContext {
220
222
  * anchor trick applies to this bitstream. */
221
223
  readonly decoderConfig: VideoDecoderConfig;
222
224
  }
225
+ /** Platform facts used to contain decoder-output ownership to Android.
226
+ * Client hints win when available so desktop UA emulation cannot accidentally
227
+ * turn the expensive path on. */
228
+ export interface DecodeSessionPixelOwnershipContext {
229
+ readonly clientPlatform?: string;
230
+ readonly userAgent?: string;
231
+ readonly offscreenCanvasAvailable: boolean;
232
+ }
233
+ export declare function shouldOwnDecodeSessionPixels(context: DecodeSessionPixelOwnershipContext): boolean;
223
234
  /**
224
235
  * The gate. The session reaches a non-IDR anchor by declaring it a recovery
225
236
  * point, which only holds for AVCC-framed H.264 carrying its parameter sets, so
@@ -247,4 +258,3 @@ export declare function toMediabunnySource(source: VideoSource, residency?: Sour
247
258
  * to a degraded-but-alive state instead of rebuilding for that kind.
248
259
  */
249
260
  export declare function isReopenableSource(source: VideoSource): boolean;
250
- //# sourceMappingURL=decode-source.d.ts.map
@@ -15,4 +15,3 @@ export declare class DiagnosticsStore {
15
15
  write(snapshot: DiagnosticsSnapshot): void;
16
16
  subscribe(listener: () => void): () => void;
17
17
  }
18
- //# sourceMappingURL=diagnostics-store.d.ts.map
@@ -20,9 +20,10 @@ export interface DiagnosticsTrack {
20
20
  * owned, null on the uncached cursor). All plain data, so it crosses the worker
21
21
  * boundary by structured clone.
22
22
  *
23
- * This is the legacy getStats shape, kept as a back-compat subset of the richer
24
- * DiagnosticsSnapshot the broadcast plane carries. Existing getStats consumers
25
- * read these three fields; the diagnostics instrument reads the superset.
23
+ * What `getStats` answers with, one round trip per call and no broadcast timer
24
+ * required. {@link DiagnosticsSnapshot} opens with these same three fields and
25
+ * carries the rest of the instrument payload, but only while the diagnostics
26
+ * broadcast is running.
26
27
  */
27
28
  export interface EngineDiagnostics {
28
29
  readonly renderer: RendererName | null;
@@ -182,21 +183,6 @@ export interface Warning {
182
183
  readonly advice: string;
183
184
  readonly evidence: string;
184
185
  }
185
- /**
186
- * The clone-safe wire snapshot the worker broadcasts at BROADCAST_HZ. A superset
187
- * of EngineDiagnostics: it keeps renderer/track/scheduler verbatim so legacy
188
- * readers still resolve, and adds the realtime needles, the pipeline ledger,
189
- * derived cache bytes, track geometry, GOP block, scrub aggregates, the
190
- * play-time seek block, counters, memory, the clock/screen pair, and the
191
- * worker-evaluated warnings. Only plain data crosses the boundary.
192
- *
193
- * webgpuAvailable and memory.jsHeapUsedBytes are the fields the worker leaves at
194
- * their empty value for the main thread to fill after the broadcast, so a rule
195
- * in evaluateWarnings (which runs in the worker) can never read them, and an
196
- * exported trace, assembled worker-side, carries the unfilled value. Warnings
197
- * are evaluated once, worker-side, so the HUD and an exported trace always show
198
- * the same diagnoses.
199
- */
200
186
  /**
201
187
  * Source bytes this process holds, for a host that wants to show a viewer how
202
188
  * much of the clip is local. Null unless the engine was loaded with
@@ -213,6 +199,21 @@ export interface SourceResidencyDiagnostics {
213
199
  readonly prefetchedBytes: number;
214
200
  readonly warming: boolean;
215
201
  }
202
+ /**
203
+ * The clone-safe wire snapshot the worker broadcasts at BROADCAST_HZ. A superset
204
+ * of {@link EngineDiagnostics}: renderer, track and scheduler carry the same
205
+ * values, and it adds the realtime needles, the pipeline ledger, derived cache
206
+ * bytes, track geometry, GOP block, scrub aggregates, the play-time seek block,
207
+ * counters, memory, the clock/screen pair, and the worker-evaluated warnings.
208
+ * Only plain data crosses the boundary.
209
+ *
210
+ * webgpuAvailable and memory.jsHeapUsedBytes are the fields the worker leaves at
211
+ * their empty value for the main thread to fill after the broadcast, so a rule
212
+ * in evaluateWarnings (which runs in the worker) can never read them, and an
213
+ * exported trace, assembled worker-side, carries the unfilled value. Warnings
214
+ * are evaluated once, worker-side, so the HUD and an exported trace always show
215
+ * the same diagnoses.
216
+ */
216
217
  export interface DiagnosticsSnapshot {
217
218
  /**
218
219
  * Which presentation the engine was loaded for. `renderer` and the geometry
@@ -313,4 +314,3 @@ export declare function cacheLookups(cache: FrameCacheStats | null | undefined):
313
314
  * UI and the trace share) and in tests. No I/O, no side effects.
314
315
  */
315
316
  export declare function evaluateWarnings(snapshot: DiagnosticsSnapshot): Warning[];
316
- //# sourceMappingURL=diagnostics.d.ts.map
@@ -1,2 +1 @@
1
1
  export declare const EMBEDDED_ENGINE_WORKER_SOURCE = "__SUPERVISION_JS_EMBEDDED_ENGINE_WORKER_SOURCE__";
2
- //# sourceMappingURL=embedded-engine-worker.d.ts.map
@@ -1,5 +1,6 @@
1
1
  import { type MediaClock } from "./clock";
2
- import type { FrameLanding } from "./frame-timeline";
2
+ import { type DisplayBoxResolutionOptions } from "./decode-resolution";
3
+ import type { FrameId, FrameLanding } from "./frame-timeline";
3
4
  import { type EngineDiagnostics } from "./diagnostics";
4
5
  import { type SeekIntent } from "./scrub-cursor";
5
6
  import { type EngineTrace } from "./trace-recorder";
@@ -38,6 +39,8 @@ export interface EngineCoreOptions {
38
39
  * the core never emits a competing time that would yank a settled playhead.
39
40
  */
40
41
  export declare class EngineCore {
42
+ private decodeStrategy;
43
+ private displayResize;
41
44
  private readonly emit;
42
45
  private readonly emitDiagnostics;
43
46
  private readonly emitPresentedFrame;
@@ -82,6 +85,7 @@ export declare class EngineCore {
82
85
  * so without the target on it any leftover frame answers for the seek in
83
86
  * flight and publishes itself as the playhead. */
84
87
  private awaitedSeek;
88
+ private seekGeneration;
85
89
  /** Wall stamp of a seek being served by re-anchoring the playback walk, or
86
90
  * null when no such seek is waiting on its crisp frame. */
87
91
  private playSeekStartedAtMs;
@@ -91,7 +95,13 @@ export declare class EngineCore {
91
95
  private playSeekMaxMs;
92
96
  /** The frame the last paint put up, for the diagnostics screen readout. */
93
97
  private lastPaintedId;
94
- /** Mirrors VideoEngine's interactive-seek latch: true when a drag paused a
98
+ /** Last frame the host confirmed reached its display surface. */
99
+ private lastHostFrame;
100
+ /** Rejects an older refresh that completes after a newer one in one epoch. */
101
+ private lastHostPaintSeq;
102
+ /** Main-thread visibility pauses only the wait for host presentation. */
103
+ private presentationVisible;
104
+ /** Mirrors WebVideoEngine's interactive-seek latch: true when a drag paused a
95
105
  * playing engine, so endInteractiveSeek knows to resume. */
96
106
  private resumeAfterInteractiveSeek;
97
107
  /** Worker-realm broadcast timer handle, or null when diagnostics are off. */
@@ -117,6 +127,8 @@ export declare class EngineCore {
117
127
  */
118
128
  setCanvas(canvas: OffscreenCanvas | null, viewport?: SerializedViewport): void;
119
129
  load(config: EngineLoadConfig): Promise<EngineReadySnapshot>;
130
+ setDisplay(display: DisplayBoxResolutionOptions): Promise<boolean>;
131
+ private afterDisplayResize;
120
132
  play(): void;
121
133
  pause(): void;
122
134
  togglePlayback(): void;
@@ -160,13 +172,11 @@ export declare class EngineCore {
160
172
  * exported trace shows the playback-state timeline alongside paints/seeks. */
161
173
  private emitStatus;
162
174
  /**
163
- * The decoder cannot decode this source, and nothing else was going to say
164
- * so: a stalled decoder keeps accepting commands and the clock keeps
165
- * running, so playback reads as healthy over a canvas that will never change
166
- * again. Stop the transport first, then report, so the status a consumer
167
- * sees and what the engine is doing agree.
175
+ * The runtime can no longer deliver pixels, whether decoding stopped or the
176
+ * frames handoff failed. Stop the transport first, then report, so the status
177
+ * a consumer sees and what the engine is doing agree.
168
178
  */
169
- private handleDecodeFailure;
179
+ private handleTerminalFailure;
170
180
  /** Says the failure again for whoever just asked the transport to move. A
171
181
  * consumer that only listens for changes has already been told; one that
172
182
  * reads the status after its own command has to find the same answer. */
@@ -175,7 +185,7 @@ export declare class EngineCore {
175
185
  endInteractiveSeek(): void;
176
186
  dispose(): Promise<void>;
177
187
  /** True only when the cursor exists and reports settled. Mirrors
178
- * VideoEngine.isIdle for tests; the facade derives its own from state. */
188
+ * WebVideoEngine.isIdle for tests; the facade derives its own from state. */
179
189
  isIdle(): boolean;
180
190
  /** Engine diagnostics snapshot (renderer, track facts, scheduler stats), or
181
191
  * null before load. The scheduler field is null on the uncached cursor. */
@@ -183,7 +193,14 @@ export declare class EngineCore {
183
193
  private observeSeekIdle;
184
194
  private handleEnded;
185
195
  private awaitSeekLanding;
196
+ /** Main-thread document visibility; decoding/watchdogs remain active. */
197
+ setPresentationVisibility(visible: boolean): void;
198
+ private isCurrentSeek;
186
199
  private forgetSeekLanding;
200
+ private abandonAwaitedSeek;
201
+ /** Ends an impossible landing. Awaitable movement rejects with the engine's
202
+ * terminal error; a scrub has no consumer, so it is released quietly. */
203
+ private failAwaitedSeek;
187
204
  /** Releases the latch of a seek that has already answered its caller. The
188
205
  * landing rode back on the return value, so a paint arriving after it would
189
206
  * move the playhead to somewhere the caller was never told about. */
@@ -200,7 +217,6 @@ export declare class EngineCore {
200
217
  /** The frame table of the loaded source. Reached only from paths that have
201
218
  * already established a cursor, which is what carries it. */
202
219
  private timeline;
203
- private landingOf;
204
220
  /**
205
221
  * Points the background walk at where the viewer is, as a byte offset. The
206
222
  * file's own byte layout is not exposed, so this reads position as a share of
@@ -209,6 +225,11 @@ export declare class EngineCore {
209
225
  */
210
226
  private aimResidency;
211
227
  private onPaint;
228
+ /** Makes only a frame the host actually rendered authoritative for playback
229
+ * time and pause settlement. An older navigation or refresh cannot move the
230
+ * clock backward after a newer frame has won. */
231
+ acknowledgePresentedFrame(paintSeq: number, frameId: FrameId, navigationGeneration: number): void;
232
+ private beginPresentationGeneration;
212
233
  /**
213
234
  * Posts one frame with the identity of the paint it came from, in the same
214
235
  * message. With no sink wired there is no receiver, so the frame is closed
@@ -255,4 +276,3 @@ export declare class EngineCore {
255
276
  private devicePixelRatio;
256
277
  private traceEnvironment;
257
278
  }
258
- //# sourceMappingURL=engine-core.d.ts.map
@@ -1,5 +1,5 @@
1
- export { VideoEngine } from "./video-engine";
2
- export type { VideoEngineHandle, VideoEngineOptions } from "./video-engine";
1
+ export { WebVideoEngine } from "./video-engine";
2
+ export type { WebVideoEngineHandle, WebVideoEngineOptions, } from "./video-engine";
3
3
  export { SourceKind } from "./types";
4
4
  export type { BlobVideoSource, StreamVideoSource, UrlSourceReadConfig, UrlVideoSource, VideoMetadata, VideoSource, } from "./types";
5
5
  export { PlaybackStatus } from "./types";
@@ -18,9 +18,8 @@ export { asFps, asPaintSeq, asSec } from "./types";
18
18
  export type { Fps, Sec } from "./types";
19
19
  export { cappedResolution, displayBoxResolution, nativeResolution, viewportResolution, } from "./decode-resolution";
20
20
  export type { DecodeResolutionStrategy, DisplayBoxResolutionOptions, ViewportResolutionOptions, } from "./decode-resolution";
21
- export { VideoEngineError, VideoEngineErrorCode } from "./types";
21
+ export { WebVideoEngineError, WebVideoEngineErrorCode } from "./types";
22
22
  export type { Warning, WarningSeverity } from "./diagnostics";
23
23
  export type { DiagnosticsSnapshot, SourceResidencyDiagnostics, } from "./diagnostics";
24
24
  export type { SourceResidencyConfig } from "./worker-protocol";
25
25
  export { DIAGNOSTICS, TRACE_RING_BOUNDS } from "./constants";
26
- //# sourceMappingURL=engine.d.ts.map