@aelionsdk/render-ir 0.1.0-beta.1

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.
@@ -0,0 +1,208 @@
1
+ function legacyLinearMapping(source) {
2
+ const rateValue = Reflect.get(source, 'rate');
3
+ const numerator = rateValue !== null && typeof rateValue === 'object' && !Array.isArray(rateValue)
4
+ ? Reflect.get(rateValue, 'numerator')
5
+ : undefined;
6
+ const denominator = rateValue !== null && typeof rateValue === 'object' && !Array.isArray(rateValue)
7
+ ? Reflect.get(rateValue, 'denominator')
8
+ : undefined;
9
+ const reverse = Reflect.get(source, 'reverse');
10
+ return {
11
+ type: 'linear',
12
+ rate: typeof numerator === 'number' && typeof denominator === 'number'
13
+ ? { numerator, denominator }
14
+ : { numerator: 1, denominator: 1 },
15
+ reverse: typeof reverse === 'boolean' ? reverse : false,
16
+ };
17
+ }
18
+ /** Returns the canonical mapping, including compatibility for legacy hand-authored IR. */
19
+ export function irTimeMapping(source) {
20
+ return source.timeMapping ?? legacyLinearMapping(source);
21
+ }
22
+ function scaledLinearTime(localUs, mapping) {
23
+ const value = (BigInt(localUs) * BigInt(mapping.rate.numerator)) / BigInt(mapping.rate.denominator);
24
+ const result = Number(value);
25
+ if (!Number.isSafeInteger(result))
26
+ throw new RangeError('Mapped source time is not safe');
27
+ return result;
28
+ }
29
+ function curveSegment(points, localUs) {
30
+ let low = 0;
31
+ let high = points.length - 1;
32
+ while (low + 1 < high) {
33
+ const middle = Math.floor((low + high) / 2);
34
+ const point = points[middle];
35
+ if (point !== undefined && point.itemTimeUs <= localUs)
36
+ low = middle;
37
+ else
38
+ high = middle;
39
+ }
40
+ const from = points[low];
41
+ const to = points[high];
42
+ if (from === undefined || to === undefined)
43
+ throw new RangeError('TimeMap has no covering segment');
44
+ return [from, to];
45
+ }
46
+ function mappedCurveTime(points, localUs) {
47
+ if (points.length < 2)
48
+ throw new RangeError('Curve TimeMap requires at least two points');
49
+ const [from, to] = curveSegment(points, localUs);
50
+ if (from.interpolation === 'hold')
51
+ return from.sourceTimeUs;
52
+ const durationUs = to.itemTimeUs - from.itemTimeUs;
53
+ if (durationUs <= 0)
54
+ throw new RangeError('Curve TimeMap item times must increase');
55
+ let progress = (localUs - from.itemTimeUs) / durationUs;
56
+ if (from.interpolation === 'cubic')
57
+ progress = progress * progress * (3 - 2 * progress);
58
+ return Math.floor(from.sourceTimeUs + (to.sourceTimeUs - from.sourceTimeUs) * progress);
59
+ }
60
+ function direction(from, to) {
61
+ return to > from ? 'forward' : to < from ? 'reverse' : 'hold';
62
+ }
63
+ /** Validates and exposes independently monotonic portions of a TimeMap. */
64
+ export function analyzeIrTimeMap(source, itemDurationUs) {
65
+ if (!Number.isSafeInteger(itemDurationUs) || itemDurationUs <= 0) {
66
+ throw new RangeError('itemDurationUs must be a positive safe integer');
67
+ }
68
+ const mapping = irTimeMapping(source);
69
+ if (mapping.type === 'linear') {
70
+ if (!Number.isSafeInteger(mapping.rate.numerator) ||
71
+ !Number.isSafeInteger(mapping.rate.denominator) ||
72
+ mapping.rate.numerator <= 0 ||
73
+ mapping.rate.denominator <= 0) {
74
+ throw new RangeError('Linear TimeMap rate must be a positive rational');
75
+ }
76
+ const start = mapping.reverse
77
+ ? source.sourceRange.startUs + source.sourceRange.durationUs - 1
78
+ : source.sourceRange.startUs;
79
+ const delta = Number((BigInt(itemDurationUs) * BigInt(mapping.rate.numerator)) / BigInt(mapping.rate.denominator));
80
+ return [
81
+ {
82
+ itemStartUs: 0,
83
+ itemEndUs: itemDurationUs,
84
+ sourceStartUs: start,
85
+ sourceEndUs: mapping.reverse ? start - delta : start + delta,
86
+ direction: mapping.reverse ? 'reverse' : 'forward',
87
+ interpolation: 'linear',
88
+ },
89
+ ];
90
+ }
91
+ if (mapping.points.length < 2)
92
+ throw new RangeError('Curve TimeMap requires at least two points');
93
+ const first = mapping.points[0];
94
+ const last = mapping.points.at(-1);
95
+ if (first?.itemTimeUs !== 0 || last?.itemTimeUs !== itemDurationUs) {
96
+ throw new RangeError('Curve TimeMap must cover the complete Item-local interval');
97
+ }
98
+ return mapping.points.slice(0, -1).map((from, index) => {
99
+ const to = mapping.points[index + 1];
100
+ if (to === undefined || to.itemTimeUs <= from.itemTimeUs) {
101
+ throw new RangeError('Curve TimeMap item times must strictly increase');
102
+ }
103
+ const segmentDirection = from.interpolation === 'hold' ? 'hold' : direction(from.sourceTimeUs, to.sourceTimeUs);
104
+ return {
105
+ itemStartUs: from.itemTimeUs,
106
+ itemEndUs: to.itemTimeUs,
107
+ sourceStartUs: from.sourceTimeUs,
108
+ sourceEndUs: segmentDirection === 'hold' ? from.sourceTimeUs : to.sourceTimeUs,
109
+ direction: segmentDirection,
110
+ interpolation: from.interpolation,
111
+ };
112
+ });
113
+ }
114
+ function inverseSmoothStep(progress) {
115
+ let low = 0;
116
+ let high = 1;
117
+ for (let iteration = 0; iteration < 32; iteration++) {
118
+ const middle = (low + high) / 2;
119
+ const value = middle * middle * (3 - 2 * middle);
120
+ if (value < progress)
121
+ low = middle;
122
+ else
123
+ high = middle;
124
+ }
125
+ return (low + high) / 2;
126
+ }
127
+ /** Inverts all monotonic TimeMap segments. Hold regions return an Item-local range. */
128
+ export function invertIrSourceTime(source, itemDurationUs, sourceTimeUs) {
129
+ if (!Number.isSafeInteger(sourceTimeUs))
130
+ throw new RangeError('sourceTimeUs must be a safe integer');
131
+ const segments = analyzeIrTimeMap(source, itemDurationUs);
132
+ const mapping = irTimeMapping(source);
133
+ if (mapping.type === 'linear') {
134
+ const segment = segments[0];
135
+ if (segment === undefined)
136
+ return [];
137
+ const sourceOffset = mapping.reverse
138
+ ? segment.sourceStartUs - sourceTimeUs
139
+ : sourceTimeUs - segment.sourceStartUs;
140
+ if (sourceOffset < 0)
141
+ return [];
142
+ const localUs = (sourceOffset * mapping.rate.denominator) / mapping.rate.numerator;
143
+ if (localUs < 0 || localUs >= itemDurationUs)
144
+ return [];
145
+ return [{ kind: 'point', itemStartUs: localUs, itemEndUs: localUs }];
146
+ }
147
+ return segments.flatMap((segment) => {
148
+ if (segment.direction === 'hold') {
149
+ return sourceTimeUs === segment.sourceStartUs
150
+ ? [
151
+ {
152
+ kind: 'range',
153
+ itemStartUs: segment.itemStartUs,
154
+ itemEndUs: segment.itemEndUs,
155
+ },
156
+ ]
157
+ : [];
158
+ }
159
+ const minimum = Math.min(segment.sourceStartUs, segment.sourceEndUs);
160
+ const maximum = Math.max(segment.sourceStartUs, segment.sourceEndUs);
161
+ if (sourceTimeUs < minimum || sourceTimeUs > maximum)
162
+ return [];
163
+ const sourceProgress = (sourceTimeUs - segment.sourceStartUs) / (segment.sourceEndUs - segment.sourceStartUs);
164
+ const progress = sourceProgress === 0 || sourceProgress === 1
165
+ ? sourceProgress
166
+ : segment.interpolation === 'cubic'
167
+ ? inverseSmoothStep(sourceProgress)
168
+ : sourceProgress;
169
+ const itemTime = segment.itemStartUs + (segment.itemEndUs - segment.itemStartUs) * progress;
170
+ return [{ kind: 'point', itemStartUs: itemTime, itemEndUs: itemTime }];
171
+ });
172
+ }
173
+ function applyBoundary(source, sourceTimeUs) {
174
+ const startUs = source.sourceRange.startUs;
175
+ const durationUs = source.sourceRange.durationUs;
176
+ const endUs = startUs + durationUs;
177
+ if (sourceTimeUs >= startUs && sourceTimeUs < endUs)
178
+ return sourceTimeUs;
179
+ switch (source.boundary) {
180
+ case 'loop': {
181
+ const wrapped = (((sourceTimeUs - startUs) % durationUs) + durationUs) % durationUs;
182
+ return startUs + wrapped;
183
+ }
184
+ case 'hold':
185
+ return Math.max(startUs, Math.min(endUs - 1, sourceTimeUs));
186
+ case 'transparent':
187
+ return null;
188
+ case 'error':
189
+ throw new RangeError('TimeMap resolves outside its sourceRange');
190
+ }
191
+ }
192
+ /** Maps Item-local time to normalized absolute source presentation time. */
193
+ export function mapIrSourceTime(source, itemDurationUs, localUs, options = {}) {
194
+ if (!Number.isSafeInteger(localUs) ||
195
+ (!options.allowOutsideItem && (localUs < 0 || localUs >= itemDurationUs))) {
196
+ return null;
197
+ }
198
+ const mapping = irTimeMapping(source);
199
+ const mapped = mapping.type === 'linear'
200
+ ? mapping.reverse
201
+ ? source.sourceRange.startUs +
202
+ source.sourceRange.durationUs -
203
+ 1 -
204
+ scaledLinearTime(localUs, mapping)
205
+ : source.sourceRange.startUs + scaledLinearTime(localUs, mapping)
206
+ : mappedCurveTime(mapping.points, localUs);
207
+ return applyBoundary(source, mapped);
208
+ }
@@ -0,0 +1,242 @@
1
+ import type { JsonObject, JsonValue, Rational } from '@aelionsdk/core';
2
+ import type { WebGl2MaterialProgram } from '@aelionsdk/material-compiler';
3
+ import type { TimeRange } from '@aelionsdk/project-schema';
4
+ export interface IrMaterialDefinition {
5
+ readonly packageId: string;
6
+ readonly packageVersion: string;
7
+ readonly packageIntegrity: string;
8
+ readonly materialId: string;
9
+ }
10
+ export interface IrMaterialInstance {
11
+ readonly id: string;
12
+ readonly definition: IrMaterialDefinition;
13
+ readonly enabled: boolean;
14
+ readonly previewPolicy: 'required' | 'skippable-when-degraded';
15
+ readonly parameters: Readonly<Record<string, JsonValue>>;
16
+ readonly resourceBindings: Readonly<Record<string, JsonValue>>;
17
+ readonly inputBindings: Readonly<Record<string, JsonValue>>;
18
+ readonly program?: WebGl2MaterialProgram;
19
+ }
20
+ export type MaterialProgramResolver = (definition: IrMaterialDefinition, parameters: Readonly<Record<string, JsonValue>>) => WebGl2MaterialProgram | undefined;
21
+ export interface RenderCompileOptions {
22
+ readonly affectedRanges?: RenderIrCompilation['stats']['affectedRanges'];
23
+ readonly affectedEntityIds?: readonly string[];
24
+ readonly resolveMaterialProgram?: MaterialProgramResolver;
25
+ /** @internal Recursive compiler stack used to diagnose nested Sequence cycles. */
26
+ readonly nestedSequenceStack?: readonly string[];
27
+ }
28
+ export interface IrLinearTimeMapping {
29
+ readonly type: 'linear';
30
+ readonly rate: Rational;
31
+ readonly reverse: boolean;
32
+ }
33
+ export interface IrCurveTimeMapPoint {
34
+ readonly itemTimeUs: number;
35
+ /** Absolute normalized source presentation time. */
36
+ readonly sourceTimeUs: number;
37
+ readonly interpolation: 'linear' | 'hold' | 'cubic';
38
+ }
39
+ export interface IrCurveTimeMapping {
40
+ readonly type: 'curve';
41
+ readonly points: readonly IrCurveTimeMapPoint[];
42
+ }
43
+ export type IrTimeMapping = IrLinearTimeMapping | IrCurveTimeMapping;
44
+ export interface IrMediaSource {
45
+ readonly assetId: string;
46
+ readonly streamType: 'video' | 'audio';
47
+ readonly streamIndex: number;
48
+ readonly sourceRange: TimeRange;
49
+ readonly timeMapping?: IrTimeMapping;
50
+ /** @deprecated Compatibility projection for legacy hand-authored linear IR. */
51
+ readonly rate?: Rational;
52
+ /** @deprecated Compatibility projection for legacy hand-authored linear IR. */
53
+ readonly reverse?: boolean;
54
+ readonly boundary: 'error' | 'hold' | 'loop' | 'transparent';
55
+ }
56
+ export interface IrBaseClip {
57
+ readonly id: string;
58
+ readonly trackId: string;
59
+ readonly range: TimeRange;
60
+ readonly enabled: boolean;
61
+ readonly materialInstanceIds: readonly string[];
62
+ readonly dependencyEntityIds: readonly string[];
63
+ readonly fingerprint: string;
64
+ }
65
+ export interface IrVisualClip extends IrBaseClip {
66
+ readonly kind: 'visual-clip';
67
+ readonly source: IrMediaSource;
68
+ readonly visual: IrVisualProperties;
69
+ }
70
+ export interface IrTextBox {
71
+ readonly x: number;
72
+ readonly y: number;
73
+ readonly width: number;
74
+ readonly height: number;
75
+ }
76
+ export interface IrTextRun {
77
+ readonly text: string;
78
+ readonly style: JsonObject;
79
+ }
80
+ export interface IrTextParagraph {
81
+ readonly style: JsonObject;
82
+ readonly runs: readonly IrTextRun[];
83
+ }
84
+ export interface IrTextClip extends IrBaseClip {
85
+ readonly kind: 'text-clip';
86
+ readonly role: 'text' | 'caption';
87
+ readonly box: IrTextBox;
88
+ readonly overflow: 'clip' | 'ellipsis' | 'visible' | 'auto-fit';
89
+ readonly writingMode: 'horizontal-tb' | 'vertical-rl' | 'vertical-lr';
90
+ readonly paragraphs: readonly IrTextParagraph[];
91
+ readonly visual: IrVisualProperties;
92
+ }
93
+ export interface IrNestedSequenceSource {
94
+ readonly sequenceId: string;
95
+ readonly sourceRange: TimeRange;
96
+ readonly timeMapping: IrTimeMapping;
97
+ readonly boundary: 'error' | 'hold' | 'loop' | 'transparent';
98
+ }
99
+ export interface IrNestedSequenceClip extends IrBaseClip {
100
+ readonly kind: 'nested-sequence-clip';
101
+ readonly source: IrNestedSequenceSource;
102
+ readonly visual: IrVisualProperties;
103
+ }
104
+ export interface IrVec2 {
105
+ readonly x: number;
106
+ readonly y: number;
107
+ }
108
+ export interface IrVisualProperties {
109
+ readonly fit: 'contain' | 'cover' | 'fill' | 'none';
110
+ readonly transform: {
111
+ readonly positionPx: IrVec2 | JsonObject;
112
+ readonly anchor: IrVec2 | JsonObject;
113
+ readonly scale: IrVec2 | JsonObject;
114
+ readonly rotationDeg: number | JsonObject;
115
+ readonly skewDeg: IrVec2 | JsonObject;
116
+ };
117
+ readonly crop: JsonObject;
118
+ readonly opacity: number | JsonObject;
119
+ readonly blendMode: string;
120
+ readonly mask?: {
121
+ readonly sourceItemId: string;
122
+ readonly channel: 'alpha' | 'luma';
123
+ readonly invert: boolean;
124
+ readonly featherPx: number;
125
+ readonly space: 'source' | 'canvas';
126
+ readonly consumeSource: boolean;
127
+ };
128
+ }
129
+ export interface IrGeneratorClip extends IrBaseClip {
130
+ readonly kind: 'generator-clip';
131
+ readonly generator: JsonObject;
132
+ readonly visual: IrVisualProperties;
133
+ }
134
+ export interface IrShapeClip extends IrBaseClip {
135
+ readonly kind: 'shape-clip';
136
+ readonly shape: JsonObject;
137
+ readonly visual: IrVisualProperties;
138
+ }
139
+ export interface IrMaterialContentClip extends IrBaseClip {
140
+ readonly kind: 'material-content-clip';
141
+ readonly materialInstanceId: string;
142
+ readonly visual: IrVisualProperties;
143
+ }
144
+ export interface IrAdjustmentClip extends IrBaseClip {
145
+ readonly kind: 'adjustment-clip';
146
+ readonly visual: IrVisualProperties;
147
+ }
148
+ export interface IrAudioClip extends IrBaseClip {
149
+ readonly kind: 'audio-clip';
150
+ readonly source: IrMediaSource;
151
+ readonly audio: JsonObject;
152
+ }
153
+ export type IrClip = IrVisualClip | IrTextClip | IrNestedSequenceClip | IrGeneratorClip | IrShapeClip | IrMaterialContentClip | IrAdjustmentClip | IrAudioClip;
154
+ export interface IrTrack {
155
+ readonly id: string;
156
+ readonly kind: 'visual' | 'audio' | 'caption';
157
+ readonly enabled: boolean;
158
+ /** Track-level mixer state. Present for audio tracks compiled from Project v1. */
159
+ readonly audio?: JsonObject;
160
+ readonly clips: readonly IrClip[];
161
+ readonly materialInstanceIds: readonly string[];
162
+ readonly fingerprint: string;
163
+ }
164
+ export interface IrTransition {
165
+ readonly id: string;
166
+ readonly trackId: string;
167
+ readonly fromItemId: string;
168
+ readonly toItemId: string;
169
+ readonly range: TimeRange;
170
+ readonly materialInstanceId: string;
171
+ readonly dependencyEntityIds: readonly string[];
172
+ readonly fingerprint: string;
173
+ }
174
+ export interface RenderIr {
175
+ readonly irVersion: '1.0.0';
176
+ readonly projectId: string;
177
+ readonly sequenceId: string;
178
+ readonly revision: bigint;
179
+ readonly width: number;
180
+ readonly height: number;
181
+ readonly frameRate: Rational;
182
+ readonly sampleRate: number;
183
+ readonly channelLayout: string;
184
+ readonly workingColorSpace: string;
185
+ readonly transferFunction?: 'srgb' | 'gamma22' | 'pq' | 'hlg';
186
+ readonly bitDepth?: 8 | 10;
187
+ readonly backgroundColor?: JsonObject;
188
+ readonly durationUs: number;
189
+ readonly tracks: readonly IrTrack[];
190
+ readonly transitions: readonly IrTransition[];
191
+ readonly materials: Readonly<Record<string, IrMaterialInstance>>;
192
+ /** Compiled nested Sequence graphs; absent only in legacy hand-authored IR. */
193
+ readonly subgraphs?: Readonly<Record<string, RenderIr>>;
194
+ }
195
+ export interface CompileStats {
196
+ readonly compiledClips: number;
197
+ readonly reusedClips: number;
198
+ readonly compiledTransitions: number;
199
+ readonly reusedTransitions: number;
200
+ readonly affectedRanges: readonly {
201
+ readonly sequenceId: string;
202
+ readonly startUs: number;
203
+ readonly durationUs: number;
204
+ }[];
205
+ }
206
+ export interface RenderIrCompilation {
207
+ readonly ir: RenderIr;
208
+ readonly stats: CompileStats;
209
+ }
210
+ export interface ActiveVisualState {
211
+ readonly timeUs: number;
212
+ readonly clips: readonly {
213
+ readonly clip: IrVisualClip | IrTextClip | IrNestedSequenceClip | IrGeneratorClip | IrShapeClip | IrMaterialContentClip | IrAdjustmentClip;
214
+ readonly sourceTimeUs: number | null;
215
+ readonly materials: readonly IrMaterialInstance[];
216
+ }[];
217
+ readonly transition?: {
218
+ readonly transition: IrTransition;
219
+ readonly progress: number;
220
+ readonly material: IrMaterialInstance;
221
+ };
222
+ }
223
+ export interface EvaluatedMaterialInstance {
224
+ readonly id: string;
225
+ readonly parameters: Readonly<Record<string, JsonValue>>;
226
+ readonly resourceBindings: Readonly<Record<string, JsonValue>>;
227
+ readonly inputBindings: Readonly<Record<string, JsonValue>>;
228
+ }
229
+ export interface ActiveAudioState {
230
+ readonly startUs: number;
231
+ readonly durationUs: number;
232
+ readonly clips: readonly {
233
+ readonly clip: IrAudioClip;
234
+ readonly sourceStartUs: number;
235
+ readonly sequenceStartUs: number;
236
+ readonly durationUs: number;
237
+ readonly gain: number;
238
+ readonly pan: number;
239
+ readonly trackAudio: JsonObject;
240
+ }[];
241
+ }
242
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@aelionsdk/render-ir",
3
+ "version": "0.1.0-beta.1",
4
+ "description": "Incremental render intermediate representation compiler for AelionSDK",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/FoyonaCZY/AelionSDK.git",
9
+ "directory": "packages/render-ir"
10
+ },
11
+ "keywords": [
12
+ "aelion",
13
+ "video",
14
+ "rendering",
15
+ "timeline"
16
+ ],
17
+ "sideEffects": false,
18
+ "type": "module",
19
+ "exports": {
20
+ ".": {
21
+ "types": "./dist/index.d.ts",
22
+ "import": "./dist/index.js"
23
+ }
24
+ },
25
+ "files": [
26
+ "dist",
27
+ "!dist/.tsbuildinfo"
28
+ ],
29
+ "engines": {
30
+ "node": ">=20.19"
31
+ },
32
+ "publishConfig": {
33
+ "access": "public",
34
+ "provenance": true
35
+ },
36
+ "dependencies": {
37
+ "@aelionsdk/core": "0.1.0-beta.1",
38
+ "@aelionsdk/material-compiler": "0.1.0-beta.1",
39
+ "@aelionsdk/project-schema": "0.1.0-beta.1"
40
+ },
41
+ "scripts": {
42
+ "build": "tsc -b",
43
+ "typecheck": "tsc -b --pretty false"
44
+ }
45
+ }