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,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a container keeps the table that says which byte range holds which
|
|
3
|
+
* frame.
|
|
4
|
+
*/
|
|
5
|
+
export declare enum MediaIndexPlacement {
|
|
6
|
+
/** Before the media data, so an open reads it in the first bytes. */
|
|
7
|
+
Front = "front",
|
|
8
|
+
/** After the media data, so an open over a link seeks to the end first. */
|
|
9
|
+
End = "end",
|
|
10
|
+
/** One index per fragment, spread through the file. */
|
|
11
|
+
Fragmented = "fragmented",
|
|
12
|
+
/** Not an ISO base media file, which is the only layout this probe reads. */
|
|
13
|
+
Unknown = "unknown"
|
|
14
|
+
}
|
|
15
|
+
/** A fact about a source that conversion could be a response to. */
|
|
16
|
+
export declare enum MediaConditionCode {
|
|
17
|
+
/** The demuxer does not read this file's container. */
|
|
18
|
+
ContainerUnreadable = "containerUnreadable",
|
|
19
|
+
/** The container opened and the demuxer parsed no track out of it. */
|
|
20
|
+
VideoTrackUnreadable = "videoTrackUnreadable",
|
|
21
|
+
/** The container's tracks read and none of them carries video. */
|
|
22
|
+
NoVideoTrack = "noVideoTrack",
|
|
23
|
+
/** A video track the demuxer cannot name a codec for, so no decoder can be
|
|
24
|
+
* configured for it whatever the browser supports. */
|
|
25
|
+
CodecUnnamed = "codecUnnamed",
|
|
26
|
+
/** The codec is named and this browser has no decoder for it. */
|
|
27
|
+
CodecUndecodable = "codecUndecodable",
|
|
28
|
+
/**
|
|
29
|
+
* Frames do not arrive on a steady grid: two share a presentation timestamp,
|
|
30
|
+
* or the gaps between them take more values than a timebase's own rounding
|
|
31
|
+
* explains. Frame indices reconstructed as `round(time * rate)` name the
|
|
32
|
+
* wrong frame on such a source.
|
|
33
|
+
*/
|
|
34
|
+
UnstableFrameTiming = "unstableFrameTiming",
|
|
35
|
+
/** The frame index sits after the media data, so opening over a link pays a
|
|
36
|
+
* seek to the end of the file before the first frame. */
|
|
37
|
+
IndexAtEnd = "indexAtEnd",
|
|
38
|
+
/** The file carries one index per fragment rather than one for the whole. */
|
|
39
|
+
IndexFragmented = "indexFragmented",
|
|
40
|
+
/** The first frame's presentation timestamp is not zero, so media time and
|
|
41
|
+
* elapsed time are different numbers on this source. */
|
|
42
|
+
NonZeroStart = "nonZeroStart"
|
|
43
|
+
}
|
|
44
|
+
/** What a condition stands in the way of. */
|
|
45
|
+
export declare enum MediaConditionScope {
|
|
46
|
+
/** Getting a picture on screen at all. */
|
|
47
|
+
Playback = "playback",
|
|
48
|
+
/** Naming the frame on screen by index, which is how detections are paired. */
|
|
49
|
+
FrameIndexing = "frameIndexing"
|
|
50
|
+
}
|
|
51
|
+
/** What to do about a condition. */
|
|
52
|
+
export declare enum MediaConditionResponse {
|
|
53
|
+
/** Open the source as it is. */
|
|
54
|
+
None = "none",
|
|
55
|
+
/** Copy the coded frames into another container without re-encoding them. */
|
|
56
|
+
RemuxFirst = "remuxFirst",
|
|
57
|
+
/** Re-encode, and open the result once it is finished. */
|
|
58
|
+
ConvertFirst = "convertFirst",
|
|
59
|
+
/** Re-encode, and open the prefix as it is written. */
|
|
60
|
+
ConvertProgressively = "convertProgressively",
|
|
61
|
+
/** Do not open it, and say why. */
|
|
62
|
+
Refuse = "refuse"
|
|
63
|
+
}
|
|
64
|
+
/** Whether a response leaves the frame sequence detections index intact. */
|
|
65
|
+
export declare enum ConversionFrameEffect {
|
|
66
|
+
/** Every source frame comes out, at its own presentation time. */
|
|
67
|
+
Preserved = "preserved",
|
|
68
|
+
/** The output carries a different frame sequence from the source, so a
|
|
69
|
+
* detection indexed against the source names a different picture. */
|
|
70
|
+
Resampled = "resampled"
|
|
71
|
+
}
|
|
72
|
+
/** What the container's own layout says, read from its box headers. */
|
|
73
|
+
export interface MediaContainerFacts {
|
|
74
|
+
readonly indexPlacement: MediaIndexPlacement;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Frame timing measured over a bounded prefix of the track's packets, in the
|
|
78
|
+
* container's own integer tick grain.
|
|
79
|
+
*/
|
|
80
|
+
export interface MediaTimingFacts {
|
|
81
|
+
readonly tickRate: number;
|
|
82
|
+
readonly sampledPacketCount: number;
|
|
83
|
+
/** True when the sample reached the end of the track rather than the cap, so
|
|
84
|
+
* the verdict covers every frame rather than a prefix. */
|
|
85
|
+
readonly sampleComplete: boolean;
|
|
86
|
+
/** Pairs of frames sharing one presentation timestamp. */
|
|
87
|
+
readonly duplicateTimestampCount: number;
|
|
88
|
+
/** How many different gaps separate neighbouring frames. A constant-rate
|
|
89
|
+
* source has one, or two where the timebase cannot state the rate exactly. */
|
|
90
|
+
readonly distinctGapCount: number;
|
|
91
|
+
readonly minGapTicks: number;
|
|
92
|
+
readonly medianGapTicks: number;
|
|
93
|
+
readonly maxGapTicks: number;
|
|
94
|
+
readonly firstTimestampTicks: number;
|
|
95
|
+
}
|
|
96
|
+
/** Everything the conditions are read from. Held as data so the reasoning is
|
|
97
|
+
* pure: the probe measures a source once and passes the facts in. */
|
|
98
|
+
export interface MediaConditionFacts {
|
|
99
|
+
/** Null when the container never opened. */
|
|
100
|
+
readonly container: MediaContainerFacts | null;
|
|
101
|
+
readonly trackCount: number;
|
|
102
|
+
readonly videoTrackCount: number;
|
|
103
|
+
/** Null on a video track the demuxer cannot name a codec for. */
|
|
104
|
+
readonly codec: string | null;
|
|
105
|
+
/** Null where no decoder could be asked, which is every realm without
|
|
106
|
+
* WebCodecs. Absent support is `false`, not `null`. */
|
|
107
|
+
readonly canDecode: boolean | null;
|
|
108
|
+
/** Null when no video track was reached. */
|
|
109
|
+
readonly timing: MediaTimingFacts | null;
|
|
110
|
+
/** Whether the bytes come over a link, which is what makes a trailing index
|
|
111
|
+
* cost anything. */
|
|
112
|
+
readonly remote: boolean;
|
|
113
|
+
}
|
|
114
|
+
export interface MediaCondition {
|
|
115
|
+
readonly code: MediaConditionCode;
|
|
116
|
+
readonly scope: MediaConditionScope;
|
|
117
|
+
readonly response: MediaConditionResponse;
|
|
118
|
+
/** What the response does to the frame sequence. Absent where the response
|
|
119
|
+
* presents nothing, so no sequence survives to compare. */
|
|
120
|
+
readonly frameEffect: ConversionFrameEffect | null;
|
|
121
|
+
readonly detail: string;
|
|
122
|
+
}
|
|
123
|
+
/** How the caller intends to open whatever comes out. */
|
|
124
|
+
export interface MediaConditionPolicy {
|
|
125
|
+
/**
|
|
126
|
+
* Whether the caller can open a conversion's prefix while the rest is still
|
|
127
|
+
* being written. Such a source opens only at its beginning and cannot be
|
|
128
|
+
* seeked into, so this is true only where playback starts at zero.
|
|
129
|
+
*/
|
|
130
|
+
readonly progressiveConversion?: boolean;
|
|
131
|
+
}
|
|
132
|
+
export interface MediaConditionReport {
|
|
133
|
+
readonly facts: MediaConditionFacts;
|
|
134
|
+
readonly conditions: readonly MediaCondition[];
|
|
135
|
+
/** The strongest response among the conditions standing in the way of a
|
|
136
|
+
* picture. */
|
|
137
|
+
readonly playback: MediaConditionResponse;
|
|
138
|
+
/** The strongest response among the conditions standing in the way of naming
|
|
139
|
+
* the frame on screen by index. */
|
|
140
|
+
readonly frameIndexing: MediaConditionResponse;
|
|
141
|
+
}
|
|
142
|
+
export interface ConversionFrameEffectReport {
|
|
143
|
+
readonly effect: ConversionFrameEffect;
|
|
144
|
+
/** The rate the conversion will actually be run at, after the normalization
|
|
145
|
+
* defaults are applied. */
|
|
146
|
+
readonly resolvedFrameRate: number;
|
|
147
|
+
readonly detail: string;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=media-conditions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-conditions.d.ts","sourceRoot":"","sources":["../../src/types/media-conditions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,mBAAmB;IAC7B,qEAAqE;IACrE,KAAK,UAAU;IACf,2EAA2E;IAC3E,GAAG,QAAQ;IACX,uDAAuD;IACvD,UAAU,eAAe;IACzB,6EAA6E;IAC7E,OAAO,YAAY;CACpB;AAED,oEAAoE;AACpE,oBAAY,kBAAkB;IAC5B,uDAAuD;IACvD,mBAAmB,wBAAwB;IAC3C,sEAAsE;IACtE,oBAAoB,yBAAyB;IAC7C,kEAAkE;IAClE,YAAY,iBAAiB;IAC7B;2DACuD;IACvD,YAAY,iBAAiB;IAC7B,iEAAiE;IACjE,gBAAgB,qBAAqB;IACrC;;;;;OAKG;IACH,mBAAmB,wBAAwB;IAC3C;8DAC0D;IAC1D,UAAU,eAAe;IACzB,6EAA6E;IAC7E,eAAe,oBAAoB;IACnC;6DACyD;IACzD,YAAY,iBAAiB;CAC9B;AAED,6CAA6C;AAC7C,oBAAY,mBAAmB;IAC7B,0CAA0C;IAC1C,QAAQ,aAAa;IACrB,+EAA+E;IAC/E,aAAa,kBAAkB;CAChC;AAED,oCAAoC;AACpC,oBAAY,sBAAsB;IAChC,gCAAgC;IAChC,IAAI,SAAS;IACb,6EAA6E;IAC7E,UAAU,eAAe;IACzB,0DAA0D;IAC1D,YAAY,iBAAiB;IAC7B,uDAAuD;IACvD,oBAAoB,yBAAyB;IAC7C,mCAAmC;IACnC,MAAM,WAAW;CAClB;AAED,4EAA4E;AAC5E,oBAAY,qBAAqB;IAC/B,kEAAkE;IAClE,SAAS,cAAc;IACvB;0EACsE;IACtE,SAAS,cAAc;CACxB;AAED,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,cAAc,EAAE,mBAAmB,CAAC;CAC9C;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC;+DAC2D;IAC3D,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,0DAA0D;IAC1D,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC;mFAC+E;IAC/E,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED;sEACsE;AACtE,MAAM,WAAW,mBAAmB;IAClC,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;4DACwD;IACxD,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACzC;yBACqB;IACrB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C;gEAC4D;IAC5D,QAAQ,CAAC,WAAW,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,yDAAyD;AACzD,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAC1C;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;IAC/C;mBACe;IACf,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C;wCACoC;IACpC,QAAQ,CAAC,aAAa,EAAE,sBAAsB,CAAC;CAChD;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC;gCAC4B;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import type { MediaRendererSource } from "#types/media-renderer";
|
|
2
|
+
/**
|
|
3
|
+
* The rate {@link normalizeMedia} writes when the caller states none. It lands
|
|
4
|
+
* a variable-rate input on a constant grid that detection frame indices can
|
|
5
|
+
* address, and it is the reason a conversion's output is a different frame
|
|
6
|
+
* sequence from its input unless the input already runs at exactly this rate.
|
|
7
|
+
*/
|
|
8
|
+
export declare const DEFAULT_NORMALIZATION_FRAME_RATE = 30;
|
|
2
9
|
export declare enum MediaNormalizationContainer {
|
|
3
10
|
WebM = "webm",
|
|
4
11
|
Mp4 = "mp4"
|
|
@@ -29,21 +36,47 @@ export declare enum MediaProbeIssueCode {
|
|
|
29
36
|
TargetVideoCannotEncode = "targetVideoCannotEncode"
|
|
30
37
|
}
|
|
31
38
|
export interface MediaNormalizationVideoOptions {
|
|
39
|
+
/**
|
|
40
|
+
* Output frame rate in hertz. Defaults to 30, which lands a variable-rate
|
|
41
|
+
* input on a constant grid that detection frame indices can address.
|
|
42
|
+
*/
|
|
32
43
|
readonly frameRate?: number;
|
|
44
|
+
/** Output width in pixels. Unset keeps the source's display width. */
|
|
33
45
|
readonly width?: number;
|
|
46
|
+
/** Output height in pixels. Unset keeps the source's display height. */
|
|
34
47
|
readonly height?: number;
|
|
48
|
+
/** How the frame is fitted when both `width` and `height` are set. */
|
|
35
49
|
readonly fit?: MediaNormalizationFit;
|
|
50
|
+
/**
|
|
51
|
+
* Output video codec. Defaults to AVC for `Mp4` and VP9 for `WebM`.
|
|
52
|
+
*/
|
|
36
53
|
readonly codec?: MediaNormalizationVideoCodec;
|
|
54
|
+
/** Output bitrate in bits per second. Unset lets the encoder choose. */
|
|
37
55
|
readonly bitrate?: number;
|
|
56
|
+
/**
|
|
57
|
+
* Seconds between key frames. Defaults to 1, which costs bytes and buys the
|
|
58
|
+
* short seeks scrubbing and frame stepping depend on.
|
|
59
|
+
*/
|
|
38
60
|
readonly keyFrameInterval?: number;
|
|
61
|
+
/**
|
|
62
|
+
* Always re-encode. Defaults to true, so the output profile is the requested
|
|
63
|
+
* one whatever the input already was; false copies a compatible video stream
|
|
64
|
+
* through untouched.
|
|
65
|
+
*/
|
|
39
66
|
readonly forceTranscode?: boolean;
|
|
40
67
|
}
|
|
41
68
|
export interface MediaNormalizationAudioOptions {
|
|
69
|
+
/** Drop every audio track. Defaults to true. */
|
|
42
70
|
readonly discard?: boolean;
|
|
71
|
+
/** Output audio codec. Unset keeps the container's own default. */
|
|
43
72
|
readonly codec?: MediaNormalizationAudioCodec;
|
|
73
|
+
/** Output bitrate in bits per second. Unset lets the encoder choose. */
|
|
44
74
|
readonly bitrate?: number;
|
|
75
|
+
/** Output sample rate in hertz. Unset keeps the source's. */
|
|
45
76
|
readonly sampleRate?: number;
|
|
77
|
+
/** Output channel count. Unset keeps the source's. */
|
|
46
78
|
readonly numberOfChannels?: number;
|
|
79
|
+
/** Always re-encode audio. Unset leaves that choice to the encoder. */
|
|
47
80
|
readonly forceTranscode?: boolean;
|
|
48
81
|
}
|
|
49
82
|
export interface MediaNormalizationProgress {
|
|
@@ -51,6 +84,7 @@ export interface MediaNormalizationProgress {
|
|
|
51
84
|
readonly processedTime: number;
|
|
52
85
|
}
|
|
53
86
|
export interface MediaNormalizationOptions {
|
|
87
|
+
/** Output container. Defaults to `WebM`. */
|
|
54
88
|
readonly container?: MediaNormalizationContainer;
|
|
55
89
|
readonly video?: MediaNormalizationVideoOptions;
|
|
56
90
|
readonly audio?: MediaNormalizationAudioOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-normalization.d.ts","sourceRoot":"","sources":["../../src/types/media-normalization.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"media-normalization.d.ts","sourceRoot":"","sources":["../../src/types/media-normalization.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DetectionBufferOptions, DetectionFrameSource, MediaFrameDiagnostics, MediaRendererDiagnosticsOptions, MediaRendererFit, MediaRendererPresentation, MediaRendererState, MediaRendererStateController, MediaSourceState } from "supervision-js-core";
|
|
2
|
+
import type { PreparedAnnotationWindowSnapshot } from "#renderers/prepared-annotation-window";
|
|
2
3
|
import type { DetectionFrame } from "supervision-js-core";
|
|
3
4
|
import type { DetectionPickResult, DetectionSelectionOptions, MediaInteractionOptions } from "supervision-js-core";
|
|
4
5
|
import type { DecodedMediaSource } from "#media/media-source";
|
|
@@ -28,7 +29,8 @@ export interface MediaRendererOptions extends MediaRendererPresentation {
|
|
|
28
29
|
readonly loop?: boolean;
|
|
29
30
|
readonly playbackRate?: number;
|
|
30
31
|
/**
|
|
31
|
-
*
|
|
32
|
+
* @deprecated Nothing reads this. The renderer is video-only and audio
|
|
33
|
+
* playback is deferred, so setting it changes nothing either way.
|
|
32
34
|
*/
|
|
33
35
|
readonly muted?: boolean;
|
|
34
36
|
readonly fit?: MediaRendererFit;
|
|
@@ -124,7 +126,20 @@ export interface DetectionLabelBounds {
|
|
|
124
126
|
export interface MediaRenderer extends MediaRendererStateController {
|
|
125
127
|
play(): Promise<void>;
|
|
126
128
|
pause(): void;
|
|
129
|
+
/**
|
|
130
|
+
* Flips playback without the caller first reading which way it is going, so
|
|
131
|
+
* a frame presented between the read and the call cannot invert the result.
|
|
132
|
+
* Rejects when the play it decides on fails.
|
|
133
|
+
*/
|
|
134
|
+
togglePlayback(): Promise<void>;
|
|
135
|
+
/** Lands on `mediaTime` and resolves once the frame there is presented. */
|
|
127
136
|
seek(mediaTime: number): Promise<void>;
|
|
137
|
+
/**
|
|
138
|
+
* Moves the playhead for a gesture that is still moving, such as a timeline
|
|
139
|
+
* drag between pointer down and up. The frame that answers it may be an
|
|
140
|
+
* approximation; `seek` is what lands the released position exactly.
|
|
141
|
+
*/
|
|
142
|
+
scrub(mediaTime: number): void;
|
|
128
143
|
stepForward(): Promise<void>;
|
|
129
144
|
stepBackward(): Promise<void>;
|
|
130
145
|
setPlaybackRate(playbackRate: number): void;
|
|
@@ -139,6 +154,21 @@ export interface MediaRenderer extends MediaRendererStateController {
|
|
|
139
154
|
*/
|
|
140
155
|
captureFrame(options?: MediaFrameCaptureOptions): Promise<MediaFrameCapture>;
|
|
141
156
|
setSelectedDetection(selection: DetectionSelectionOptions | null): DetectionPickResult | null;
|
|
157
|
+
/**
|
|
158
|
+
* Explicit renders issued under the render-on-change policy, which only a
|
|
159
|
+
* media source that pushes presented frames runs under: the count moves when
|
|
160
|
+
* something on screen changed, so a paused, untouched renderer holds it
|
|
161
|
+
* still. It is `null` when the renderer pulls samples instead, because Pixi's
|
|
162
|
+
* ticker then paints every animation frame and no count describes that, so a
|
|
163
|
+
* `null` here is an answer rather than a failure.
|
|
164
|
+
*/
|
|
165
|
+
getRenderCount(): number | null;
|
|
166
|
+
/**
|
|
167
|
+
* Span and per-frame readiness of the prepared annotation window, for
|
|
168
|
+
* instruments; null when the scene free-runs on the ticker or no window
|
|
169
|
+
* exists, so a `null` here is an answer rather than a failure.
|
|
170
|
+
*/
|
|
171
|
+
getPreparedAnnotationWindow(): PreparedAnnotationWindowSnapshot | null;
|
|
142
172
|
destroy(): void;
|
|
143
173
|
getViewportTransform(): import("supervision-js-core").ViewportTransform;
|
|
144
174
|
setViewportTransform(transform: Partial<Omit<import("supervision-js-core").ViewportTransform, "locked">>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-renderer.d.ts","sourceRoot":"","sources":["../../src/types/media-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,+BAA+B,EAC/B,gBAAgB,EAChB,yBAAyB,EACzB,kBAAkB,EAClB,4BAA4B,EAC5B,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D,OAAO,EACL,gBAAgB,EAChB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,+BAA+B,EAC/B,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,4EAA4E;AAC5E,oBAAY,uBAAuB;IACjC,8EAA8E;IAC9E,aAAa,kBAAkB;IAC/B,yEAAyE;IACzE,UAAU,eAAe;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAqB,SAAQ,yBAAyB;IACrE,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B
|
|
1
|
+
{"version":3,"file":"media-renderer.d.ts","sourceRoot":"","sources":["../../src/types/media-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,8 @@ export type MediaSessionMedia = string | URL | Request | Blob | MediaRendererSou
|
|
|
16
16
|
export interface MediaSessionNormalizationOptions extends MediaNormalizationOptions {
|
|
17
17
|
/**
|
|
18
18
|
* When true, media normalization may expose progressive output before the
|
|
19
|
-
* entire input has finished normalizing.
|
|
19
|
+
* entire input has finished normalizing. Defaults to false, which opens the
|
|
20
|
+
* session only once the complete normalized blob exists.
|
|
20
21
|
*/
|
|
21
22
|
readonly stream?: boolean;
|
|
22
23
|
}
|
|
@@ -78,9 +79,10 @@ export interface MediaSessionDetectionSourceOptions {
|
|
|
78
79
|
*/
|
|
79
80
|
readonly sync?: MediaSessionDetectionSyncOptions;
|
|
80
81
|
/**
|
|
81
|
-
* When false,
|
|
82
|
+
* When false, `waitForRange` on `MediaSession.detectionSource` resolves
|
|
83
|
+
* without waiting for this source. Defaults to true.
|
|
82
84
|
*/
|
|
83
|
-
readonly
|
|
85
|
+
readonly requiredForCoverage?: boolean;
|
|
84
86
|
}
|
|
85
87
|
export interface MediaSessionDetectionOptions {
|
|
86
88
|
/**
|
|
@@ -115,8 +117,21 @@ export interface MediaSessionDetectionOptions {
|
|
|
115
117
|
*/
|
|
116
118
|
readonly buffer?: DetectionBufferOptions;
|
|
117
119
|
/**
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
+
* Hold playback until detections cover the frame about to be presented.
|
|
121
|
+
*
|
|
122
|
+
* Off by default: the session presents a frame the detection window does not
|
|
123
|
+
* cover without annotations and draws them once coverage lands. Enabled, the
|
|
124
|
+
* session treats detection coverage as part of media readiness and reports
|
|
125
|
+
* buffering while it waits. Merges over `buffer.playbackGate`.
|
|
126
|
+
*
|
|
127
|
+
* The sustained wait is the renderer holding a decoded sample back, so it
|
|
128
|
+
* lasts the length of playback only when the renderer pulls samples: a URL, a
|
|
129
|
+
* `Blob`, or any `media` source without a presented-frame channel. A source
|
|
130
|
+
* that presents its own frames drives the playhead itself, which is what
|
|
131
|
+
* `createVideoEngineMediaRendererSource` returns and therefore what most
|
|
132
|
+
* video sessions actually run on. There the gate holds the start of playback
|
|
133
|
+
* and nothing after it, so a preview opens covered and a producer already
|
|
134
|
+
* running keeps its own pace.
|
|
120
135
|
*/
|
|
121
136
|
readonly playbackGate?: DetectionPlaybackGateOptions;
|
|
122
137
|
/**
|
|
@@ -138,6 +153,10 @@ export interface MediaSessionRendererOptions {
|
|
|
138
153
|
readonly autoPlay?: boolean;
|
|
139
154
|
readonly loop?: boolean;
|
|
140
155
|
readonly playbackRate?: number;
|
|
156
|
+
/**
|
|
157
|
+
* @deprecated Nothing reads this. The renderer is video-only and audio
|
|
158
|
+
* playback is deferred, so setting it changes nothing either way.
|
|
159
|
+
*/
|
|
141
160
|
readonly muted?: boolean;
|
|
142
161
|
readonly fit?: MediaRendererFit;
|
|
143
162
|
readonly maxDevicePixelRatio?: MediaRendererOptions["maxDevicePixelRatio"];
|
|
@@ -184,6 +203,29 @@ export interface MediaSessionOptions {
|
|
|
184
203
|
* Detection frames or sources to render with the media.
|
|
185
204
|
*/
|
|
186
205
|
readonly detections?: MediaSessionDetectionOptions;
|
|
206
|
+
/**
|
|
207
|
+
* Buffered playback: hold the picture until the frame it is about to show has
|
|
208
|
+
* both its detections and its prepared annotation artifacts, so a preview
|
|
209
|
+
* opens annotated rather than opening bare and filling in.
|
|
210
|
+
*
|
|
211
|
+
* On by default. `false` starts playback at once and draws annotations as
|
|
212
|
+
* they land, which suits a host that cares about cadence more than overlays.
|
|
213
|
+
* The switch answers for `detections.playbackGate` and
|
|
214
|
+
* `renderer.renderPreparation.playbackGate` together, each keeping its own
|
|
215
|
+
* lookahead; set either one's `enabled` to answer for that gate alone.
|
|
216
|
+
*
|
|
217
|
+
* The detection gate only applies to a session with appendable detections,
|
|
218
|
+
* since a source that is complete before playback starts has nothing to wait
|
|
219
|
+
* for. `true` turns it on for any session.
|
|
220
|
+
*
|
|
221
|
+
* What it holds depends on who owns the playhead. A source the renderer pulls
|
|
222
|
+
* decoded samples from is held frame by frame, for as long as playback runs.
|
|
223
|
+
* A source that presents its own frames, which is what
|
|
224
|
+
* `createVideoEngineMediaRendererSource` returns, is held at the start of
|
|
225
|
+
* playback only: the session reports buffering until the frame it will resume
|
|
226
|
+
* on is covered, and once the producer is running it paces itself.
|
|
227
|
+
*/
|
|
228
|
+
readonly playbackGate?: boolean;
|
|
187
229
|
/**
|
|
188
230
|
* Aggregate loading, playback, buffering, processing, and error state.
|
|
189
231
|
*/
|
|
@@ -197,6 +239,37 @@ export interface MediaSessionOptions {
|
|
|
197
239
|
*/
|
|
198
240
|
readonly renderer?: MediaSessionRendererOptions;
|
|
199
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* Which of the session's media branches ran.
|
|
244
|
+
*
|
|
245
|
+
* The five differ in whether the clip is converted first and in who ends up
|
|
246
|
+
* reading it, and from outside they were indistinguishable: two of them leave
|
|
247
|
+
* every other field on {@link MediaSessionMediaState} null.
|
|
248
|
+
*/
|
|
249
|
+
export declare enum MediaSessionMediaBranch {
|
|
250
|
+
/** A URL, `URL` or `Request` went to the renderer untouched. */
|
|
251
|
+
Url = "url",
|
|
252
|
+
/** A source the caller had already built went to the renderer untouched. */
|
|
253
|
+
RendererSource = "rendererSource",
|
|
254
|
+
/** A file the session was not asked to convert, played from an object URL. */
|
|
255
|
+
BlobObjectUrl = "blobObjectUrl",
|
|
256
|
+
/** A file converted in full first, played from the conversion's object URL. */
|
|
257
|
+
NormalizedObjectUrl = "normalizedObjectUrl",
|
|
258
|
+
/** A file converted while it plays, read through the conversion's source. */
|
|
259
|
+
ProgressiveSource = "progressiveSource"
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* What the session did with the media it was handed, recorded as it did it.
|
|
263
|
+
*
|
|
264
|
+
* The renderer opens a `src` and a `source` through different readers, so which
|
|
265
|
+
* of the two a branch set decides which one opens the clip. Nothing else
|
|
266
|
+
* reports it.
|
|
267
|
+
*/
|
|
268
|
+
export interface MediaSessionMediaPreparation {
|
|
269
|
+
readonly branch: MediaSessionMediaBranch;
|
|
270
|
+
/** Which of the renderer's two media options this branch filled in. */
|
|
271
|
+
readonly opened: "src" | "source";
|
|
272
|
+
}
|
|
200
273
|
/**
|
|
201
274
|
* Prepared media state visible to host applications.
|
|
202
275
|
*/
|
|
@@ -204,6 +277,13 @@ export interface MediaSessionMediaState {
|
|
|
204
277
|
readonly inputMetadata: MediaNormalizationInputMetadata | null;
|
|
205
278
|
readonly normalizedMedia: NormalizedMedia | ProgressiveNormalizedMedia | null;
|
|
206
279
|
readonly objectUrl: string | null;
|
|
280
|
+
/**
|
|
281
|
+
* Null until the session has prepared its media.
|
|
282
|
+
*
|
|
283
|
+
* Optional so a host holding a state it built before this field existed still
|
|
284
|
+
* satisfies the type.
|
|
285
|
+
*/
|
|
286
|
+
readonly preparation?: MediaSessionMediaPreparation | null;
|
|
207
287
|
}
|
|
208
288
|
export interface MediaSessionNormalizationState {
|
|
209
289
|
readonly active: boolean;
|
|
@@ -297,9 +377,10 @@ export interface LiveMediaSession extends MediaSession {
|
|
|
297
377
|
* Close the appendable source's final coverage at the end of media.
|
|
298
378
|
*
|
|
299
379
|
* `endTime` defaults to the renderer's reported media duration. Calling it
|
|
300
|
-
* again is a no-op. Use it when a producer has finished so
|
|
301
|
-
*
|
|
302
|
-
* the
|
|
380
|
+
* again is a no-op. Use it when a producer has finished, so the source stops
|
|
381
|
+
* answering for the terminal sliver a container can declare beyond the last
|
|
382
|
+
* decoded sample. What the sliver would otherwise strand is a `waitForRange`
|
|
383
|
+
* caller, and an enabled detection playback gate along with it.
|
|
303
384
|
*/
|
|
304
385
|
finalizeDetectionCoverage(endTime?: number, options?: MediaSessionDetectionWriteOptions): Promise<ColdDetectionFrameStoreWriteSummary | null>;
|
|
305
386
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-session.d.ts","sourceRoot":"","sources":["../../src/types/media-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,mCAAmC,EACnC,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,EAC9B,8BAA8B,EAC9B,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,gBAAgB,EAChB,yBAAyB,IAAI,6BAA6B,EAC1D,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EACV,+BAA+B,EAC/B,0BAA0B,EAC1B,yBAAyB,EACzB,eAAe,EACf,0BAA0B,EAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,uBAAuB,EACvB,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAE9E,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAE7B;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAC3B,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,mBAAmB,CAAC;AAEtD,MAAM,WAAW,gCAAiC,SAAQ,yBAAyB;IACjF
|
|
1
|
+
{"version":3,"file":"media-session.d.ts","sourceRoot":"","sources":["../../src/types/media-session.ts"],"names":[],"mappings":"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"}
|