@hyperframes/engine 0.4.6 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/config.d.ts +6 -0
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +9 -0
  4. package/dist/config.js.map +1 -1
  5. package/dist/index.d.ts +11 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +10 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/services/browserManager.d.ts.map +1 -1
  10. package/dist/services/browserManager.js +6 -3
  11. package/dist/services/browserManager.js.map +1 -1
  12. package/dist/services/chunkEncoder.d.ts +14 -7
  13. package/dist/services/chunkEncoder.d.ts.map +1 -1
  14. package/dist/services/chunkEncoder.js +25 -9
  15. package/dist/services/chunkEncoder.js.map +1 -1
  16. package/dist/services/chunkEncoder.types.d.ts +4 -0
  17. package/dist/services/chunkEncoder.types.d.ts.map +1 -1
  18. package/dist/services/hdrCapture.d.ts +62 -0
  19. package/dist/services/hdrCapture.d.ts.map +1 -0
  20. package/dist/services/hdrCapture.js +259 -0
  21. package/dist/services/hdrCapture.js.map +1 -0
  22. package/dist/services/screenshotService.d.ts +115 -0
  23. package/dist/services/screenshotService.d.ts.map +1 -1
  24. package/dist/services/screenshotService.js +252 -19
  25. package/dist/services/screenshotService.js.map +1 -1
  26. package/dist/services/streamingEncoder.d.ts +18 -3
  27. package/dist/services/streamingEncoder.d.ts.map +1 -1
  28. package/dist/services/streamingEncoder.js +104 -50
  29. package/dist/services/streamingEncoder.js.map +1 -1
  30. package/dist/services/videoFrameExtractor.d.ts.map +1 -1
  31. package/dist/services/videoFrameExtractor.js +109 -18
  32. package/dist/services/videoFrameExtractor.js.map +1 -1
  33. package/dist/services/videoFrameInjector.d.ts +59 -0
  34. package/dist/services/videoFrameInjector.d.ts.map +1 -1
  35. package/dist/services/videoFrameInjector.js +290 -0
  36. package/dist/services/videoFrameInjector.js.map +1 -1
  37. package/dist/types.d.ts +32 -0
  38. package/dist/types.d.ts.map +1 -1
  39. package/dist/utils/alphaBlit.d.ts +105 -0
  40. package/dist/utils/alphaBlit.d.ts.map +1 -0
  41. package/dist/utils/alphaBlit.js +550 -0
  42. package/dist/utils/alphaBlit.js.map +1 -0
  43. package/dist/utils/ffprobe.d.ts +10 -0
  44. package/dist/utils/ffprobe.d.ts.map +1 -1
  45. package/dist/utils/ffprobe.js +7 -0
  46. package/dist/utils/ffprobe.js.map +1 -1
  47. package/dist/utils/hdr.d.ts +82 -0
  48. package/dist/utils/hdr.d.ts.map +1 -0
  49. package/dist/utils/hdr.js +87 -0
  50. package/dist/utils/hdr.js.map +1 -0
  51. package/dist/utils/layerCompositor.d.ts +36 -0
  52. package/dist/utils/layerCompositor.d.ts.map +1 -0
  53. package/dist/utils/layerCompositor.js +49 -0
  54. package/dist/utils/layerCompositor.js.map +1 -0
  55. package/dist/utils/shaderTransitions.d.ts +166 -0
  56. package/dist/utils/shaderTransitions.d.ts.map +1 -0
  57. package/dist/utils/shaderTransitions.js +894 -0
  58. package/dist/utils/shaderTransitions.js.map +1 -0
  59. package/package.json +3 -2
  60. package/src/config.ts +16 -0
  61. package/src/index.ts +61 -0
  62. package/src/services/browserManager.ts +6 -3
  63. package/src/services/chunkEncoder.test.ts +88 -0
  64. package/src/services/chunkEncoder.ts +35 -9
  65. package/src/services/chunkEncoder.types.ts +3 -0
  66. package/src/services/hdrCapture.test.ts +159 -0
  67. package/src/services/hdrCapture.ts +354 -0
  68. package/src/services/screenshotService.ts +271 -17
  69. package/src/services/streamingEncoder.test.ts +228 -0
  70. package/src/services/streamingEncoder.ts +153 -63
  71. package/src/services/videoFrameExtractor.ts +135 -31
  72. package/src/services/videoFrameInjector.ts +342 -0
  73. package/src/types.ts +34 -0
  74. package/src/utils/alphaBlit.test.ts +993 -0
  75. package/src/utils/alphaBlit.ts +643 -0
  76. package/src/utils/ffprobe.ts +22 -0
  77. package/src/utils/hdr.test.ts +191 -0
  78. package/src/utils/hdr.ts +137 -0
  79. package/src/utils/layerCompositor.test.ts +141 -0
  80. package/src/utils/layerCompositor.ts +58 -0
  81. package/src/utils/shaderTransitions.test.ts +674 -0
  82. package/src/utils/shaderTransitions.ts +1130 -0
  83. package/src/utils/uint16-alignment-audit.test.ts +125 -0
  84. package/tsconfig.json +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shaderTransitions.js","sourceRoot":"","sources":["../../src/utils/shaderTransitions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperframes/engine",
3
- "version": "0.4.6",
3
+ "version": "0.4.8",
4
4
  "description": "Seekable web page to video rendering engine (Puppeteer + FFmpeg)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -19,10 +19,11 @@
19
19
  "linkedom": "^0.18.12",
20
20
  "puppeteer": "^24.0.0",
21
21
  "puppeteer-core": "^24.39.1",
22
- "@hyperframes/core": "^0.4.6"
22
+ "@hyperframes/core": "^0.4.8"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/node": "^22.10.1",
26
+ "@webgpu/types": "^0.1.69",
26
27
  "typescript": "^5.7.2",
27
28
  "vitest": "^3.2.4"
28
29
  },
package/src/config.ts CHANGED
@@ -52,6 +52,12 @@ export interface EngineConfig {
52
52
  /** Timeout for FFmpeg streaming encode (ms). Default: 600_000 */
53
53
  ffmpegStreamingTimeout: number;
54
54
 
55
+ // ── HDR ──────────────────────────────────────────────────────────────
56
+ /** HDR output transfer function. false = SDR output (default). */
57
+ hdr: { transfer: "hlg" | "pq" } | false;
58
+ /** Auto-detect HDR from video sources when hdr is not explicitly set. */
59
+ hdrAutoDetect: boolean;
60
+
55
61
  // ── Media ────────────────────────────────────────────────────────────
56
62
  audioGain: number;
57
63
  frameDataUriCacheLimit: number;
@@ -96,6 +102,9 @@ export const DEFAULT_CONFIG: EngineConfig = {
96
102
  ffmpegProcessTimeout: 300_000,
97
103
  ffmpegStreamingTimeout: 600_000,
98
104
 
105
+ hdr: false,
106
+ hdrAutoDetect: true,
107
+
99
108
  audioGain: 1.35,
100
109
  frameDataUriCacheLimit: 256,
101
110
 
@@ -170,6 +179,13 @@ export function resolveConfig(overrides?: Partial<EngineConfig>): EngineConfig {
170
179
  DEFAULT_CONFIG.ffmpegStreamingTimeout,
171
180
  ),
172
181
 
182
+ hdr: (() => {
183
+ const raw = env("PRODUCER_HDR_TRANSFER");
184
+ if (raw === "hlg" || raw === "pq") return { transfer: raw };
185
+ return undefined;
186
+ })(),
187
+ hdrAutoDetect: envBool("PRODUCER_HDR_AUTO_DETECT", DEFAULT_CONFIG.hdrAutoDetect),
188
+
173
189
  audioGain: envNum("PRODUCER_AUDIO_GAIN", DEFAULT_CONFIG.audioGain),
174
190
  frameDataUriCacheLimit: Math.max(
175
191
  32,
package/src/index.ts CHANGED
@@ -34,6 +34,7 @@
34
34
  export type {
35
35
  HfProtocol,
36
36
  HfMediaElement,
37
+ HfTransitionMeta,
37
38
  CaptureOptions,
38
39
  CaptureResult,
39
40
  CaptureBufferResult,
@@ -77,6 +78,11 @@ export {
77
78
  injectVideoFramesBatch,
78
79
  syncVideoFrameVisibility,
79
80
  cdpSessionCache,
81
+ initTransparentBackground,
82
+ captureAlphaPng,
83
+ applyDomLayerMask,
84
+ removeDomLayerMask,
85
+ DOM_LAYER_MASK_STYLE_ID,
80
86
  type BeginFrameResult,
81
87
  } from "./services/screenshotService.js";
82
88
 
@@ -153,3 +159,58 @@ export {
153
159
  } from "./utils/ffprobe.js";
154
160
 
155
161
  export { downloadToTemp, isHttpUrl } from "./utils/urlDownloader.js";
162
+ export { runFfmpeg, type RunFfmpegOptions, type RunFfmpegResult } from "./utils/runFfmpeg.js";
163
+
164
+ export {
165
+ decodePng,
166
+ decodePngToRgb48le,
167
+ blitRgba8OverRgb48le,
168
+ blitRgb48leRegion,
169
+ blitRgb48leAffine,
170
+ parseTransformMatrix,
171
+ getSrgbToHdrLut,
172
+ roundedRectAlpha,
173
+ } from "./utils/alphaBlit.js";
174
+
175
+ export { groupIntoLayers, type CompositeLayer } from "./utils/layerCompositor.js";
176
+
177
+ // ── Shader transitions ────────────────────────────────────────────────────────
178
+ export {
179
+ type TransitionFn,
180
+ TRANSITIONS,
181
+ crossfade,
182
+ sampleRgb48le,
183
+ hdrToLinear,
184
+ linearToHdr,
185
+ convertTransfer,
186
+ } from "./utils/shaderTransitions.js";
187
+
188
+ export {
189
+ initHdrReadback,
190
+ uploadAndReadbackHdrFrame,
191
+ float16ToPqRgb,
192
+ buildHdrChromeArgs,
193
+ launchHdrBrowser,
194
+ } from "./services/hdrCapture.js";
195
+
196
+ export { captureScreenshotWithAlpha } from "./services/screenshotService.js";
197
+
198
+ export {
199
+ hideVideoElements,
200
+ showVideoElements,
201
+ queryVideoElementBounds,
202
+ queryElementStacking,
203
+ type VideoElementBounds,
204
+ type ElementStackingInfo,
205
+ } from "./services/videoFrameInjector.js";
206
+
207
+ export {
208
+ isHdrColorSpace,
209
+ detectTransfer,
210
+ getHdrEncoderColorParams,
211
+ analyzeCompositionHdr,
212
+ type HdrTransfer,
213
+ type HdrEncoderColorParams,
214
+ type CompositionHdrInfo,
215
+ } from "./utils/hdr.js";
216
+ export type { VideoColorSpace } from "./utils/ffprobe.js";
@@ -244,8 +244,10 @@ export function buildChromeArgs(
244
244
  options: BuildChromeArgsOptions,
245
245
  config?: Partial<Pick<EngineConfig, "disableGpu" | "chromePath">>,
246
246
  ): string[] {
247
- // Chrome flags tuned for headless rendering performance.
248
- // Based on Remotion's open-browser.ts flags with additions for our use case.
247
+ // Chrome flags tuned for headless rendering performance. The set below is a
248
+ // fairly standard "headless-for-capture" configuration similar profiles
249
+ // appear in Puppeteer's defaults, Playwright, Remotion, and Chrome's own
250
+ // headless-shell guidance.
249
251
  const chromeArgs = [
250
252
  "--no-sandbox",
251
253
  "--disable-setuid-sandbox",
@@ -257,7 +259,8 @@ export function buildChromeArgs(
257
259
  "--font-render-hinting=none",
258
260
  "--force-color-profile=srgb",
259
261
  `--window-size=${options.width},${options.height}`,
260
- // Remotion perf flags — prevent Chrome from throttling background tabs/timers
262
+ // Prevent Chrome from throttling background tabs/timers — critical when the
263
+ // page is offscreen during headless capture
261
264
  "--disable-background-timer-throttling",
262
265
  "--disable-backgrounding-occluded-windows",
263
266
  "--disable-renderer-backgrounding",
@@ -247,3 +247,91 @@ describe("buildEncoderArgs color space", () => {
247
247
  expect(args).not.toContain("-video_track_timescale");
248
248
  });
249
249
  });
250
+
251
+ describe("getEncoderPreset HDR", () => {
252
+ it("returns h265 with 10-bit for HDR HLG", () => {
253
+ const preset = getEncoderPreset("standard", "mp4", { transfer: "hlg" });
254
+ expect(preset.codec).toBe("h265");
255
+ expect(preset.pixelFormat).toBe("yuv420p10le");
256
+ expect(preset.hdr).toEqual({ transfer: "hlg" });
257
+ });
258
+
259
+ it("returns h265 with 10-bit for HDR PQ", () => {
260
+ const preset = getEncoderPreset("high", "mp4", { transfer: "pq" });
261
+ expect(preset.codec).toBe("h265");
262
+ expect(preset.pixelFormat).toBe("yuv420p10le");
263
+ expect(preset.hdr).toEqual({ transfer: "pq" });
264
+ });
265
+
266
+ it("avoids ultrafast preset for HDR (upgrades to fast)", () => {
267
+ const preset = getEncoderPreset("draft", "mp4", { transfer: "hlg" });
268
+ expect(preset.preset).toBe("fast");
269
+ });
270
+
271
+ it("ignores HDR for webm format", () => {
272
+ const preset = getEncoderPreset("standard", "webm", { transfer: "hlg" });
273
+ expect(preset.codec).toBe("vp9");
274
+ expect(preset.hdr).toBeUndefined();
275
+ });
276
+
277
+ it("ignores HDR for mov format", () => {
278
+ const preset = getEncoderPreset("standard", "mov", { transfer: "pq" });
279
+ expect(preset.codec).toBe("prores");
280
+ expect(preset.hdr).toBeUndefined();
281
+ });
282
+ });
283
+
284
+ describe("buildEncoderArgs HDR color space", () => {
285
+ const baseOptions = { fps: 30, width: 1920, height: 1080 };
286
+ const inputArgs = ["-framerate", "30", "-i", "frames/%04d.png"];
287
+
288
+ it("keeps bt709 color tags when HDR flag is set but frames are still Chrome sRGB captures", () => {
289
+ // HDR flag gives H.265 + 10-bit encoding but pixels are still sRGB/bt709.
290
+ // Tagging as bt2020 causes orange shift — so we tag truthfully as bt709.
291
+ const args = buildEncoderArgs(
292
+ { ...baseOptions, codec: "h265", preset: "medium", quality: 23, hdr: { transfer: "hlg" } },
293
+ inputArgs,
294
+ "out.mp4",
295
+ );
296
+ expect(args[args.indexOf("-colorspace:v") + 1]).toBe("bt709");
297
+ expect(args[args.indexOf("-color_primaries:v") + 1]).toBe("bt709");
298
+ expect(args[args.indexOf("-color_trc:v") + 1]).toBe("bt709");
299
+ const paramIdx = args.indexOf("-x265-params");
300
+ expect(args[paramIdx + 1]).toContain("colorprim=bt709");
301
+ expect(args[paramIdx + 1]).toContain("transfer=bt709");
302
+ });
303
+
304
+ it("uses bt709 when HDR is not set", () => {
305
+ const args = buildEncoderArgs(
306
+ { ...baseOptions, codec: "h265", preset: "medium", quality: 23 },
307
+ inputArgs,
308
+ "out.mp4",
309
+ );
310
+ expect(args[args.indexOf("-colorspace:v") + 1]).toBe("bt709");
311
+ expect(args[args.indexOf("-color_trc:v") + 1]).toBe("bt709");
312
+ });
313
+
314
+ it("uses range conversion (not colorspace) for HDR CPU encoding", () => {
315
+ // Chrome screenshots are sRGB — we don't convert primaries (causes color shifts).
316
+ // Just range-convert and let the bt2020 container metadata + 10-bit handle the rest.
317
+ const args = buildEncoderArgs(
318
+ { ...baseOptions, codec: "h265", preset: "medium", quality: 23, hdr: { transfer: "hlg" } },
319
+ inputArgs,
320
+ "out.mp4",
321
+ );
322
+ const vfIdx = args.indexOf("-vf");
323
+ expect(vfIdx).toBeGreaterThan(-1);
324
+ expect(args[vfIdx + 1]).toContain("scale=in_range=pc:out_range=tv");
325
+ expect(args[vfIdx + 1]).not.toContain("colorspace");
326
+ });
327
+
328
+ it("uses same range conversion for SDR CPU encoding", () => {
329
+ const args = buildEncoderArgs(
330
+ { ...baseOptions, codec: "h264", preset: "medium", quality: 23 },
331
+ inputArgs,
332
+ "out.mp4",
333
+ );
334
+ const vfIdx = args.indexOf("-vf");
335
+ expect(args[vfIdx + 1]).toContain("scale=in_range=pc:out_range=tv");
336
+ });
337
+ });
@@ -10,6 +10,7 @@ import { copyFileSync, existsSync, mkdirSync, readdirSync, statSync, writeFileSy
10
10
  import { join, dirname } from "path";
11
11
  import { DEFAULT_CONFIG, type EngineConfig } from "../config.js";
12
12
  import { type GpuEncoder, getCachedGpuEncoder, getGpuEncoderName } from "../utils/gpuEncoder.js";
13
+ import { type HdrTransfer } from "../utils/hdr.js";
13
14
  import { runFfmpeg } from "../utils/runFfmpeg.js";
14
15
  import type { EncoderOptions, EncodeResult, MuxResult } from "./chunkEncoder.types.js";
15
16
 
@@ -21,15 +22,24 @@ export const ENCODER_PRESETS = {
21
22
  high: { preset: "slow", quality: 15, codec: "h264" as const },
22
23
  };
23
24
 
25
+ export interface EncoderPreset {
26
+ preset: string;
27
+ quality: number;
28
+ codec: "h264" | "h265" | "vp9" | "prores";
29
+ pixelFormat: string;
30
+ hdr?: { transfer: HdrTransfer };
31
+ }
32
+
24
33
  /**
25
34
  * Get encoder preset for a given quality and output format.
26
- * WebM uses VP9 with alpha-capable pixel format; MP4 uses h264;
35
+ * WebM uses VP9 with alpha-capable pixel format; MP4 uses h264 (or h265 for HDR);
27
36
  * MOV uses ProRes 4444 with alpha for editor-compatible transparency.
28
37
  */
29
38
  export function getEncoderPreset(
30
39
  quality: "draft" | "standard" | "high",
31
40
  format: "mp4" | "webm" | "mov" = "mp4",
32
- ): { preset: string; quality: number; codec: "h264" | "vp9" | "prores"; pixelFormat: string } {
41
+ hdr?: { transfer: HdrTransfer },
42
+ ): EncoderPreset {
33
43
  const base = ENCODER_PRESETS[quality];
34
44
  if (format === "webm") {
35
45
  return {
@@ -47,6 +57,15 @@ export function getEncoderPreset(
47
57
  pixelFormat: "yuva444p10le",
48
58
  };
49
59
  }
60
+ if (hdr) {
61
+ return {
62
+ preset: base.preset === "ultrafast" ? "fast" : base.preset,
63
+ quality: base.quality,
64
+ codec: "h265",
65
+ pixelFormat: "yuv420p10le",
66
+ hdr,
67
+ };
68
+ }
50
69
  return { ...base, pixelFormat: "yuv420p" };
51
70
  }
52
71
 
@@ -109,9 +128,8 @@ export function buildEncoderArgs(
109
128
  if (bitrate) args.push("-b:v", bitrate);
110
129
  else args.push("-crf", String(quality));
111
130
 
112
- // Encoder-specific params: anti-banding + bt709 color space.
131
+ // Encoder-specific params: anti-banding + color space tagging.
113
132
  // aq-mode=3 redistributes bits to dark flat areas (gradients).
114
- // colorprim/transfer/colormatrix embed bt709 in the H.264/H.265 VUI.
115
133
  const xParamsFlag = codec === "h264" ? "-x264-params" : "-x265-params";
116
134
  const colorParams = "colorprim=bt709:transfer=bt709:colormatrix=bt709";
117
135
  if (preset === "ultrafast") {
@@ -120,6 +138,10 @@ export function buildEncoderArgs(
120
138
  args.push(xParamsFlag, `aq-mode=3:aq-strength=0.8:deblock=1,1:${colorParams}`);
121
139
  }
122
140
  }
141
+ // Apple devices require hvc1 tag for HEVC playback (default hev1 won't open in QuickTime)
142
+ if (codec === "h265") {
143
+ args.push("-tag:v", "hvc1");
144
+ }
123
145
  } else if (codec === "vp9") {
124
146
  args.push("-c:v", "libvpx-vp9", "-b:v", bitrate || "0", "-crf", String(quality));
125
147
  args.push("-deadline", preset === "ultrafast" ? "realtime" : "good");
@@ -134,8 +156,12 @@ export function buildEncoderArgs(
134
156
  return [...args, "-y", outputPath];
135
157
  }
136
158
 
137
- // BT.709 color space metadata — Chrome screenshots are sRGB which maps to bt709.
138
- // Tags the output so players interpret colors correctly across devices.
159
+ // Color space metadata — tags the output so players interpret colors correctly.
160
+ // Chrome screenshots are always sRGB/bt709 pixels regardless of --hdr flag.
161
+ // We tag truthfully as bt709 even for HDR output — the --hdr flag gives
162
+ // H.265 + 10-bit encoding (better quality/compression) without lying about
163
+ // the color space. Tagging as bt2020 when pixels are bt709 causes browsers
164
+ // to apply the wrong color transform, producing visible orange/warm shifts.
139
165
  if (codec === "h264" || codec === "h265") {
140
166
  args.push(
141
167
  "-colorspace:v",
@@ -148,15 +174,15 @@ export function buildEncoderArgs(
148
174
  "tv",
149
175
  );
150
176
 
151
- // Convert full-range RGB input (Chrome screenshots) to limited/TV range for H.264.
152
- // VAAPI already has a -vf chain for hwupload; prepend range conversion to it.
177
+ // Range conversion: Chrome's full-range RGB limited/TV range.
153
178
  if (gpuEncoder === "vaapi") {
154
- // Replace the existing VAAPI -vf with one that includes range conversion
155
179
  const vfIdx = args.indexOf("-vf");
156
180
  if (vfIdx !== -1) {
157
181
  args[vfIdx + 1] = `scale=in_range=pc:out_range=tv,${args[vfIdx + 1]}`;
158
182
  }
159
183
  } else if (!shouldUseGpu) {
184
+ // Range conversion: Chrome screenshots are full-range RGB.
185
+ // The scale filter handles both 8-bit and 10-bit correctly.
160
186
  args.push("-vf", "scale=in_range=pc:out_range=tv");
161
187
  }
162
188
 
@@ -1,3 +1,5 @@
1
+ import type { HdrTransfer } from "../utils/hdr.js";
2
+
1
3
  export interface EncoderOptions {
2
4
  fps: number;
3
5
  width: number;
@@ -8,6 +10,7 @@ export interface EncoderOptions {
8
10
  bitrate?: string;
9
11
  pixelFormat?: string;
10
12
  useGpu?: boolean;
13
+ hdr?: { transfer: HdrTransfer };
11
14
  }
12
15
 
13
16
  export interface EncodeResult {
@@ -0,0 +1,159 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { float16ToPqRgb } from "./hdrCapture.js";
3
+
4
+ // IEEE 754 half-precision (float16) bit patterns used to feed
5
+ // `float16ToPqRgb`. Encoding rule: sign(1) | exp(5) | frac(10).
6
+ const F16_ZERO = 0x0000; // +0.0
7
+ const F16_HALF = 0x3800; // +0.5 (exp=14, frac=0 → 2^-1)
8
+ const F16_ONE = 0x3c00; // +1.0 (exp=15, frac=0 → 2^0 — SDR white)
9
+ // PQ caps at 10000 nits and SDR_NITS = 203, so the linear input must exceed
10
+ // ~58x SDR white before linearToPQ(L) clips at 1.0. 1024 is well above that.
11
+ const F16_OVERBRIGHT = 0x6400; // +1024.0 (exp=25, frac=0 → 2^10)
12
+
13
+ function makeFloat16Frame(
14
+ width: number,
15
+ height: number,
16
+ pixel: { r: number; g: number; b: number; a: number },
17
+ bytesPerRow: number = width * 8,
18
+ ): Buffer {
19
+ // Row-padded layout matches WebGPU readback: bytesPerRow ≥ width * 8 (4
20
+ // channels × 2 bytes), with garbage bytes after each row's pixel data.
21
+ const buf = Buffer.alloc(height * bytesPerRow);
22
+ for (let y = 0; y < height; y++) {
23
+ for (let x = 0; x < width; x++) {
24
+ const idx = y * bytesPerRow + x * 8;
25
+ buf.writeUInt16LE(pixel.r, idx);
26
+ buf.writeUInt16LE(pixel.g, idx + 2);
27
+ buf.writeUInt16LE(pixel.b, idx + 4);
28
+ buf.writeUInt16LE(pixel.a, idx + 6);
29
+ }
30
+ }
31
+ return buf;
32
+ }
33
+
34
+ describe("float16ToPqRgb", () => {
35
+ it("returns a buffer of width * height * 6 bytes (rgb48le)", () => {
36
+ const frame = makeFloat16Frame(4, 3, { r: 0, g: 0, b: 0, a: 0 });
37
+ const out = float16ToPqRgb(frame, 32, 4, 3);
38
+ expect(out.length).toBe(4 * 3 * 6);
39
+ });
40
+
41
+ it("encodes float16 black to PQ zero (linearToPQ(0) ≈ 0 after uint16 quantization)", () => {
42
+ const frame = makeFloat16Frame(2, 2, {
43
+ r: F16_ZERO,
44
+ g: F16_ZERO,
45
+ b: F16_ZERO,
46
+ a: F16_ZERO,
47
+ });
48
+ const out = float16ToPqRgb(frame, 16, 2, 2);
49
+ for (let i = 0; i < out.length; i += 2) {
50
+ expect(out.readUInt16LE(i)).toBe(0);
51
+ }
52
+ });
53
+
54
+ it("clamps overbright float16 input to PQ 65535 (linearToPQ(>>1.0) → 1.0)", () => {
55
+ // ~1024 linear is well past the 58x-SDR PQ saturation point; output caps
56
+ // at 1.0 → 65535 in uint16.
57
+ const frame = makeFloat16Frame(2, 2, {
58
+ r: F16_OVERBRIGHT,
59
+ g: F16_OVERBRIGHT,
60
+ b: F16_OVERBRIGHT,
61
+ a: F16_ZERO,
62
+ });
63
+ const out = float16ToPqRgb(frame, 16, 2, 2);
64
+ for (let pixel = 0; pixel < 4; pixel++) {
65
+ const dst = pixel * 6;
66
+ expect(out.readUInt16LE(dst)).toBe(65535);
67
+ expect(out.readUInt16LE(dst + 2)).toBe(65535);
68
+ expect(out.readUInt16LE(dst + 4)).toBe(65535);
69
+ }
70
+ });
71
+
72
+ it("preserves channel ordering R, G, B (alpha is discarded)", () => {
73
+ // Distinct float16 values per channel verify the function doesn't
74
+ // mix them up. Alpha is set high but should not appear in the output.
75
+ const frame = makeFloat16Frame(1, 1, {
76
+ r: F16_ONE,
77
+ g: F16_HALF,
78
+ b: F16_ZERO,
79
+ a: F16_ONE,
80
+ });
81
+ const out = float16ToPqRgb(frame, 8, 1, 1);
82
+ const r = out.readUInt16LE(0);
83
+ const g = out.readUInt16LE(2);
84
+ const b = out.readUInt16LE(4);
85
+ expect(r).toBeGreaterThan(g);
86
+ expect(g).toBeGreaterThan(b);
87
+ expect(b).toBe(0);
88
+ });
89
+
90
+ it("is monotonic: higher float16 input produces higher PQ output", () => {
91
+ const dark = makeFloat16Frame(1, 1, { r: F16_ZERO, g: 0, b: 0, a: 0 });
92
+ const mid = makeFloat16Frame(1, 1, { r: F16_HALF, g: 0, b: 0, a: 0 });
93
+ const bright = makeFloat16Frame(1, 1, { r: F16_ONE, g: 0, b: 0, a: 0 });
94
+ const r0 = float16ToPqRgb(dark, 8, 1, 1).readUInt16LE(0);
95
+ const r1 = float16ToPqRgb(mid, 8, 1, 1).readUInt16LE(0);
96
+ const r2 = float16ToPqRgb(bright, 8, 1, 1).readUInt16LE(0);
97
+ expect(r0).toBe(0);
98
+ expect(r1).toBeGreaterThan(r0);
99
+ expect(r2).toBeGreaterThan(r1);
100
+ });
101
+
102
+ it("is deterministic across calls with the same input", () => {
103
+ const frame = makeFloat16Frame(3, 2, {
104
+ r: F16_HALF,
105
+ g: F16_ONE,
106
+ b: F16_ZERO,
107
+ a: F16_ONE,
108
+ });
109
+ const a = float16ToPqRgb(frame, 24, 3, 2);
110
+ const b = float16ToPqRgb(frame, 24, 3, 2);
111
+ expect(a.equals(b)).toBe(true);
112
+ });
113
+
114
+ it("handles padded bytesPerRow (WebGPU 256-byte alignment)", () => {
115
+ // WebGPU readback pads rows to 256-byte multiples. For a 4-pixel-wide
116
+ // frame the actual pixel data is 32 bytes but bytesPerRow is 256.
117
+ const width = 4;
118
+ const height = 2;
119
+ const bytesPerRow = 256;
120
+ const frame = makeFloat16Frame(
121
+ width,
122
+ height,
123
+ { r: F16_HALF, g: F16_HALF, b: F16_HALF, a: 0 },
124
+ bytesPerRow,
125
+ );
126
+ const out = float16ToPqRgb(frame, bytesPerRow, width, height);
127
+ expect(out.length).toBe(width * height * 6);
128
+ // Every R component should be the same non-zero value (uniform input).
129
+ const expected = out.readUInt16LE(0);
130
+ expect(expected).toBeGreaterThan(0);
131
+ for (let pixel = 0; pixel < width * height; pixel++) {
132
+ expect(out.readUInt16LE(pixel * 6)).toBe(expected);
133
+ }
134
+ });
135
+
136
+ it("ignores garbage bytes in the row padding region", () => {
137
+ // Stuff junk into the trailing padding to make sure the PQ encoder
138
+ // walks via bytesPerRow stride and not via raw buffer position.
139
+ const width = 2;
140
+ const height = 2;
141
+ const bytesPerRow = 64;
142
+ const frame = makeFloat16Frame(
143
+ width,
144
+ height,
145
+ { r: F16_ZERO, g: F16_ZERO, b: F16_ZERO, a: F16_ZERO },
146
+ bytesPerRow,
147
+ );
148
+ for (let y = 0; y < height; y++) {
149
+ const padStart = y * bytesPerRow + width * 8;
150
+ for (let i = padStart; i < (y + 1) * bytesPerRow; i++) {
151
+ frame[i] = 0xff;
152
+ }
153
+ }
154
+ const out = float16ToPqRgb(frame, bytesPerRow, width, height);
155
+ for (let i = 0; i < out.length; i += 2) {
156
+ expect(out.readUInt16LE(i)).toBe(0);
157
+ }
158
+ });
159
+ });