@hyperframes/engine 0.8.43 → 0.8.45

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,176 @@
1
+ /**
2
+ * Sub-frame multi-sample motion blur (issue #4010).
3
+ *
4
+ * For each output frame the capture path seeks the timeline to K sub-frame times spread
5
+ * across the shutter window, captures each, and averages them. Unlike the catalog
6
+ * component, which stacks offset copies of an element and can only integrate
7
+ * translation, re-rendering at each sample integrates whatever the composition actually
8
+ * does inside the window: rotation, scale, opacity, filters, child animation.
9
+ *
10
+ * Shutter window, the After Effects model, in frames rather than seconds so the sample
11
+ * offsets are frame-rate independent:
12
+ *
13
+ * shutterTime = shutterAngle / 360 / fps
14
+ * windowStart = t + shutterPhase / 360 / fps
15
+ * sample k at windowStart + (k + 0.5) / N * shutterTime
16
+ */
17
+ import { decodePng, srgbByteToLinear } from "../utils/alphaBlit.js";
18
+ export const MAX_SAMPLES_PER_FRAME = 64;
19
+ const DEFAULT_SAMPLES_PER_FRAME = 16;
20
+ const DEFAULT_SHUTTER_ANGLE = 180;
21
+ const DEFAULT_SHUTTER_PHASE = -90;
22
+ /**
23
+ * Ticks per output frame on the seek grid. Fine enough that the rounding error on a
24
+ * sample time is under 1/8192 of a frame, coarse enough to stay exactly representable.
25
+ */
26
+ const SUB_FRAME_DIVISIONS = 4096;
27
+ function finiteOr(value, fallback) {
28
+ return Number.isFinite(value) ? value : fallback;
29
+ }
30
+ /** Resolve caller options into a plan, or null when motion blur is off. */
31
+ export function resolveMotionBlurPlan(options) {
32
+ if (!options)
33
+ return null;
34
+ const samplesPerFrame = Math.min(MAX_SAMPLES_PER_FRAME, Math.max(1, Math.round(finiteOr(options.samplesPerFrame, DEFAULT_SAMPLES_PER_FRAME))));
35
+ const shutterAngle = finiteOr(options.shutterAngle, DEFAULT_SHUTTER_ANGLE);
36
+ const shutterPhase = finiteOr(options.shutterPhase, DEFAULT_SHUTTER_PHASE);
37
+ const blend = options.blend === "linear" ? "linear" : "srgb";
38
+ const windowStartFrames = shutterPhase / 360;
39
+ const shutterFrames = shutterAngle / 360;
40
+ const sampleTickOffsets = [];
41
+ for (let k = 0; k < samplesPerFrame; k++) {
42
+ const offsetFrames = windowStartFrames + ((k + 0.5) / samplesPerFrame) * shutterFrames;
43
+ sampleTickOffsets.push(Math.round(offsetFrames * SUB_FRAME_DIVISIONS));
44
+ }
45
+ return { blend, subFrameDivisions: SUB_FRAME_DIVISIONS, sampleTickOffsets };
46
+ }
47
+ /**
48
+ * Absolute seek times for one output frame, in ascending order.
49
+ *
50
+ * Built from integer ticks rather than by adding floats to `frameIndex / fps`, so the
51
+ * page-side quantizer recovers the intended tick exactly on every host. Times before the
52
+ * composition start clamp to 0, which is what After Effects does at the first frame.
53
+ */
54
+ export function motionBlurSampleTimes(plan, frameIndex, fps) {
55
+ const grid = fps * plan.subFrameDivisions;
56
+ const frameTicks = frameIndex * plan.subFrameDivisions;
57
+ return plan.sampleTickOffsets.map((offset) => Math.max(0, frameTicks + offset) / grid);
58
+ }
59
+ /**
60
+ * Is every frame the shutter window reads from known static, so this frame can reuse its
61
+ * predecessor's buffer instead of paying K captures?
62
+ *
63
+ * The static-frame dedup asks whether a frame is byte-identical to the one before it. With
64
+ * blur on that is not enough: the window reads content from either side of the frame
65
+ * instant, so a still frame next to a moving one still has to be captured. At a shutter
66
+ * angle above 360 the window spans whole neighbouring frames and the reuse would drop a
67
+ * frame of motion outright.
68
+ *
69
+ * The range covers the previous frame's window too, because reuse claims this frame's
70
+ * blurred output equals that one's. Contract taken from #4013 by Dante-dan, which carried
71
+ * this guard before we did.
72
+ */
73
+ export function motionBlurWindowIsStatic(plan, frameIndex, staticFrames) {
74
+ const first = Math.floor(frameIndex - 1 + Math.min(...plan.sampleTickOffsets) / plan.subFrameDivisions);
75
+ // A sample landing inside [F, F+1) reads content the frame set only pins down at both
76
+ // ends, so the frame after the last one touched has to be static as well.
77
+ const last = Math.floor(frameIndex + Math.max(...plan.sampleTickOffsets) / plan.subFrameDivisions) + 1;
78
+ for (let frame = first; frame <= last; frame++) {
79
+ if (!staticFrames.has(frame))
80
+ return false;
81
+ }
82
+ return true;
83
+ }
84
+ const SRGB_TO_LINEAR = (() => {
85
+ const lut = new Float64Array(256);
86
+ for (let i = 0; i < 256; i++)
87
+ lut[i] = srgbByteToLinear(i);
88
+ return lut;
89
+ })();
90
+ /**
91
+ * Identity table for the sRGB working space, so the accumulate loop is one shape for both
92
+ * spaces instead of two near-copies. Measured on a 1920x1080 frame at 16 samples, reading
93
+ * this table costs nothing against using the byte directly: the two variants time within
94
+ * each other's run-to-run noise.
95
+ */
96
+ const SRGB_PASSTHROUGH = (() => {
97
+ const lut = new Float64Array(256);
98
+ for (let i = 0; i < 256; i++)
99
+ lut[i] = i;
100
+ return lut;
101
+ })();
102
+ function linearToByte(value) {
103
+ const c = value <= 0.0031308 ? value * 12.92 : 1.055 * Math.pow(value, 1 / 2.4) - 0.055;
104
+ return clampByte(c * 255);
105
+ }
106
+ function clampByte(value) {
107
+ return Math.min(255, Math.max(0, Math.round(value)));
108
+ }
109
+ /**
110
+ * Running average of the sub-frame captures for one output frame.
111
+ *
112
+ * Samples are folded in as they arrive rather than held until the end, so peak memory is
113
+ * one accumulator plus one decoded sample regardless of K. Holding all K decoded frames
114
+ * would be (K + 1) * 8.3 MB at 1080p, which is 141 MB at the default 16 samples and
115
+ * 540 MB at the 64 maximum, thrown away and rebuilt on every frame of the render.
116
+ *
117
+ * Colour is summed premultiplied by alpha and un-premultiplied at the end, so a sample
118
+ * that is transparent at a pixel contributes no colour there. On opaque frames, the
119
+ * common case, that reduces to a plain mean.
120
+ */
121
+ export class MotionBlurAccumulator {
122
+ toWorking;
123
+ fromWorking;
124
+ /** Premultiplied r, g, b and alpha sums per pixel. Null until the first sample sets the size. */
125
+ sums = null;
126
+ width = 0;
127
+ height = 0;
128
+ count = 0;
129
+ constructor(blend) {
130
+ this.toWorking = blend === "linear" ? SRGB_TO_LINEAR : SRGB_PASSTHROUGH;
131
+ this.fromWorking = blend === "linear" ? linearToByte : clampByte;
132
+ }
133
+ /** Fold one captured sample PNG into the running average. */
134
+ add(png) {
135
+ const { width, height, data } = decodePng(png);
136
+ if (!this.sums) {
137
+ this.width = width;
138
+ this.height = height;
139
+ // float32 holds a 64-sample premultiplied sum (max 16320) far more precisely than
140
+ // the 1/255 quantum the result is rounded to.
141
+ this.sums = new Float32Array(width * height * 4);
142
+ }
143
+ else if (width !== this.width || height !== this.height) {
144
+ throw new Error(`MotionBlurAccumulator: sample geometry mismatch (${width}x${height} vs ${this.width}x${this.height})`);
145
+ }
146
+ const sums = this.sums;
147
+ const toWorking = this.toWorking;
148
+ for (let i = 0; i < sums.length; i += 4) {
149
+ const alpha = data[i + 3] / 255;
150
+ sums[i] = sums[i] + toWorking[data[i]] * alpha;
151
+ sums[i + 1] = sums[i + 1] + toWorking[data[i + 1]] * alpha;
152
+ sums[i + 2] = sums[i + 2] + toWorking[data[i + 2]] * alpha;
153
+ sums[i + 3] = sums[i + 3] + alpha;
154
+ }
155
+ this.count += 1;
156
+ }
157
+ /** Un-premultiply and encode the average. Throws if no sample was ever added. */
158
+ finish() {
159
+ const sums = this.sums;
160
+ if (!sums)
161
+ throw new Error("MotionBlurAccumulator: no samples");
162
+ const out = new Uint8Array(sums.length);
163
+ for (let i = 0; i < sums.length; i += 4) {
164
+ const alphaSum = sums[i + 3];
165
+ out[i + 3] = clampByte((alphaSum / this.count) * 255);
166
+ if (alphaSum === 0)
167
+ continue;
168
+ const scale = 1 / alphaSum;
169
+ out[i] = this.fromWorking(sums[i] * scale);
170
+ out[i + 1] = this.fromWorking(sums[i + 1] * scale);
171
+ out[i + 2] = this.fromWorking(sums[i + 2] * scale);
172
+ }
173
+ return { width: this.width, height: this.height, data: out };
174
+ }
175
+ }
176
+ //# sourceMappingURL=motionBlur.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motionBlur.js","sourceRoot":"","sources":["../../src/services/motionBlur.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,16 @@ export interface StreamingEncoderOptions {
48
48
  };
49
49
  /** When set, use rawvideo input instead of image2pipe. For HDR PQ-encoded frames. */
50
50
  rawInputFormat?: "rgb48le";
51
+ /**
52
+ * Force an IDR keyframe every `gopSize` frames. Set by the HLS format so
53
+ * `-f hls -c copy` can cut segments on exact time boundaries — the segmenter
54
+ * only splits at keyframes the encoder already emitted. Default `false`
55
+ * leaves the arg list byte-identical. libx264 / libx265 only (GPU encoders,
56
+ * VP9 and ProRes ignore it); see `EncoderOptions.lockGopForChunkConcat`.
57
+ */
58
+ lockGopForChunkConcat?: boolean;
59
+ /** Required when `lockGopForChunkConcat` is `true`. Frames per GOP. */
60
+ gopSize?: number;
51
61
  }
52
62
  export interface StreamingEncoderResult {
53
63
  success: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"streamingEncoder.d.ts","sourceRoot":"","sources":["../../src/services/streamingEncoder.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;GAYG;AAaH,OAAO,EACL,KAAK,UAAU,EAKhB,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAA+B,KAAK,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAK1E,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAc9D,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC;;;;;;OAMG;IACH,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CAC7B;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CA8DjG;AAMD,MAAM,WAAW,uBAAuB;IACtC,uEAAuE;IACvE,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC7B,GAAG,CAAC,EAAE;QAAE,QAAQ,EAAE,OAAO,iBAAiB,EAAE,WAAW,CAAA;KAAE,CAAC;IAC1D,qFAAqF;IACrF,cAAc,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,aAAa,CAAC,EAAE,uBAAuB,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,KAAK,EAAE,MAAM,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC7C,aAAa,EAAE,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACrD;;;;;OAKG;IACH,YAAY,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACvC,kFAAkF;IAClF,oBAAoB,CAAC,EAAE,MAAM,uBAAuB,GAAG,SAAS,CAAC;CAClE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,uBAAuB,EAChC,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,UAAiB,GAC5B,MAAM,EAAE,CAoPV;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,uBAAuB,EAChC,MAAM,CAAC,EAAE,WAAW,EACpB,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC,GAC7D,OAAO,CAAC,gBAAgB,CAAC,CAqN3B"}
1
+ {"version":3,"file":"streamingEncoder.d.ts","sourceRoot":"","sources":["../../src/services/streamingEncoder.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@ import { DEFAULT_CONFIG } from "../config.js";
28
28
  import { fpsToFfmpegArg, fpsToNumber } from "@hyperframes/core";
29
29
  import { appendVp9CpuUsedArg } from "./vp9Options.js";
30
30
  import { appendRenderProvenanceArgs } from "../utils/renderProvenance.js";
31
+ import { appendLockedGopArgs, lockedGopCodecParams, resolveLockedGopSize } from "./chunkEncoder.js";
31
32
  export function createFrameReorderBuffer(startFrame, endFrame) {
32
33
  let cursor = startFrame;
33
34
  let aborted = null;
@@ -182,11 +183,18 @@ export function buildStreamingArgs(options, outputPath, gpuEncoder = null) {
182
183
  args.push("-b:v", bitrate);
183
184
  else
184
185
  args.push("-crf", String(quality));
186
+ // Same closed-GOP lock as chunkEncoder.buildEncoderArgs, so the HLS
187
+ // packager can cut `-c copy` segments on exact keyframe boundaries.
188
+ const lockedGop = resolveLockedGopSize(options);
189
+ if (lockedGop !== null)
190
+ appendLockedGopArgs(args, lockedGop);
185
191
  // Mirrors chunkEncoder: disable B-frames for h264 so PTS == DTS, no
186
192
  // negative DTS at stream start. Without this, files freeze on the
187
193
  // first frame in VS Code preview, several browsers, and some HW
188
194
  // decoders. See chunkEncoder.buildEncoderArgs for the full reasoning.
189
- if (codec === "h264") {
195
+ // h265 also gets `-bf 0` under a locked GOP: B-frame reordering across
196
+ // a segment boundary brings the same negative-DTS hazard back at every seam.
197
+ if (codec === "h264" || lockedGop !== null) {
190
198
  args.push("-bf", "0");
191
199
  }
192
200
  // Encoder-specific params: anti-banding + color space tagging.
@@ -198,11 +206,12 @@ export function buildStreamingArgs(options, outputPath, gpuEncoder = null) {
198
206
  const colorParams = options.rawInputFormat && options.hdr
199
207
  ? getHdrEncoderColorParams(options.hdr.transfer).x265ColorParams
200
208
  : "colorprim=bt709:transfer=bt709:colormatrix=bt709";
209
+ const gopParams = lockedGop !== null ? `:${lockedGopCodecParams(codec, lockedGop)}` : "";
201
210
  if (preset === "ultrafast") {
202
- args.push(xParamsFlag, `aq-mode=3:${colorParams}`);
211
+ args.push(xParamsFlag, `aq-mode=3:${colorParams}${gopParams}`);
203
212
  }
204
213
  else {
205
- args.push(xParamsFlag, `aq-mode=3:aq-strength=0.8:deblock=1,1:${colorParams}`);
214
+ args.push(xParamsFlag, `aq-mode=3:aq-strength=0.8:deblock=1,1:${colorParams}${gopParams}`);
206
215
  }
207
216
  // Apple devices require hvc1 tag for HEVC playback (default hev1 won't open in QuickTime)
208
217
  if (codec === "h265") {
@@ -1 +1 @@
1
- {"version":3,"file":"streamingEncoder.js","sourceRoot":"","sources":["../../src/services/streamingEncoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"streamingEncoder.js","sourceRoot":"","sources":["../../src/services/streamingEncoder.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -5,6 +5,7 @@
5
5
  * as video must expose `window.__hf` implementing the HfProtocol interface.
6
6
  */
7
7
  import type { Fps } from "@hyperframes/core";
8
+ import type { MotionBlurOptions } from "./services/motionBlur.js";
8
9
  /**
9
10
  * Outcome of waiting for a sub-composition's GSAP timelines to register.
10
11
  * Threaded string-typed through `CapturePerfSummary` / `RenderPerfSummary` /
@@ -82,11 +83,22 @@ export interface HfTransitionMeta {
82
83
  * GSAP, Framer Motion, CSS animations, Three.js — anything works as long
83
84
  * as `seek()` produces deterministic visual output for a given time.
84
85
  */
86
+ /**
87
+ * Per-seek controls the page honours. Both default off, which is an ordinary frame seek.
88
+ *
89
+ * `suppressEvents` stops a composition's own timeline callbacks from firing, and
90
+ * `subFrameDivisions` refines the grid the page quantizes onto so a fractional time is
91
+ * not floored back onto the output frame. Motion-blur sampling sets both.
92
+ */
93
+ export interface HfSeekOptions {
94
+ suppressEvents?: boolean;
95
+ subFrameDivisions?: number;
96
+ }
85
97
  export interface HfProtocol {
86
98
  /** Total duration of the composition in seconds */
87
99
  duration: number;
88
100
  /** Seek to a specific time. Must produce deterministic visual output. */
89
- seek(time: number): void;
101
+ seek(time: number, options?: HfSeekOptions): void;
90
102
  /** Optional: media elements the engine should handle */
91
103
  media?: HfMediaElement[];
92
104
  /** Optional: shader transition metadata, populated by @hyperframes/shader-transitions */
@@ -113,6 +125,12 @@ export interface CaptureOptions {
113
125
  fps: Fps;
114
126
  format?: "jpeg" | "png";
115
127
  quality?: number;
128
+ /**
129
+ * Opt into sub-frame multi-sample motion blur (issue #4010). Absent means off and the
130
+ * capture path is byte-identical to a render without it. Requires `format: "png"` and
131
+ * screenshot capture mode; see `services/motionBlur.ts`.
132
+ */
133
+ motionBlur?: MotionBlurOptions;
116
134
  deviceScaleFactor?: number;
117
135
  /**
118
136
  * Opt into Chrome's capture-beyond-viewport screenshot path. Leave undefined
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,13 @@ export declare function decodePng(buf: Buffer): {
17
17
  height: number;
18
18
  data: Uint8Array;
19
19
  };
20
+ /**
21
+ * Encode 8-bit RGBA pixels as a PNG, the inverse of `decodePng`.
22
+ *
23
+ * Byte-identical for identical pixels: every scanline takes filter 0 and zlib runs at a
24
+ * fixed level, so a render that samples the same instant twice produces the same file.
25
+ */
26
+ export declare function encodePng(width: number, height: number, rgba: Uint8Array): Buffer;
20
27
  /**
21
28
  * Decode a 16-bit RGB PNG (from FFmpeg) to an rgb48le Buffer.
22
29
  *
@@ -31,6 +38,32 @@ export declare function decodePngToRgb48le(buf: Buffer): {
31
38
  height: number;
32
39
  data: Buffer;
33
40
  };
41
+ /**
42
+ * Build a 256-entry LUT: sRGB 8-bit value → HDR 16-bit signal value.
43
+ *
44
+ * Pipeline per channel: sRGB EOTF (decode gamma) → linear → HDR OETF → 16-bit.
45
+ *
46
+ * ## Convention
47
+ *
48
+ * "Linear" here means **scene light in [0, 1] relative to SDR reference white**
49
+ * (not absolute nits). The HLG branch applies the OETF directly — no OOTF (no
50
+ * gamma 1.2 scene→display conversion). This is the right choice for DOM
51
+ * overlays that will be composited ON TOP of HLG video pixels (which are
52
+ * already in HLG signal space); we need the overlay to sit in the same space
53
+ * as what it’s blending onto. Applying the OOTF here would double-apply it
54
+ * when the HDR video already carries scene-light semantics.
55
+ *
56
+ * For PQ, SDR white is placed at 203 nits per ITU-R BT.2408 ("SDR white"
57
+ * reference level) and normalized against 10,000-nit peak. This lets SDR
58
+ * content (text, UI) sit at the conventional SDR-white brightness within a
59
+ * PQ frame rather than at peak brightness.
60
+ *
61
+ * Note: converts the transfer function but not the color primaries (bt709 →
62
+ * bt2020). For neutral/near-neutral content (text, UI) the gamut difference
63
+ * is negligible.
64
+ */
65
+ /** sRGB EOTF: an 8-bit signal value to linear light, 0 to 1 relative to SDR white. */
66
+ export declare function srgbByteToLinear(value: number): number;
34
67
  /**
35
68
  * Alpha-composite a DOM RGBA overlay (8-bit sRGB) onto an HDR canvas
36
69
  * (rgb48le) in-place.
@@ -1 +1 @@
1
- {"version":3,"file":"alphaBlit.d.ts","sourceRoot":"","sources":["../../src/utils/alphaBlit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiJH;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAuB1F;AAID;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CA6B/F;AAqFD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,KAAK,GAAG,IAAI,GAAG,MAAc,GACtC,IAAI,CAiCN;AAcD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACtC,MAAM,CAOR;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAC9C,IAAI,CAiFN;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EAAE,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAC9C,IAAI,CA0HN;AAED;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,YAAY,CAAC;AA4F7E;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,SAAkB,EACvB,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CA+ER;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAavE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAwCjE"}
1
+ {"version":3,"file":"alphaBlit.d.ts","sourceRoot":"","sources":["../../src/utils/alphaBlit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkJH;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAuB1F;AAoBD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAwBjF;AAID;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CA6B/F;AAID;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGtD;AAyDD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,KAAK,GAAG,IAAI,GAAG,MAAc,GACtC,IAAI,CAiCN;AAcD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GACtC,MAAM,CAOR;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAC9C,IAAI,CAiFN;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EAAE,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAC9C,IAAI,CA0HN;AAED;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,YAAY,CAAC;AA4F7E;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,SAAkB,EACvB,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CA+ER;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAavE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAwCjE"}
@@ -4,7 +4,8 @@
4
4
  * Replaces per-frame FFmpeg spawns for the two-pass HDR compositing path.
5
5
  * Uses only Node.js built-ins (zlib) — no additional dependencies.
6
6
  */
7
- import { inflateSync } from "zlib";
7
+ import { deflateSync, inflateSync } from "zlib";
8
+ import { chunkCrc32 } from "./crc32.js";
8
9
  // ── PNG decoder ───────────────────────────────────────────────────────────────
9
10
  function paeth(a, b, c) {
10
11
  const p = a + b - c;
@@ -156,6 +157,50 @@ export function decodePng(buf) {
156
157
  }
157
158
  return { width, height, data: output };
158
159
  }
160
+ // ── PNG encoder ──────────────────────────────────────────────────
161
+ /**
162
+ * Intermediate frames are read once by the encoder and deleted, so encode speed matters
163
+ * and compression ratio does not. Measured on a 1920x1080 frame: level 1 takes 214 ms for
164
+ * 4.14 MiB against level 6's 293 ms for 3.98 MiB.
165
+ */
166
+ const PNG_DEFLATE_LEVEL = 1;
167
+ function pngChunk(type, body) {
168
+ const header = Buffer.alloc(8);
169
+ header.writeUInt32BE(body.length, 0);
170
+ header.write(type, 4, "ascii");
171
+ const trailer = Buffer.alloc(4);
172
+ trailer.writeUInt32BE(chunkCrc32(type, body), 0);
173
+ return Buffer.concat([header, body, trailer]);
174
+ }
175
+ /**
176
+ * Encode 8-bit RGBA pixels as a PNG, the inverse of `decodePng`.
177
+ *
178
+ * Byte-identical for identical pixels: every scanline takes filter 0 and zlib runs at a
179
+ * fixed level, so a render that samples the same instant twice produces the same file.
180
+ */
181
+ export function encodePng(width, height, rgba) {
182
+ const expected = width * height * 4;
183
+ if (rgba.length !== expected) {
184
+ throw new Error(`encodePng: expected ${expected} bytes for ${width}x${height}, got ${rgba.length}`);
185
+ }
186
+ const stride = width * 4;
187
+ const filtered = Buffer.alloc((stride + 1) * height);
188
+ for (let y = 0; y < height; y++) {
189
+ filtered[y * (stride + 1)] = 0;
190
+ filtered.set(rgba.subarray(y * stride, (y + 1) * stride), y * (stride + 1) + 1);
191
+ }
192
+ const ihdr = Buffer.alloc(13);
193
+ ihdr.writeUInt32BE(width, 0);
194
+ ihdr.writeUInt32BE(height, 4);
195
+ ihdr[8] = 8; // bit depth
196
+ ihdr[9] = 6; // colour type RGBA
197
+ return Buffer.concat([
198
+ Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]),
199
+ pngChunk("IHDR", ihdr),
200
+ pngChunk("IDAT", deflateSync(filtered, { level: PNG_DEFLATE_LEVEL })),
201
+ pngChunk("IEND", Buffer.alloc(0)),
202
+ ]);
203
+ }
159
204
  // ── 16-bit PNG decoder ────────────────────────────────────────────────────────
160
205
  /**
161
206
  * Decode a 16-bit RGB PNG (from FFmpeg) to an rgb48le Buffer.
@@ -216,6 +261,11 @@ export function decodePngToRgb48le(buf) {
216
261
  * bt2020). For neutral/near-neutral content (text, UI) the gamut difference
217
262
  * is negligible.
218
263
  */
264
+ /** sRGB EOTF: an 8-bit signal value to linear light, 0 to 1 relative to SDR white. */
265
+ export function srgbByteToLinear(value) {
266
+ const v = value / 255;
267
+ return v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);
268
+ }
219
269
  function buildSrgbToSignalLut(transfer) {
220
270
  const lut = new Uint16Array(256);
221
271
  // HLG OETF constants (Rec. 2100)
@@ -235,9 +285,7 @@ function buildSrgbToSignalLut(transfer) {
235
285
  lut[i] = i * 257;
236
286
  continue;
237
287
  }
238
- // sRGB EOTF: signal → linear (range 0–1, relative to SDR white)
239
- const v = i / 255;
240
- const linear = v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);
288
+ const linear = srgbByteToLinear(i);
241
289
  let signal;
242
290
  if (transfer === "hlg") {
243
291
  signal =