supervision 0.1.7 → 0.2.0-next.0
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.
- package/dist/detections/chunked-detection-frame-source.d.ts.map +1 -1
- package/dist/index.d.ts +11 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8856 -4559
- package/dist/index.js.map +1 -1
- package/dist/mask-preparation.worker.js +310 -164
- package/dist/mask-preparation.worker.js.map +1 -1
- package/dist/media/display-pixel-ratio.d.ts +15 -0
- package/dist/media/display-pixel-ratio.d.ts.map +1 -0
- package/dist/media/engine-import-failure.d.ts +16 -0
- package/dist/media/engine-import-failure.d.ts.map +1 -0
- package/dist/media/media-condition-probe.d.ts +51 -0
- package/dist/media/media-condition-probe.d.ts.map +1 -0
- package/dist/media/media-conditions.d.ts +28 -0
- package/dist/media/media-conditions.d.ts.map +1 -0
- package/dist/media/media-errors.d.ts +6 -0
- package/dist/media/media-errors.d.ts.map +1 -1
- package/dist/media/media-normalization.d.ts.map +1 -1
- package/dist/media/media-probe.d.ts.map +1 -1
- package/dist/media/media-source.d.ts +17 -0
- package/dist/media/media-source.d.ts.map +1 -1
- package/dist/media/mediabunny-media-source.d.ts.map +1 -1
- package/dist/media/video-engine-media-source.d.ts +44 -0
- package/dist/media/video-engine-media-source.d.ts.map +1 -0
- package/dist/render-preparation/mask-frame-artifact.d.ts +46 -12
- package/dist/render-preparation/mask-frame-artifact.d.ts.map +1 -1
- package/dist/render-preparation/mask-frame-compositor.d.ts +5 -5
- package/dist/render-preparation/mask-frame-compositor.d.ts.map +1 -1
- package/dist/render-preparation/mask-frame-preparer.d.ts.map +1 -1
- package/dist/render-preparation/mask-preparation-worker-count.d.ts +4 -4
- package/dist/render-preparation/mask-preparation-worker-protocol.d.ts +12 -3
- package/dist/render-preparation/mask-preparation-worker-protocol.d.ts.map +1 -1
- package/dist/render-preparation/prepared-render-window.d.ts +23 -0
- package/dist/render-preparation/prepared-render-window.d.ts.map +1 -1
- package/dist/render-preparation/prepared-window-timeline.d.ts +2 -6
- package/dist/render-preparation/prepared-window-timeline.d.ts.map +1 -1
- package/dist/renderers/mask-palette.d.ts +14 -0
- package/dist/renderers/mask-palette.d.ts.map +1 -0
- package/dist/renderers/mask-vertex.d.ts +14 -0
- package/dist/renderers/mask-vertex.d.ts.map +1 -0
- package/dist/renderers/media-renderer-core.d.ts.map +1 -1
- package/dist/renderers/media-renderer-scene.d.ts +37 -0
- package/dist/renderers/media-renderer-scene.d.ts.map +1 -1
- package/dist/renderers/media-renderer-state.d.ts +11 -1
- package/dist/renderers/media-renderer-state.d.ts.map +1 -1
- package/dist/renderers/media-renderer-transport.d.ts +59 -0
- package/dist/renderers/media-renderer-transport.d.ts.map +1 -0
- package/dist/renderers/pixi-box-layer.d.ts +5 -0
- package/dist/renderers/pixi-box-layer.d.ts.map +1 -1
- package/dist/renderers/pixi-focus-layer.d.ts +18 -2
- package/dist/renderers/pixi-focus-layer.d.ts.map +1 -1
- package/dist/renderers/pixi-frame-present.d.ts +77 -0
- package/dist/renderers/pixi-frame-present.d.ts.map +1 -0
- package/dist/renderers/pixi-id-mask-shader.d.ts +12 -2
- package/dist/renderers/pixi-id-mask-shader.d.ts.map +1 -1
- package/dist/renderers/pixi-interaction-layer.d.ts.map +1 -1
- package/dist/renderers/pixi-interaction-presentation-layer.d.ts +13 -2
- package/dist/renderers/pixi-interaction-presentation-layer.d.ts.map +1 -1
- package/dist/renderers/pixi-mask-halo.d.ts +24 -0
- package/dist/renderers/pixi-mask-halo.d.ts.map +1 -1
- package/dist/renderers/pixi-mask-layer.d.ts +71 -8
- package/dist/renderers/pixi-mask-layer.d.ts.map +1 -1
- package/dist/renderers/pixi-media-scene.d.ts +67 -0
- package/dist/renderers/pixi-media-scene.d.ts.map +1 -1
- package/dist/renderers/pixi-polygon-layer.d.ts +7 -2
- package/dist/renderers/pixi-polygon-layer.d.ts.map +1 -1
- package/dist/renderers/pixi-region-coverage-mask.d.ts +91 -0
- package/dist/renderers/pixi-region-coverage-mask.d.ts.map +1 -0
- package/dist/renderers/pixi-region-effect.d.ts +42 -0
- package/dist/renderers/pixi-region-effect.d.ts.map +1 -0
- package/dist/renderers/pixi-region-layer.d.ts +68 -2
- package/dist/renderers/pixi-region-layer.d.ts.map +1 -1
- package/dist/renderers/pixi-vector-layer.d.ts.map +1 -1
- package/dist/renderers/prepared-annotation-window.d.ts +47 -0
- package/dist/renderers/prepared-annotation-window.d.ts.map +1 -0
- package/dist/renderers/presented-frame-channel.d.ts +107 -0
- package/dist/renderers/presented-frame-channel.d.ts.map +1 -0
- package/dist/renderers/scene-render-scheduler.d.ts +20 -0
- package/dist/renderers/scene-render-scheduler.d.ts.map +1 -0
- package/dist/sessions/media-session-defaults.d.ts +10 -6
- package/dist/sessions/media-session-defaults.d.ts.map +1 -1
- package/dist/sessions/media-session-media.d.ts.map +1 -1
- package/dist/sessions/media-session-state.d.ts.map +1 -1
- package/dist/sessions/media-session.d.ts.map +1 -1
- package/dist/tracking.worker.js +58 -3
- package/dist/tracking.worker.js.map +1 -1
- package/dist/types/media-conditions.d.ts +149 -0
- package/dist/types/media-conditions.d.ts.map +1 -0
- package/dist/types/media-normalization.d.ts +34 -0
- package/dist/types/media-normalization.d.ts.map +1 -1
- package/dist/types/media-renderer.d.ts +31 -1
- package/dist/types/media-renderer.d.ts.map +1 -1
- package/dist/types/media-session.d.ts +89 -8
- package/dist/types/media-session.d.ts.map +1 -1
- package/dist/types/render-preparation.d.ts +101 -4
- package/dist/types/render-preparation.d.ts.map +1 -1
- package/dist/web-video-engine/analysis-session.d.ts +76 -0
- package/dist/web-video-engine/analysis-session.d.ts.map +1 -0
- package/dist/web-video-engine/analysis.d.ts +7 -0
- package/dist/web-video-engine/analysis.d.ts.map +1 -0
- package/dist/web-video-engine/analysis.js +1678 -0
- package/dist/web-video-engine/analysis.js.map +1 -0
- package/dist/web-video-engine/cache-budget.d.ts +19 -0
- package/dist/web-video-engine/cache-budget.d.ts.map +1 -0
- package/dist/web-video-engine/canvas-sink-scrub-cursor.d.ts +90 -0
- package/dist/web-video-engine/canvas-sink-scrub-cursor.d.ts.map +1 -0
- package/dist/web-video-engine/clock.d.ts +83 -0
- package/dist/web-video-engine/clock.d.ts.map +1 -0
- package/dist/web-video-engine/constants.d.ts +253 -0
- package/dist/web-video-engine/constants.d.ts.map +1 -0
- package/dist/web-video-engine/create-scrub-cursor.d.ts +62 -0
- package/dist/web-video-engine/create-scrub-cursor.d.ts.map +1 -0
- package/dist/web-video-engine/decode-resolution.d.ts +115 -0
- package/dist/web-video-engine/decode-resolution.d.ts.map +1 -0
- package/dist/web-video-engine/decode-scheduler.d.ts +356 -0
- package/dist/web-video-engine/decode-scheduler.d.ts.map +1 -0
- package/dist/web-video-engine/decode-session.d.ts +276 -0
- package/dist/web-video-engine/decode-session.d.ts.map +1 -0
- package/dist/web-video-engine/decode-source.d.ts +250 -0
- package/dist/web-video-engine/decode-source.d.ts.map +1 -0
- package/dist/web-video-engine/diagnostics-store.d.ts +18 -0
- package/dist/web-video-engine/diagnostics-store.d.ts.map +1 -0
- package/dist/web-video-engine/diagnostics.d.ts +316 -0
- package/dist/web-video-engine/diagnostics.d.ts.map +1 -0
- package/dist/web-video-engine/embedded-engine-worker.d.ts +2 -0
- package/dist/web-video-engine/embedded-engine-worker.d.ts.map +1 -0
- package/dist/web-video-engine/engine-core.d.ts +258 -0
- package/dist/web-video-engine/engine-core.d.ts.map +1 -0
- package/dist/web-video-engine/engine.d.ts +26 -0
- package/dist/web-video-engine/engine.d.ts.map +1 -0
- package/dist/web-video-engine/engine.js +873 -0
- package/dist/web-video-engine/engine.js.map +1 -0
- package/dist/web-video-engine/engine.worker.d.ts +2 -0
- package/dist/web-video-engine/engine.worker.d.ts.map +1 -0
- package/dist/web-video-engine/engine.worker.js +31320 -0
- package/dist/web-video-engine/engine.worker.js.map +1 -0
- package/dist/web-video-engine/frame-cache.d.ts +129 -0
- package/dist/web-video-engine/frame-cache.d.ts.map +1 -0
- package/dist/web-video-engine/frame-extractor.d.ts +28 -0
- package/dist/web-video-engine/frame-extractor.d.ts.map +1 -0
- package/dist/web-video-engine/frame-timeline-GINI8Gum.js +560 -0
- package/dist/web-video-engine/frame-timeline-GINI8Gum.js.map +1 -0
- package/dist/web-video-engine/frame-timeline.d.ts +71 -0
- package/dist/web-video-engine/frame-timeline.d.ts.map +1 -0
- package/dist/web-video-engine/frame-walker.d.ts +74 -0
- package/dist/web-video-engine/frame-walker.d.ts.map +1 -0
- package/dist/web-video-engine/index.d.ts +3 -0
- package/dist/web-video-engine/index.d.ts.map +1 -0
- package/dist/web-video-engine/index.js +3 -0
- package/dist/web-video-engine/index.js.map +1 -0
- package/dist/web-video-engine/key-packet.d.ts +65 -0
- package/dist/web-video-engine/key-packet.d.ts.map +1 -0
- package/dist/web-video-engine/keyframe-index.d.ts +91 -0
- package/dist/web-video-engine/keyframe-index.d.ts.map +1 -0
- package/dist/web-video-engine/mirror-store.d.ts +56 -0
- package/dist/web-video-engine/mirror-store.d.ts.map +1 -0
- package/dist/web-video-engine/renderer.d.ts +94 -0
- package/dist/web-video-engine/renderer.d.ts.map +1 -0
- package/dist/web-video-engine/rotation.d.ts +35 -0
- package/dist/web-video-engine/rotation.d.ts.map +1 -0
- package/dist/web-video-engine/scrub-controller.d.ts +376 -0
- package/dist/web-video-engine/scrub-controller.d.ts.map +1 -0
- package/dist/web-video-engine/scrub-cursor.d.ts +342 -0
- package/dist/web-video-engine/scrub-cursor.d.ts.map +1 -0
- package/dist/web-video-engine/scrub-trajectory.d.ts +30 -0
- package/dist/web-video-engine/scrub-trajectory.d.ts.map +1 -0
- package/dist/web-video-engine/source-residency.d.ts +57 -0
- package/dist/web-video-engine/source-residency.d.ts.map +1 -0
- package/dist/web-video-engine/trace-recorder.d.ts +164 -0
- package/dist/web-video-engine/trace-recorder.d.ts.map +1 -0
- package/dist/web-video-engine/types.d.ts +204 -0
- package/dist/web-video-engine/types.d.ts.map +1 -0
- package/dist/web-video-engine/video-engine.d.ts +426 -0
- package/dist/web-video-engine/video-engine.d.ts.map +1 -0
- package/dist/web-video-engine/webgpu-renderer.d.ts +62 -0
- package/dist/web-video-engine/webgpu-renderer.d.ts.map +1 -0
- package/dist/web-video-engine/worker-bridge.d.ts +12 -0
- package/dist/web-video-engine/worker-bridge.d.ts.map +1 -0
- package/dist/web-video-engine/worker-dispatch.d.ts +17 -0
- package/dist/web-video-engine/worker-dispatch.d.ts.map +1 -0
- package/dist/web-video-engine/worker-protocol.d.ts +267 -0
- package/dist/web-video-engine/worker-protocol.d.ts.map +1 -0
- package/node_modules/supervision-js-core/dist/detections/buffered-detection-timeline.d.ts.map +1 -1
- package/node_modules/supervision-js-core/dist/detections/composite-detection-frame-source.d.ts.map +1 -1
- package/node_modules/supervision-js-core/dist/index.d.ts +4 -3
- package/node_modules/supervision-js-core/dist/index.d.ts.map +1 -1
- package/node_modules/supervision-js-core/dist/index.js +1075 -266
- package/node_modules/supervision-js-core/dist/index.js.map +1 -1
- package/node_modules/supervision-js-core/dist/styles/default-annotation-presentation.d.ts.map +1 -1
- package/node_modules/supervision-js-core/dist/styles/interaction-style.d.ts +4 -36
- package/node_modules/supervision-js-core/dist/styles/interaction-style.d.ts.map +1 -1
- package/node_modules/supervision-js-core/dist/styles/polyline-style.d.ts +5 -0
- package/node_modules/supervision-js-core/dist/styles/polyline-style.d.ts.map +1 -1
- package/node_modules/supervision-js-core/dist/types/annotation-renderer.d.ts +92 -7
- package/node_modules/supervision-js-core/dist/types/annotation-renderer.d.ts.map +1 -1
- package/node_modules/supervision-js-core/dist/types/detection-timeline.d.ts +179 -17
- package/node_modules/supervision-js-core/dist/types/detection-timeline.d.ts.map +1 -1
- package/node_modules/supervision-js-core/dist/types/media-rendering.d.ts +78 -2
- package/node_modules/supervision-js-core/dist/types/media-rendering.d.ts.map +1 -1
- package/node_modules/supervision-js-core/dist/types/polyline-style.d.ts +2 -0
- package/node_modules/supervision-js-core/dist/types/polyline-style.d.ts.map +1 -1
- package/node_modules/supervision-js-core/dist/types/session-lifecycle.d.ts +16 -0
- package/node_modules/supervision-js-core/dist/types/session-lifecycle.d.ts.map +1 -1
- package/node_modules/supervision-js-core/dist/utils/detection-conversions.d.ts.map +1 -1
- package/node_modules/supervision-js-core/dist/utils/detection-frames.d.ts +5 -0
- package/node_modules/supervision-js-core/dist/utils/detection-frames.d.ts.map +1 -1
- package/node_modules/supervision-js-core/dist/utils/detection-masks.d.ts +9 -0
- package/node_modules/supervision-js-core/dist/utils/detection-masks.d.ts.map +1 -1
- package/node_modules/supervision-js-core/dist/utils/detection-ranges.d.ts +18 -0
- package/node_modules/supervision-js-core/dist/utils/detection-ranges.d.ts.map +1 -0
- package/node_modules/supervision-js-core/dist/utils/id-mask-frame.d.ts +15 -2
- package/node_modules/supervision-js-core/dist/utils/id-mask-frame.d.ts.map +1 -1
- package/node_modules/supervision-js-core/dist/utils/wait-bound.d.ts +7 -0
- package/node_modules/supervision-js-core/dist/utils/wait-bound.d.ts.map +1 -0
- package/package.json +22 -1
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Two-tier frame cache, keyed by millisecond timestamp.
|
|
3
|
+
*
|
|
4
|
+
* The preview tier holds many downscaled frames: a long, coarse history that
|
|
5
|
+
* answers a scrub instantly while the crisp frame decodes. The exact tier holds
|
|
6
|
+
* a few full-resolution frames, bounded by a RAM budget rather than a fixed
|
|
7
|
+
* count so the slot count tracks frame size.
|
|
8
|
+
*
|
|
9
|
+
* A lookup prefers exact, then preview, tagging the hit with the tier that
|
|
10
|
+
* served it. Only an exact hit is full-resolution; a preview hit still owes the
|
|
11
|
+
* caller a crisp decode.
|
|
12
|
+
*
|
|
13
|
+
* Both tiers store OffscreenCanvas blits, never VideoFrames: a raw-frame cache
|
|
14
|
+
* pins decoder output, stalling the decoder and growing VRAM without bound. A
|
|
15
|
+
* frame fed as a live VideoSample is drawn into the blit and never retained, so
|
|
16
|
+
* the no-retention rule holds on the zero-copy path too.
|
|
17
|
+
*/
|
|
18
|
+
import type { VideoSampleLike } from "./scrub-cursor";
|
|
19
|
+
/**
|
|
20
|
+
* What the cache can blit into a tier: an already-decoded canvas/image, or a
|
|
21
|
+
* live VideoSample it draws once and never retains. The sample's draw scales to
|
|
22
|
+
* the tier size just like drawImage does, so the stored blit is identical either
|
|
23
|
+
* way.
|
|
24
|
+
*/
|
|
25
|
+
export type CacheBlitSource = CanvasImageSource | VideoSampleLike;
|
|
26
|
+
export declare enum FrameTier {
|
|
27
|
+
Exact = "exact",
|
|
28
|
+
Preview = "preview"
|
|
29
|
+
}
|
|
30
|
+
export interface CachedFrame {
|
|
31
|
+
readonly canvas: OffscreenCanvas;
|
|
32
|
+
readonly timestampMs: number;
|
|
33
|
+
readonly tier: FrameTier;
|
|
34
|
+
}
|
|
35
|
+
export interface FrameCacheStats {
|
|
36
|
+
readonly exactHits: number;
|
|
37
|
+
readonly previewHits: number;
|
|
38
|
+
readonly misses: number;
|
|
39
|
+
readonly exactSize: number;
|
|
40
|
+
readonly previewSize: number;
|
|
41
|
+
readonly exactCapacity: number;
|
|
42
|
+
readonly previewCapacity: number;
|
|
43
|
+
/** True timestamps (ms) currently resident in each tier, for the diagnostics
|
|
44
|
+
* timeline. Bounded by capacity, so a small array per poll. */
|
|
45
|
+
readonly exactTimestampsMs: number[];
|
|
46
|
+
readonly previewTimestampsMs: number[];
|
|
47
|
+
/** Configured source frame interval: the visual width of each cached mark on
|
|
48
|
+
* the timeline. Keys are per-millisecond, so this is a display width and
|
|
49
|
+
* not the grid entries land on. */
|
|
50
|
+
readonly bucketMs: number;
|
|
51
|
+
/** Frames dropped to LRU pressure per tier, and puts that landed in an
|
|
52
|
+
* occupied bucket (re-decodes collapsed onto one slot). */
|
|
53
|
+
readonly exactEvictions: number;
|
|
54
|
+
readonly previewEvictions: number;
|
|
55
|
+
readonly bucketCollapses: number;
|
|
56
|
+
/** Per-tier frame dimensions and the crisp tier's RAM ceiling, so a consumer
|
|
57
|
+
* can derive resident bytes (size x w x h x 4) and the budget fill. */
|
|
58
|
+
readonly exactFrameWidth: number;
|
|
59
|
+
readonly exactFrameHeight: number;
|
|
60
|
+
readonly previewFrameWidth: number;
|
|
61
|
+
readonly previewFrameHeight: number;
|
|
62
|
+
readonly exactBudgetBytes: number;
|
|
63
|
+
}
|
|
64
|
+
export interface FrameCacheOptions {
|
|
65
|
+
/** Crisp-tier frame size, the cursor's decode resolution. */
|
|
66
|
+
readonly exactWidth: number;
|
|
67
|
+
readonly exactHeight: number;
|
|
68
|
+
/** Coarse-tier width; height derives from the exact aspect ratio. */
|
|
69
|
+
readonly previewWidth: number;
|
|
70
|
+
/** Crisp scrub-tier RAM ceiling in bytes; slot count derives from frame size. */
|
|
71
|
+
readonly exactBudgetBytes: number;
|
|
72
|
+
/** Coarse-tier slot count. */
|
|
73
|
+
readonly previewCapacity: number;
|
|
74
|
+
/** Source frame interval in ms, reported to diagnostics as the timeline mark
|
|
75
|
+
* width. It does not key the tiers: a grid this wide rounds two adjacent
|
|
76
|
+
* frames onto one slot wherever the rounded interval exceeds the true one
|
|
77
|
+
* (24, 60fps and their pulldown rates), so each frame is keyed by its own
|
|
78
|
+
* millisecond instead. */
|
|
79
|
+
readonly bucketMs: number;
|
|
80
|
+
/** Floor on exact-tier slots, applied even when the byte budget would yield
|
|
81
|
+
* fewer. Lets a caller that owns the prefetch-window width guarantee a full
|
|
82
|
+
* window fits regardless of frame size. The cache stays ignorant of the
|
|
83
|
+
* window; it only honors the number it is handed. */
|
|
84
|
+
readonly minExactSlots?: number;
|
|
85
|
+
}
|
|
86
|
+
export declare class FrameCache {
|
|
87
|
+
private readonly exact;
|
|
88
|
+
private readonly preview;
|
|
89
|
+
private exactHits;
|
|
90
|
+
private previewHits;
|
|
91
|
+
private misses;
|
|
92
|
+
private readonly bucketMs;
|
|
93
|
+
private readonly exactBudgetBytes;
|
|
94
|
+
constructor(options: FrameCacheOptions);
|
|
95
|
+
/** Store a crisp full-resolution frame for the exact (scrub) tier. */
|
|
96
|
+
putExact(timestampMs: number, src: CacheBlitSource, srcWidth: number, srcHeight: number): void;
|
|
97
|
+
/** Store a downscaled frame for the coarse preview tier. */
|
|
98
|
+
putPreview(timestampMs: number, src: CacheBlitSource, srcWidth: number, srcHeight: number): void;
|
|
99
|
+
/**
|
|
100
|
+
* Best cached frame for `timestampMs`, consulting the exact tier then the
|
|
101
|
+
* preview tier: a crisp hit within `exactTolMs`, else a coarse hit within
|
|
102
|
+
* `previewTolMs`, else null. The two tolerances differ because the exact tier
|
|
103
|
+
* is keyed per source frame while the preview tier may only hold sparse
|
|
104
|
+
* keyframes.
|
|
105
|
+
*
|
|
106
|
+
* `exactTolMs` is an upper bound, not the reach: a crisp hit is also held to
|
|
107
|
+
* the frame span the exact tier has observed, since a tolerance wider than
|
|
108
|
+
* one frame (50ms is, at every rate from 24 to 60fps) would let a neighbour
|
|
109
|
+
* answer as the exact frame.
|
|
110
|
+
*/
|
|
111
|
+
get(timestampMs: number, exactTolMs: number, previewTolMs: number): CachedFrame | null;
|
|
112
|
+
/**
|
|
113
|
+
* Same lookup as get() but without touching the hit/miss accounting. The
|
|
114
|
+
* synchronous render-loop peek and the authoritative seek both hit the cache
|
|
115
|
+
* for one user gesture; counting both double-books every scrub. The peek
|
|
116
|
+
* uses this so only the seek's get() is tallied, keeping the hit-rate a
|
|
117
|
+
* per-lookup rate rather than two-per-gesture.
|
|
118
|
+
*/
|
|
119
|
+
peek(timestampMs: number, exactTolMs: number, previewTolMs: number): CachedFrame | null;
|
|
120
|
+
/**
|
|
121
|
+
* Marks the exact entry nearest `timestampMs` as most-recently-used without
|
|
122
|
+
* counting a hit. Lets the scheduler protect the just-shown center frame
|
|
123
|
+
* from being the LRU victim of its own neighbor sweep. No-op on a miss.
|
|
124
|
+
*/
|
|
125
|
+
bumpExact(timestampMs: number): void;
|
|
126
|
+
clear(): void;
|
|
127
|
+
get stats(): FrameCacheStats;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=frame-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-cache.d.ts","sourceRoot":"","sources":["../src/frame-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AnalysisSession, type AnalysisOptions, type ExtractedFrame } from "./analysis-session";
|
|
2
|
+
/**
|
|
3
|
+
* A second consumer of the runtime, built only on AnalysisSession's public
|
|
4
|
+
* surface, with no reach into the cursor, cache, worker, or render loop. Its
|
|
5
|
+
* existence is the proof that the analysis primitive is reusable: a thumbnail
|
|
6
|
+
* strip or contact sheet is just a choice of which timestamps to pull, and the
|
|
7
|
+
* open/close pair shows the full source lifecycle is reachable from the public
|
|
8
|
+
* API alone.
|
|
9
|
+
*/
|
|
10
|
+
export declare class FrameExtractor {
|
|
11
|
+
private readonly session;
|
|
12
|
+
constructor(session: AnalysisSession);
|
|
13
|
+
/** Opens a source and returns an extractor that owns it; close() disposes it. */
|
|
14
|
+
static open(options: AnalysisOptions): Promise<FrameExtractor>;
|
|
15
|
+
/** Frames at exactly the given timestamps (seconds). */
|
|
16
|
+
extractAt(timestampsS: readonly number[]): Promise<ExtractedFrame[]>;
|
|
17
|
+
/**
|
|
18
|
+
* `count` frames evenly spaced across the source, each sampled at the
|
|
19
|
+
* middle of its slice so neither the first black frame nor the exact end
|
|
20
|
+
* dominates the strip.
|
|
21
|
+
*/
|
|
22
|
+
evenlySpaced(count: number): Promise<ExtractedFrame[]>;
|
|
23
|
+
/** One frame per keyframe in the range: a contact sheet that decodes cheaply. */
|
|
24
|
+
atKeyframes(startS?: number, endS?: number): Promise<ExtractedFrame[]>;
|
|
25
|
+
/** Disposes the underlying analysis session. */
|
|
26
|
+
close(): Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=frame-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-extractor.d.ts","sourceRoot":"","sources":["../src/frame-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;GAOG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,eAAe;IAErD,iFAAiF;WACpE,IAAI,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAIpE,wDAAwD;IACxD,SAAS,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAIpE;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAQtD,iFAAiF;IAC3E,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAK5E,gDAAgD;IAChD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB"}
|