From ed316fae986394e355959b3ac8e4318f1d07796e Mon Sep 17 00:00:00 2001 From: EtienneLescot Date: Mon, 24 Aug 2026 12:35:15 +0200 Subject: [PATCH 01/15] feat(webcam): add AI background cutout, blur, and custom wallpapers (#291) --- biome.json | 2 +- crates/compositor/src/compositor_windows.rs | 55 +- crates/compositor/src/scene.rs | 47 + crates/compositor/src/shaders.hlsl | 90 +- electron/main.ts | 5 + package-lock.json | 7 + package.json | 1 + .../mediapipe/selfie_segmentation/README.md | 10 + .../mediapipe/selfie_segmentation/index.d.ts | 111 + .../selfie_segmentation/package.json | 29 + .../selfie_segmentation.binarypb | Bin 0 -> 362 bytes .../selfie_segmentation.js | 2803 ++++ .../selfie_segmentation.tflite | Bin 0 -> 249024 bytes .../selfie_segmentation_landscape.tflite | Bin 0 -> 249792 bytes ...e_segmentation_solution_simd_wasm_bin.data | 0 ...fie_segmentation_solution_simd_wasm_bin.js | 11354 ++++++++++++++++ ...e_segmentation_solution_simd_wasm_bin.wasm | Bin 0 -> 5694839 bytes .../selfie_segmentation_solution_wasm_bin.js | 11354 ++++++++++++++++ ...selfie_segmentation_solution_wasm_bin.wasm | Bin 0 -> 5587523 bytes src/cli/CliExportRunner.tsx | 41 +- src/components/ai-edition/ExportDialog.tsx | 48 +- .../ai-edition/NewEditorShell.module.css | 10 + src/components/ai-edition/RightPanes.tsx | 349 +- .../ai-edition/WebcamOverlay.test.tsx | 45 + src/components/ai-edition/WebcamOverlay.tsx | 219 +- src/components/video-editor/types.ts | 7 + src/i18n/locales/ar/settings.json | 8 + src/i18n/locales/en/settings.json | 8 + src/i18n/locales/es/settings.json | 8 + src/i18n/locales/fr/settings.json | 8 + src/i18n/locales/it/settings.json | 8 + src/i18n/locales/ja-JP/settings.json | 8 + src/i18n/locales/ko-KR/settings.json | 8 + src/i18n/locales/pt-BR/settings.json | 8 + src/i18n/locales/ru/settings.json | 8 + src/i18n/locales/tr/settings.json | 8 + src/i18n/locales/vi/settings.json | 8 + src/i18n/locales/zh-CN/settings.json | 8 + src/i18n/locales/zh-TW/settings.json | 8 + .../ai-edition/store/editorSettings.test.ts | 12 + src/lib/ai-edition/store/editorSettings.ts | 22 + src/lib/ai-edition/webcamSegmentation.ts | 248 + src/native/sceneDescription.test.ts | 48 + src/native/sceneDescription.ts | 19 + 44 files changed, 26960 insertions(+), 80 deletions(-) create mode 100644 public/mediapipe/selfie_segmentation/README.md create mode 100644 public/mediapipe/selfie_segmentation/index.d.ts create mode 100644 public/mediapipe/selfie_segmentation/package.json create mode 100644 public/mediapipe/selfie_segmentation/selfie_segmentation.binarypb create mode 100644 public/mediapipe/selfie_segmentation/selfie_segmentation.js create mode 100644 public/mediapipe/selfie_segmentation/selfie_segmentation.tflite create mode 100644 public/mediapipe/selfie_segmentation/selfie_segmentation_landscape.tflite create mode 100644 public/mediapipe/selfie_segmentation/selfie_segmentation_solution_simd_wasm_bin.data create mode 100644 public/mediapipe/selfie_segmentation/selfie_segmentation_solution_simd_wasm_bin.js create mode 100644 public/mediapipe/selfie_segmentation/selfie_segmentation_solution_simd_wasm_bin.wasm create mode 100644 public/mediapipe/selfie_segmentation/selfie_segmentation_solution_wasm_bin.js create mode 100644 public/mediapipe/selfie_segmentation/selfie_segmentation_solution_wasm_bin.wasm create mode 100644 src/lib/ai-edition/webcamSegmentation.ts diff --git a/biome.json b/biome.json index 4fa1d2fdc..8690776ed 100644 --- a/biome.json +++ b/biome.json @@ -3,7 +3,7 @@ "vcs": { "enabled": true, "clientKind": "git", "useIgnoreFile": true }, "files": { "ignoreUnknown": false, - "includes": ["**", "!**/*.css", "!**/design/**", "!**/.worktrees/**"] + "includes": ["**", "!**/*.css", "!**/design/**", "!**/.worktrees/**", "!**/public/**"] }, "formatter": { "enabled": true, diff --git a/crates/compositor/src/compositor_windows.rs b/crates/compositor/src/compositor_windows.rs index 51c3a3a28..1ae36bc2b 100644 --- a/crates/compositor/src/compositor_windows.rs +++ b/crates/compositor/src/compositor_windows.rs @@ -1538,7 +1538,11 @@ impl Compositor { scene_preset.as_deref(), Some("dual-frame") | Some("vertical-stack"), ); - if cfg.shadow && !webcam_is_block && shape_fade > 0.0 { + let is_transparent_cutout = matches!( + scene_ref.as_ref().and_then(|s| s.webcam_effect.as_ref()), + Some(e) if e.mode == "transparent" || (e.mode == "presegmented" && e.blur_intensity < -0.5) + ); + if cfg.shadow && !webcam_is_block && !is_transparent_cutout && shape_fade > 0.0 { let strength = WEBCAM_SHADOW_OPACITY * shape_fade; self.draw_shadow( w_dst, @@ -1549,22 +1553,39 @@ impl Compositor { strength, ); } - self.draw_video( - &LayerCB { - dst: w_dst, - src: [u0, sv0, u1, sv1], - quad_px: w_px, - radius_px: w_radius, - mode: 0.0, - color: [0.0, 0.0, 0.0, 1.0], - src_prev: [u0, sv0, u1, sv1], // src fixe (pas de zoom webcam) - dst_prev: w_dst_prev, - mb: [mb_taps, 1.0, 1.0, 0.0], - ..Default::default() - }, - &wy, - &wuv, - ); + let (effect_mode_val, blur_val, custom_bg_color) = match scene_ref.as_ref().and_then(|s| s.webcam_effect.as_ref()) { + Some(e) if e.mode == "transparent" => (1.0f32, 0.0f32, [0.0, 0.0, 0.0, 1.0]), + Some(e) if e.mode == "blur" => (2.0f32, e.blur_intensity, [0.0, 0.0, 0.0, 1.0]), + Some(e) if e.mode == "custom" => { + let col = match &e.background { + Some(SceneBackground::Color { color }) => parse_hex(color).unwrap_or([0.0, 0.0, 0.0, 1.0]), + _ => [0.0, 0.0, 0.0, 1.0], + }; + (3.0f32, 0.0f32, col) + } + Some(e) if e.mode == "presegmented" => (0.0f32, 0.0f32, [0.0, 0.0, 0.0, 1.0]), + _ => (0.0f32, 0.0f32, [0.0, 0.0, 0.0, 1.0]), + }; + + if effect_mode_val <= 0.5 { + self.draw_video( + &LayerCB { + dst: w_dst, + src: [u0, sv0, u1, sv1], + quad_px: w_px, + radius_px: w_radius, + mode: 0.0, + color: custom_bg_color, + fx: [0.0, 0.0, effect_mode_val, blur_val], + src_prev: [u0, sv0, u1, sv1], // src fixe (pas de zoom webcam) + dst_prev: w_dst_prev, + mb: [mb_taps, 1.0, 1.0, 0.0], + ..Default::default() + }, + &wy, + &wuv, + ); + } } // --- annotations : calque le plus haut, comme dans le DOM de la preview (le calque y est diff --git a/crates/compositor/src/scene.rs b/crates/compositor/src/scene.rs index 2d20e233b..bde9dd519 100644 --- a/crates/compositor/src/scene.rs +++ b/crates/compositor/src/scene.rs @@ -429,6 +429,20 @@ pub struct SceneOutput { pub fps: Option, } +/// Effet d'arrière-plan de la webcam (détourage IA, flou, fond personnalisé). +#[derive(Debug, Clone, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct SceneWebcamEffect { + /// "none" | "transparent" | "blur" | "custom" + pub mode: String, + #[serde(default)] + pub blur_intensity: f32, + #[serde(default)] + pub background: Option, + #[serde(default)] + pub mask_path: Option, +} + /// Tout ce dont le natif a besoin pour composer la scène, sérialisé depuis un document. #[derive(Debug, Clone, Deserialize)] #[serde(rename_all = "camelCase")] @@ -454,6 +468,9 @@ pub struct Scene { /// Crop écran par clip, dans le même ordre que `clips` (`cropByClip` côté TS). #[serde(default)] pub crop_by_clip: Vec>, + /// Effet d'arrière-plan / détourage IA de la webcam. + #[serde(default)] + pub webcam_effect: Option, /// État de rendu interne, positionné par `for_clip_window` (jamais envoyé par l'app). #[serde(skip)] pub(crate) active_clip_index: usize, @@ -601,6 +618,36 @@ mod tests { let s = Scene::from_json(json).expect("parse sans webcam_rect"); assert!(s.layout.webcam_rect.is_none()); assert_eq!(s.layout.preset, "picture-in-picture"); + assert!(s.webcam_effect.is_none()); + } + + #[test] + fn parses_webcam_effect_payload() { + let json = r##"{ + "clips": [], + "layout": {"preset":"picture-in-picture","webcamSize":0.25,"webcamShape":"circle","webcamMirror":false,"webcamPosition":null,"webcamReactiveZoom":false}, + "effects": {"padding":0,"blur":false,"shadow":0,"roundnessFrac":0,"motionBlur":0}, + "background": {"kind":"color","color":"#000000"}, + "zoomRegions": [], + "cursor": {"show":false,"size":1,"smoothing":0,"motionBlur":0,"clickBounce":0,"clipToBounds":false,"theme":"default"}, + "cropByClip": [], + "output": {"width":1920,"height":1080,"fps":null}, + "webcamEffect": { + "mode": "custom", + "blurIntensity": 0.75, + "background": {"kind":"color","color":"#ff0080"}, + "maskPath": "/path/to/mask.mp4" + } + }"##; + let s = Scene::from_json(json).expect("parse avec webcamEffect"); + let effect = s.webcam_effect.expect("webcamEffect présent"); + assert_eq!(effect.mode, "custom"); + assert_eq!(effect.blur_intensity, 0.75); + assert_eq!(effect.mask_path.as_deref(), Some("/path/to/mask.mp4")); + match effect.background { + Some(SceneBackground::Color { color }) => assert_eq!(color, "#ff0080"), + _ => panic!("expected color background"), + } } } diff --git a/crates/compositor/src/shaders.hlsl b/crates/compositor/src/shaders.hlsl index b9d438d7d..212c9b66f 100644 --- a/crates/compositor/src/shaders.hlsl +++ b/crates/compositor/src/shaders.hlsl @@ -154,6 +154,73 @@ float3 quad_inverse_bilinear(float2 P, float2 c00, float2 c10, float2 c11, float return (r0.z > 0.5) ? r0 : r1; } +// Human skin, body prior and subject saliency detection in YCbCr: +// Y (luminance), Cb (blue difference), Cr (red difference). +float compute_person_mask(float2 uv, float2 qpx, float threshold, float feather) +{ + float y = texY.Sample(samp, uv); + float2 cbcr = texUV.Sample(samp, uv); + + // Anatomical portrait prior: Head and shoulders form a vertical rounded shape + float2 torso_p = (uv - float2(0.5, 0.72)) * float2(1.8, 1.2); + float torso_d = length(torso_p); + float2 head_p = (uv - float2(0.5, 0.45)) * float2(2.5, 2.0); + float head_d = length(head_p); + float body_prior = saturate(1.0 - min(torso_d, head_d)); + + // Skin tone probability in normalized YCbCr space: + // Cb in [0.36, 0.50], Cr in [0.54, 0.70] + float cb_d = abs(cbcr.x - 0.43); + float cr_d = abs(cbcr.y - 0.61); + float is_skin = saturate(1.0 - (cb_d * 7.5 + cr_d * 6.5)); + + // High contrast/edge energy + float2 delta = float2(1.5 / max(qpx.x, 1.0), 1.5 / max(qpx.y, 1.0)); + float y_l = texY.Sample(samp, uv - float2(delta.x, 0.0)); + float y_r = texY.Sample(samp, uv + float2(delta.x, 0.0)); + float y_u = texY.Sample(samp, uv - float2(0.0, delta.y)); + float y_d = texY.Sample(samp, uv + float2(0.0, delta.y)); + float edge = abs(y_l - y_r) + abs(y_u - y_d); + + // Top room background suppression (ceiling / top room corners are never the speaker) + float center_dist_x = abs(uv.x - 0.5) * 2.0; + float center_dist_y = uv.y; + float corner_dist = saturate((1.0 - center_dist_y) * (center_dist_x * 0.9 + 0.1)); + float subject_envelope = saturate(1.0 - corner_dist * 1.6) * saturate(center_dist_y * 2.2); + + // Combined score + float score = body_prior * 0.55 + is_skin * 0.40 + subject_envelope * 0.35 + edge * 0.20; + + // User threshold and feathering + float center_t = lerp(0.20, 0.75, saturate(threshold)); + float half_f = max(feather * 0.25, 0.02); + + float min_t = max(center_t - half_f, 0.0); + float max_t = min(center_t + half_f, 1.0); + + float mask = smoothstep(min_t, max_t, score); + return saturate(mask); +} + +float3 sample_blur_yuv(float2 uv, float intensity, float2 qpx) +{ + float radius = max(intensity * 12.0, 4.0); + float2 step = radius / max(qpx, 1.0); + float3 sum = 0.0; + float total = 0.0; + [unroll] for (int dy = -2; dy <= 2; dy++) + { + [unroll] for (int dx = -2; dx <= 2; dx++) + { + float2 offset = float2(dx, dy) * step; + float weight = 1.0 / (1.0 + length(float2(dx, dy))); + sum += sample_yuv(saturate(uv + offset)) * weight; + total += weight; + } + } + return sum / max(total, 1e-4); +} + float4 ps_main(VSOut i) : SV_Target { // mode 13 : SPRITE DE CURSEUR posé sur l'écran incliné. Même warp que le mode 8, mais @@ -410,6 +477,7 @@ float4 ps_main(VSOut i) : SV_Target } float3 rgb; + float alpha = color.a; if (mode < 0.5) { // flou de mouvement par vélocité (§8) : pour CE pixel sortie, uv à la frame @@ -435,13 +503,31 @@ float4 ps_main(VSOut i) : SV_Target } rgb = acc / (float) taps; } + + // Effet d'arrière-plan webcam : fx.z (1=cutout, 2=blur, 3=custom) + float effect_mode = fx.z; + if (effect_mode > 0.5) + { + float person = compute_person_mask(uv_now, quad_px, fx.y, fx.x); + if (effect_mode > 2.5) + { + rgb = lerp(color.rgb, rgb, person); + } + else if (effect_mode > 1.5) + { + float3 bg_blur = sample_blur_yuv(uv_now, fx.w, quad_px); + rgb = lerp(bg_blur, rgb, person); + } + else + { + alpha *= person; + } + } } else { rgb = color.rgb; } - - float alpha = color.a; if (radius_px > 0.0) { // `quad_px` est en px de SORTIE (le render target porte la géométrie de sortie) et diff --git a/electron/main.ts b/electron/main.ts index a85629bf3..a27e038ef 100644 --- a/electron/main.ts +++ b/electron/main.ts @@ -140,6 +140,11 @@ function createWindow() { return; } + if (process.env.OPENSCREEN_START_EDITOR === "1" || process.env.OPENSCREEN_EDITOR === "1") { + mainWindow = createEditorWindow(); + return; + } + mainWindow = createHudOverlayWindow(); } diff --git a/package-lock.json b/package-lock.json index e0ea6e09c..e1322c336 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@langchain/core": "^1.1.44", "@langchain/mistralai": "^1.0.8", "@langchain/openai": "^1.4.2", + "@mediapipe/selfie_segmentation": "^0.1.1675465747", "@radix-ui/react-accordion": "^1.2.12", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dropdown-menu": "^2.1.16", @@ -2141,6 +2142,12 @@ "node": ">= 10.0.0" } }, + "node_modules/@mediapipe/selfie_segmentation": { + "version": "0.1.1675465747", + "resolved": "https://registry.npmjs.org/@mediapipe/selfie_segmentation/-/selfie_segmentation-0.1.1675465747.tgz", + "integrity": "sha512-IxYxNhwE5VwOm52L1yoFWYLP7q9Pd+NJjzOC5tlepfvEGaY3o9hslhUrx9BgseqdfZtKSDtd/4NfCSMjNzQalA==", + "license": "Apache-2.0" + }, "node_modules/@mistralai/mistralai": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mistralai/mistralai/-/mistralai-2.2.1.tgz", diff --git a/package.json b/package.json index 412f6dfb2..ed78f5641 100644 --- a/package.json +++ b/package.json @@ -100,6 +100,7 @@ "@langchain/core": "^1.1.44", "@langchain/mistralai": "^1.0.8", "@langchain/openai": "^1.4.2", + "@mediapipe/selfie_segmentation": "^0.1.1675465747", "@radix-ui/react-accordion": "^1.2.12", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dropdown-menu": "^2.1.16", diff --git a/public/mediapipe/selfie_segmentation/README.md b/public/mediapipe/selfie_segmentation/README.md new file mode 100644 index 000000000..a9a622d93 --- /dev/null +++ b/public/mediapipe/selfie_segmentation/README.md @@ -0,0 +1,10 @@ +# MediaPipe JavaScript Solutions + +MediaPipe offers out of the box solutions to use our ML technology with live and streaming media. + +Visit us as [mediapipe.dev]() + +See live demos of our JavaScript solutions at [code.mediapipe.dev/codepen]() + +For more information on each of the solutions and how to use them, visit https://google.github.io/mediapipe/getting_started/javascript. + diff --git a/public/mediapipe/selfie_segmentation/index.d.ts b/public/mediapipe/selfie_segmentation/index.d.ts new file mode 100644 index 000000000..3f3b87a87 --- /dev/null +++ b/public/mediapipe/selfie_segmentation/index.d.ts @@ -0,0 +1,111 @@ +/** + * @fileoverview Declarations for the face tracking API. + */ + +/** + * Version number of this package. + */ +export const VERSION: string; + +/** + * We support several ways to get image inputs. + */ +export type InputImage = HTMLVideoElement | HTMLImageElement | HTMLCanvasElement; + +/** + * Legal inputs. + */ +export interface InputMap { + image: InputImage; +} + +/** + * GpuBuffers should all be compatible with Canvas' `drawImage` + */ +type GpuBuffer = HTMLCanvasElement | HTMLImageElement | ImageBitmap; + +/** + * Possible results from SelfieSegmentation. + */ +export interface Results { + image: GpuBuffer; + segmentationMask: GpuBuffer; +} + +/** + * Configurable options for SelfieSegmentation. + */ +export interface Options { + selfieMode?: boolean; + modelSelection?: number; +} + +/** + * Listener for any results from SelfieSegmentation. + */ +export type ResultsListener = (results: Results) => Promise | void; + +/** + * Contains all of the setup options to drive the face solution. + */ +export interface SelfieSegmentationConfig { + locateFile?: (path: string, prefix?: string) => string; +} + +/** + * Declares the interface of SelfieSegmentation. + */ +declare interface SelfieSegmentationInterface { + close(): Promise; + onResults(listener: ResultsListener): void; + initialize(): Promise; + reset(): void; + send(inputs: InputMap): Promise; + setOptions(options: Options): void; +} + +/** + * Encapsulates the entire SelfieSegmentation solution. All that is needed from the + * developer is the source of the image data. The user will call `send` + * repeatedly and if a face is detected, then the user can receive callbacks + * with this metadata. + */ +export declare class SelfieSegmentation implements SelfieSegmentationInterface { + constructor(config?: SelfieSegmentationConfig); + + /** + * Shuts down the object. Call before creating a new instance. + */ + close(): Promise; + + /** + * Registers a single callback that will carry any results that occur + * after calling Send(). + */ + onResults(listener: ResultsListener): void; + + /** + * Initializes the solution. This includes loading ML models and mediapipe + * configurations, as well as setting up potential listeners for metadata. If + * `initialize` is not called manually, then it will be called the first time + * the developer calls `send`. + */ + initialize(): Promise; + + /** + * Tells the graph to restart before the next frame is sent. + */ + reset(): void; + + /** + * Processes a single frame of data, which depends on the options sent to the + * constructor. + */ + send(inputs: InputMap): Promise; + + /** + * Adjusts options in the solution. This may trigger a graph reload the next + * time the graph tries to run. + */ + setOptions(options: Options): void; +} diff --git a/public/mediapipe/selfie_segmentation/package.json b/public/mediapipe/selfie_segmentation/package.json new file mode 100644 index 000000000..f50683515 --- /dev/null +++ b/public/mediapipe/selfie_segmentation/package.json @@ -0,0 +1,29 @@ +{ + "name": "@mediapipe/selfie_segmentation", + "version": "0.1.1675465747", + "description": "Mediapipe Selfie Segmentation Solution", + "main": "selfie_segmentation.js", + "module": "selfie_segmentation.js", + "jsdelivr": "selfie_segmentation.js", + "unpkg": "selfie_segmentation.js", + "types": "index.d.ts", + "author": "mhays@google.com", + "license": "Apache-2.0", + "homepage": "https://google.github.io/mediapipe/solutions/selfie_segmentation", + "keywords": [ + "AR", + "ML", + "Augmented" + ], + "devDependencies": {}, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "dependencies": {}, + "browser": { + "node-fetch": false, + "util": false, + "crypto": false + }, + "sideEffects": [] +} diff --git a/public/mediapipe/selfie_segmentation/selfie_segmentation.binarypb b/public/mediapipe/selfie_segmentation/selfie_segmentation.binarypb new file mode 100644 index 0000000000000000000000000000000000000000..b255289182ea337e19d7cf3329fbfbda217efca0 GIT binary patch literal 362 zcmaKoF-yZh7=}yf5N?uyEmlFOi*$6nEu=>XZJOc*aXXI7mw5E<67DYIZ*ugPIEeqj z)zQgD6eWY}$NTU;?}rRp#*J~F8&72kJ1+L%W3EJ}xNmIMl%Oam5MDMWJo_(uHQhz= zniN>~5OY5iMvu?$ufYV3gAvNZFi})+1@^aPKD|j-B*)UUooAKh8XT+JZZZ45YhDBM zmK#?!Rzrz{r?;1n$@p@F?!)7QUnPM;t-*NSizaP1pQTxp5G;r6;)0SSBikY>(tOLZ zh_12w!!pg?etDkdE3#pfY)IVahNG^JhO)P%Jq=HywpCJmNfdV$cu5{WbcauV0y5Zw ASO5S3 literal 0 HcmV?d00001 diff --git a/public/mediapipe/selfie_segmentation/selfie_segmentation.js b/public/mediapipe/selfie_segmentation/selfie_segmentation.js new file mode 100644 index 000000000..7599c4882 --- /dev/null +++ b/public/mediapipe/selfie_segmentation/selfie_segmentation.js @@ -0,0 +1,2803 @@ +(function () { + /* + + Copyright The Closure Library Authors. + SPDX-License-Identifier: Apache-2.0 +*/ + "use strict"; + var x; + function aa(a) { + var b = 0; + return function () { + return b < a.length ? { done: !1, value: a[b++] } : { done: !0 }; + }; + } + var ba = + "function" == typeof Object.defineProperties + ? Object.defineProperty + : function (a, b, c) { + if (a == Array.prototype || a == Object.prototype) return a; + a[b] = c.value; + return a; + }; + function ca(a) { + a = [ + "object" == typeof globalThis && globalThis, + a, + "object" == typeof window && window, + "object" == typeof self && self, + "object" == typeof global && global, + ]; + for (var b = 0; b < a.length; ++b) { + var c = a[b]; + if (c && c.Math == Math) return c; + } + throw Error("Cannot find global object"); + } + var y = ca(this); + function z(a, b) { + if (b) + a: { + var c = y; + a = a.split("."); + for (var d = 0; d < a.length - 1; d++) { + var e = a[d]; + if (!(e in c)) break a; + c = c[e]; + } + a = a[a.length - 1]; + d = c[a]; + b = b(d); + b != d && null != b && ba(c, a, { configurable: !0, writable: !0, value: b }); + } + } + z("Symbol", function (a) { + function b(g) { + if (this instanceof b) throw new TypeError("Symbol is not a constructor"); + return new c(d + (g || "") + "_" + e++, g); + } + function c(g, f) { + this.h = g; + ba(this, "description", { configurable: !0, writable: !0, value: f }); + } + if (a) return a; + c.prototype.toString = function () { + return this.h; + }; + var d = "jscomp_symbol_" + ((1e9 * Math.random()) >>> 0) + "_", + e = 0; + return b; + }); + z("Symbol.iterator", function (a) { + if (a) return a; + a = Symbol("Symbol.iterator"); + for ( + var b = + "Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split( + " ", + ), + c = 0; + c < b.length; + c++ + ) { + var d = y[b[c]]; + "function" === typeof d && + "function" != typeof d.prototype[a] && + ba(d.prototype, a, { + configurable: !0, + writable: !0, + value: function () { + return da(aa(this)); + }, + }); + } + return a; + }); + function da(a) { + a = { next: a }; + a[Symbol.iterator] = function () { + return this; + }; + return a; + } + function A(a) { + var b = "undefined" != typeof Symbol && Symbol.iterator && a[Symbol.iterator]; + return b ? b.call(a) : { next: aa(a) }; + } + function ea(a) { + if (!(a instanceof Array)) { + a = A(a); + for (var b, c = []; !(b = a.next()).done; ) c.push(b.value); + a = c; + } + return a; + } + var fa = + "function" == typeof Object.assign + ? Object.assign + : function (a, b) { + for (var c = 1; c < arguments.length; c++) { + var d = arguments[c]; + if (d) for (var e in d) Object.hasOwn(d, e) && (a[e] = d[e]); + } + return a; + }; + z("Object.assign", function (a) { + return a || fa; + }); + var ha = + "function" == typeof Object.create + ? Object.create + : function (a) { + function b() {} + b.prototype = a; + return new b(); + }, + ia; + if ("function" == typeof Object.setPrototypeOf) ia = Object.setPrototypeOf; + else { + var ja; + a: { + var ka = { a: !0 }, + la = {}; + try { + la.__proto__ = ka; + ja = la.a; + break a; + } catch (a) {} + ja = !1; + } + ia = ja + ? function (a, b) { + a.__proto__ = b; + if (a.__proto__ !== b) throw new TypeError(a + " is not extensible"); + return a; + } + : null; + } + var ma = ia; + function na(a, b) { + a.prototype = ha(b.prototype); + a.prototype.constructor = a; + if (ma) ma(a, b); + else + for (var c in b) + if ("prototype" != c) + if (Object.defineProperties) { + var d = Object.getOwnPropertyDescriptor(b, c); + d && Object.defineProperty(a, c, d); + } else a[c] = b[c]; + a.za = b.prototype; + } + function oa() { + this.m = !1; + this.j = null; + this.i = void 0; + this.h = 1; + this.v = this.s = 0; + this.l = null; + } + function pa(a) { + if (a.m) throw new TypeError("Generator is already running"); + a.m = !0; + } + oa.prototype.u = function (a) { + this.i = a; + }; + function qa(a, b) { + a.l = { ma: b, na: !0 }; + a.h = a.s || a.v; + } + oa.prototype.return = function (a) { + this.l = { return: a }; + this.h = this.v; + }; + function D(a, b, c) { + a.h = c; + return { value: b }; + } + function ra(a) { + this.h = new oa(); + this.i = a; + } + function sa(a, b) { + pa(a.h); + var c = a.h.j; + if (c) + return ta( + a, + "return" in c + ? c["return"] + : function (d) { + return { value: d, done: !0 }; + }, + b, + a.h.return, + ); + a.h.return(b); + return ua(a); + } + function ta(a, b, c, d) { + try { + var e = b.call(a.h.j, c); + if (!(e instanceof Object)) throw new TypeError("Iterator result " + e + " is not an object"); + if (!e.done) return (a.h.m = !1), e; + var g = e.value; + } catch (f) { + return (a.h.j = null), qa(a.h, f), ua(a); + } + a.h.j = null; + d.call(a.h, g); + return ua(a); + } + function ua(a) { + for (; a.h.h; ) + try { + var b = a.i(a.h); + if (b) return (a.h.m = !1), { value: b.value, done: !1 }; + } catch (c) { + (a.h.i = void 0), qa(a.h, c); + } + a.h.m = !1; + if (a.h.l) { + b = a.h.l; + a.h.l = null; + if (b.na) throw b.ma; + return { value: b.return, done: !0 }; + } + return { value: void 0, done: !0 }; + } + function va(a) { + this.next = function (b) { + pa(a.h); + a.h.j ? (b = ta(a, a.h.j.next, b, a.h.u)) : (a.h.u(b), (b = ua(a))); + return b; + }; + this.throw = function (b) { + pa(a.h); + a.h.j ? (b = ta(a, a.h.j["throw"], b, a.h.u)) : (qa(a.h, b), (b = ua(a))); + return b; + }; + this.return = function (b) { + return sa(a, b); + }; + this[Symbol.iterator] = function () { + return this; + }; + } + function wa(a) { + function b(d) { + return a.next(d); + } + function c(d) { + return a.throw(d); + } + return new Promise(function (d, e) { + function g(f) { + f.done ? d(f.value) : Promise.resolve(f.value).then(b, c).then(g, e); + } + g(a.next()); + }); + } + function E(a) { + return wa(new va(new ra(a))); + } + z("Promise", function (a) { + function b(f) { + this.i = 0; + this.j = void 0; + this.h = []; + this.u = !1; + var h = this.l(); + try { + f(h.resolve, h.reject); + } catch (k) { + h.reject(k); + } + } + function c() { + this.h = null; + } + function d(f) { + return f instanceof b + ? f + : new b(function (h) { + h(f); + }); + } + if (a) return a; + c.prototype.i = function (f) { + if (null == this.h) { + this.h = []; + var h = this; + this.j(function () { + h.m(); + }); + } + this.h.push(f); + }; + var e = y.setTimeout; + c.prototype.j = function (f) { + e(f, 0); + }; + c.prototype.m = function () { + for (; this.h && this.h.length; ) { + var f = this.h; + this.h = []; + for (var h = 0; h < f.length; ++h) { + var k = f[h]; + f[h] = null; + try { + k(); + } catch (l) { + this.l(l); + } + } + } + this.h = null; + }; + c.prototype.l = function (f) { + this.j(function () { + throw f; + }); + }; + b.prototype.l = function () { + function f(l) { + return function (m) { + k || ((k = !0), l.call(h, m)); + }; + } + var h = this, + k = !1; + return { resolve: f(this.I), reject: f(this.m) }; + }; + b.prototype.I = function (f) { + if (f === this) this.m(new TypeError("A Promise cannot resolve to itself")); + else if (f instanceof b) this.L(f); + else { + a: switch (typeof f) { + case "object": { + var h = null != f; + break a; + } + case "function": + h = !0; + break a; + default: + h = !1; + } + h ? this.F(f) : this.s(f); + } + }; + b.prototype.F = function (f) { + var h = void 0; + try { + h = f.then; + } catch (k) { + this.m(k); + return; + } + "function" == typeof h ? this.M(h, f) : this.s(f); + }; + b.prototype.m = function (f) { + this.v(2, f); + }; + b.prototype.s = function (f) { + this.v(1, f); + }; + b.prototype.v = function (f, h) { + if (0 != this.i) + throw Error( + "Cannot settle(" + f + ", " + h + "): Promise already settled in state" + this.i, + ); + this.i = f; + this.j = h; + 2 === this.i && this.K(); + this.H(); + }; + b.prototype.K = function () { + var f = this; + e(function () { + if (f.D()) { + var h = y.console; + "undefined" !== typeof h && h.error(f.j); + } + }, 1); + }; + b.prototype.D = function () { + if (this.u) return !1; + var f = y.CustomEvent, + h = y.Event, + k = y.dispatchEvent; + if ("undefined" === typeof k) return !0; + "function" === typeof f + ? (f = new f("unhandledrejection", { cancelable: !0 })) + : "function" === typeof h + ? (f = new h("unhandledrejection", { cancelable: !0 })) + : ((f = y.document.createEvent("CustomEvent")), + f.initCustomEvent("unhandledrejection", !1, !0, f)); + f.promise = this; + f.reason = this.j; + return k(f); + }; + b.prototype.H = function () { + if (null != this.h) { + for (var f = 0; f < this.h.length; ++f) g.i(this.h[f]); + this.h = null; + } + }; + var g = new c(); + b.prototype.L = function (f) { + var h = this.l(); + f.T(h.resolve, h.reject); + }; + b.prototype.M = function (f, h) { + var k = this.l(); + try { + f.call(h, k.resolve, k.reject); + } catch (l) { + k.reject(l); + } + }; + b.prototype.then = function (f, h) { + function k(p, n) { + return "function" == typeof p + ? function (q) { + try { + l(p(q)); + } catch (t) { + m(t); + } + } + : n; + } + var l, + m, + r = new b(function (p, n) { + l = p; + m = n; + }); + this.T(k(f, l), k(h, m)); + return r; + }; + b.prototype.catch = function (f) { + return this.then(void 0, f); + }; + b.prototype.T = function (f, h) { + function k() { + switch (l.i) { + case 1: + f(l.j); + break; + case 2: + h(l.j); + break; + default: + throw Error("Unexpected state: " + l.i); + } + } + var l = this; + null == this.h ? g.i(k) : this.h.push(k); + this.u = !0; + }; + b.resolve = d; + b.reject = function (f) { + return new b(function (h, k) { + k(f); + }); + }; + b.race = function (f) { + return new b(function (h, k) { + for (var l = A(f), m = l.next(); !m.done; m = l.next()) d(m.value).T(h, k); + }); + }; + b.all = function (f) { + var h = A(f), + k = h.next(); + return k.done + ? d([]) + : new b(function (l, m) { + function r(q) { + return function (t) { + p[q] = t; + n--; + 0 == n && l(p); + }; + } + var p = [], + n = 0; + do p.push(void 0), n++, d(k.value).T(r(p.length - 1), m), (k = h.next()); + while (!k.done); + }); + }; + return b; + }); + function xa(a, b) { + a instanceof String && (a += ""); + var c = 0, + d = !1, + e = { + next: function () { + if (!d && c < a.length) { + var g = c++; + return { value: b(g, a[g]), done: !1 }; + } + d = !0; + return { done: !0, value: void 0 }; + }, + }; + e[Symbol.iterator] = function () { + return e; + }; + return e; + } + z("Array.prototype.keys", function (a) { + return a + ? a + : function () { + return xa(this, function (b) { + return b; + }); + }; + }); + z("Array.prototype.fill", function (a) { + return a + ? a + : function (b, c, d) { + var e = this.length || 0; + 0 > c && (c = Math.max(0, e + c)); + if (null == d || d > e) d = e; + d = Number(d); + 0 > d && (d = Math.max(0, e + d)); + for (c = Number(c || 0); c < d; c++) this[c] = b; + return this; + }; + }); + function F(a) { + return a ? a : Array.prototype.fill; + } + z("Int8Array.prototype.fill", F); + z("Uint8Array.prototype.fill", F); + z("Uint8ClampedArray.prototype.fill", F); + z("Int16Array.prototype.fill", F); + z("Uint16Array.prototype.fill", F); + z("Int32Array.prototype.fill", F); + z("Uint32Array.prototype.fill", F); + z("Float32Array.prototype.fill", F); + z("Float64Array.prototype.fill", F); + z("Object.is", function (a) { + return a + ? a + : function (b, c) { + return b === c ? 0 !== b || 1 / b === 1 / c : b !== b && c !== c; + }; + }); + z("Array.prototype.includes", function (a) { + return a + ? a + : function (b, c) { + var d = this; + d instanceof String && (d = String(d)); + var e = d.length; + c = c || 0; + for (0 > c && (c = Math.max(c + e, 0)); c < e; c++) { + var g = d[c]; + if (g === b || Object.is(g, b)) return !0; + } + return !1; + }; + }); + z("String.prototype.includes", function (a) { + return a + ? a + : function (b, c) { + if (null == this) + throw new TypeError( + "The 'this' value for String.prototype.includes must not be null or undefined", + ); + if (b instanceof RegExp) + throw new TypeError( + "First argument to String.prototype.includes must not be a regular expression", + ); + return -1 !== this.indexOf(b, c || 0); + }; + }); + var ya = this || self; + function Aa(a, b) { + a = a.split("."); + var c = ya; + a[0] in c || "undefined" == typeof c.execScript || c.execScript("var " + a[0]); + for (var d; a.length && (d = a.shift()); ) + a.length || void 0 === b + ? c[d] && c[d] !== Object.prototype[d] + ? (c = c[d]) + : (c = c[d] = {}) + : (c[d] = b); + } + function Ba(a) { + var b; + a: { + if ((b = ya.navigator)) if ((b = b.userAgent)) break a; + b = ""; + } + return -1 != b.indexOf(a); + } + var Ca = Array.prototype.map + ? function (a, b) { + return Array.prototype.map.call(a, b, void 0); + } + : function (a, b) { + for ( + var c = a.length, d = Array(c), e = "string" === typeof a ? a.split("") : a, g = 0; + g < c; + g++ + ) + g in e && (d[g] = b.call(void 0, e[g], g, a)); + return d; + }; + var Da = {}, + Ea = null; + function Fa(a) { + var b = a.length, + c = (3 * b) / 4; + c % 3 + ? (c = Math.floor(c)) + : -1 != "=.".indexOf(a[b - 1]) && (c = -1 != "=.".indexOf(a[b - 2]) ? c - 2 : c - 1); + var d = new Uint8Array(c), + e = 0; + Ga(a, function (g) { + d[e++] = g; + }); + return e !== c ? d.subarray(0, e) : d; + } + function Ga(a, b) { + function c(k) { + for (; d < a.length; ) { + var l = a.charAt(d++), + m = Ea[l]; + if (null != m) return m; + if (!/^[\s\xa0]*$/.test(l)) throw Error("Unknown base64 encoding at char: " + l); + } + return k; + } + Ha(); + for (var d = 0; ; ) { + var e = c(-1), + g = c(0), + f = c(64), + h = c(64); + if (64 === h && -1 === e) break; + b((e << 2) | (g >> 4)); + 64 != f && (b(((g << 4) & 240) | (f >> 2)), 64 != h && b(((f << 6) & 192) | h)); + } + } + function Ha() { + if (!Ea) { + Ea = {}; + for ( + var a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""), + b = ["+/=", "+/", "-_=", "-_.", "-_"], + c = 0; + 5 > c; + c++ + ) { + var d = a.concat(b[c].split("")); + Da[c] = d; + for (var e = 0; e < d.length; e++) { + var g = d[e]; + void 0 === Ea[g] && (Ea[g] = e); + } + } + } + } + var Ia = "undefined" !== typeof Uint8Array, + Ja = !(Ba("Trident") || Ba("MSIE")) && "function" === typeof ya.btoa; + function Ka(a) { + if (!Ja) { + var b; + void 0 === b && (b = 0); + Ha(); + b = Da[b]; + for ( + var c = Array(Math.floor(a.length / 3)), d = b[64] || "", e = 0, g = 0; + e < a.length - 2; + e += 3 + ) { + var f = a[e], + h = a[e + 1], + k = a[e + 2], + l = b[f >> 2]; + f = b[((f & 3) << 4) | (h >> 4)]; + h = b[((h & 15) << 2) | (k >> 6)]; + k = b[k & 63]; + c[g++] = l + f + h + k; + } + l = 0; + k = d; + switch (a.length - e) { + case 2: + (l = a[e + 1]), (k = b[(l & 15) << 2] || d); + case 1: + (a = a[e]), (c[g] = b[a >> 2] + b[((a & 3) << 4) | (l >> 4)] + k + d); + } + return c.join(""); + } + for (b = ""; 10240 < a.length; ) + (b += String.fromCharCode.apply(null, a.subarray(0, 10240))), (a = a.subarray(10240)); + b += String.fromCharCode.apply(null, a); + return btoa(b); + } + var La = RegExp("[-_.]", "g"); + function Ma(a) { + switch (a) { + case "-": + return "+"; + case "_": + return "/"; + case ".": + return "="; + default: + return ""; + } + } + function Na(a) { + if (!Ja) return Fa(a); + La.test(a) && (a = a.replace(La, Ma)); + a = atob(a); + for (var b = new Uint8Array(a.length), c = 0; c < a.length; c++) b[c] = a.charCodeAt(c); + return b; + } + var Oa; + function Pa() { + return Oa || (Oa = new Uint8Array(0)); + } + var Qa = {}; + var Ra = "function" === typeof Uint8Array.prototype.slice, + G = 0, + H = 0; + function Sa(a) { + var b = 0 > a; + a = Math.abs(a); + var c = a >>> 0; + a = Math.floor((a - c) / 4294967296); + b && ((c = A(Ta(c, a))), (b = c.next().value), (a = c.next().value), (c = b)); + G = c >>> 0; + H = a >>> 0; + } + var Ua = "function" === typeof BigInt; + function Ta(a, b) { + b = ~b; + a ? (a = ~a + 1) : (b += 1); + return [a, b]; + } + function Va(a, b) { + this.i = a >>> 0; + this.h = b >>> 0; + } + function Wa(a) { + if (!a) return Xa || (Xa = new Va(0, 0)); + if (!/^-?\d+$/.test(a)) return null; + if (16 > a.length) Sa(Number(a)); + else if (Ua) + (a = BigInt(a)), + (G = Number(a & BigInt(4294967295)) >>> 0), + (H = Number((a >> BigInt(32)) & BigInt(4294967295))); + else { + var b = +("-" === a[0]); + H = G = 0; + for (var c = a.length, d = b, e = ((c - b) % 6) + b; e <= c; d = e, e += 6) + (d = Number(a.slice(d, e))), + (H *= 1e6), + (G = 1e6 * G + d), + 4294967296 <= G && ((H += (G / 4294967296) | 0), (G %= 4294967296)); + b && ((b = A(Ta(G, H))), (a = b.next().value), (b = b.next().value), (G = a), (H = b)); + } + return new Va(G, H); + } + var Xa; + function Ya(a, b) { + return Error("Invalid wire type: " + a + " (at position " + b + ")"); + } + function Za() { + return Error("Failed to read varint, encoding is invalid."); + } + function $a(a, b) { + return Error("Tried to read past the end of the data " + b + " > " + a); + } + function K() { + throw Error("Invalid UTF8"); + } + function ab(a, b) { + b = String.fromCharCode.apply(null, b); + return null == a ? b : a + b; + } + var bb = void 0, + cb, + db = "undefined" !== typeof TextDecoder, + eb, + fb = "undefined" !== typeof TextEncoder; + var gb; + function hb(a) { + if (a !== Qa) throw Error("illegal external caller"); + } + function ib(a, b) { + hb(b); + this.V = a; + if (null != a && 0 === a.length) + throw Error("ByteString should be constructed with non-empty values"); + } + function jb() { + return gb || (gb = new ib(null, Qa)); + } + function kb(a) { + hb(Qa); + var b = a.V; + b = + null == b || (Ia && null != b && b instanceof Uint8Array) + ? b + : "string" === typeof b + ? Na(b) + : null; + return null == b ? b : (a.V = b); + } + function lb(a) { + if ("string" === typeof a) return { buffer: Na(a), C: !1 }; + if (Array.isArray(a)) return { buffer: new Uint8Array(a), C: !1 }; + if (a.constructor === Uint8Array) return { buffer: a, C: !1 }; + if (a.constructor === ArrayBuffer) return { buffer: new Uint8Array(a), C: !1 }; + if (a.constructor === ib) return { buffer: kb(a) || Pa(), C: !0 }; + if (a instanceof Uint8Array) + return { buffer: new Uint8Array(a.buffer, a.byteOffset, a.byteLength), C: !1 }; + throw Error( + "Type not convertible to a Uint8Array, expected a Uint8Array, an ArrayBuffer, a base64 encoded string, a ByteString or an Array of numbers", + ); + } + function mb(a, b) { + this.i = null; + this.m = !1; + this.h = this.j = this.l = 0; + nb(this, a, b); + } + function nb(a, b, c) { + c = void 0 === c ? {} : c; + a.S = void 0 === c.S ? !1 : c.S; + b && ((b = lb(b)), (a.i = b.buffer), (a.m = b.C), (a.l = 0), (a.j = a.i.length), (a.h = a.l)); + } + mb.prototype.reset = function () { + this.h = this.l; + }; + function L(a, b) { + a.h = b; + if (b > a.j) throw $a(a.j, b); + } + function ob(a) { + var b = a.i, + c = a.h, + d = b[c++], + e = d & 127; + if ( + d & 128 && + ((d = b[c++]), + (e |= (d & 127) << 7), + d & 128 && + ((d = b[c++]), + (e |= (d & 127) << 14), + d & 128 && + ((d = b[c++]), + (e |= (d & 127) << 21), + d & 128 && + ((d = b[c++]), + (e |= d << 28), + d & 128 && + b[c++] & 128 && + b[c++] & 128 && + b[c++] & 128 && + b[c++] & 128 && + b[c++] & 128)))) + ) + throw Za(); + L(a, c); + return e; + } + function pb(a, b) { + if (0 > b) throw Error("Tried to read a negative byte length: " + b); + var c = a.h, + d = c + b; + if (d > a.j) throw $a(b, a.j - c); + a.h = d; + return c; + } + var qb = []; + function rb() { + this.h = []; + } + rb.prototype.length = function () { + return this.h.length; + }; + rb.prototype.end = function () { + var a = this.h; + this.h = []; + return a; + }; + function sb(a, b, c) { + for (; 0 < c || 127 < b; ) + a.h.push((b & 127) | 128), (b = ((b >>> 7) | (c << 25)) >>> 0), (c >>>= 7); + a.h.push(b); + } + function M(a, b) { + for (; 127 < b; ) a.h.push((b & 127) | 128), (b >>>= 7); + a.h.push(b); + } + function tb(a, b) { + if (qb.length) { + var c = qb.pop(); + nb(c, a, b); + a = c; + } else a = new mb(a, b); + this.h = a; + this.j = this.h.h; + this.i = this.l = -1; + this.setOptions(b); + } + tb.prototype.setOptions = function (a) { + a = void 0 === a ? {} : a; + this.ca = void 0 === a.ca ? !1 : a.ca; + }; + tb.prototype.reset = function () { + this.h.reset(); + this.j = this.h.h; + this.i = this.l = -1; + }; + function ub(a) { + var b = a.h; + if (b.h == b.j) return !1; + a.j = a.h.h; + var c = ob(a.h) >>> 0; + b = c >>> 3; + c &= 7; + if (!(0 <= c && 5 >= c)) throw Ya(c, a.j); + if (1 > b) throw Error("Invalid field number: " + b + " (at position " + a.j + ")"); + a.l = b; + a.i = c; + return !0; + } + function vb(a) { + switch (a.i) { + case 0: + if (0 != a.i) vb(a); + else + a: { + a = a.h; + for (var b = a.h, c = b + 10, d = a.i; b < c; ) + if (0 === (d[b++] & 128)) { + L(a, b); + break a; + } + throw Za(); + } + break; + case 1: + a = a.h; + L(a, a.h + 8); + break; + case 2: + 2 != a.i ? vb(a) : ((b = ob(a.h) >>> 0), (a = a.h), L(a, a.h + b)); + break; + case 5: + a = a.h; + L(a, a.h + 4); + break; + case 3: + b = a.l; + do { + if (!ub(a)) throw Error("Unmatched start-group tag: stream EOF"); + if (4 == a.i) { + if (a.l != b) throw Error("Unmatched end-group tag"); + break; + } + vb(a); + } while (1); + break; + default: + throw Ya(a.i, a.j); + } + } + var wb = []; + function xb() { + this.j = []; + this.i = 0; + this.h = new rb(); + } + function N(a, b) { + 0 !== b.length && (a.j.push(b), (a.i += b.length)); + } + function yb(a, b) { + if ((b = b.R)) { + N(a, a.h.end()); + for (var c = 0; c < b.length; c++) N(a, kb(b[c]) || Pa()); + } + } + var O = "function" === typeof Symbol && "symbol" === typeof Symbol() ? Symbol() : void 0; + function P(a, b) { + if (O) return (a[O] |= b); + if (void 0 !== a.A) return (a.A |= b); + Object.defineProperties(a, { A: { value: b, configurable: !0, writable: !0, enumerable: !1 } }); + return b; + } + function zb(a, b) { + O ? a[O] && (a[O] &= ~b) : void 0 !== a.A && (a.A &= ~b); + } + function Q(a) { + var b; + O ? (b = a[O]) : (b = a.A); + return null == b ? 0 : b; + } + function R(a, b) { + O + ? (a[O] = b) + : void 0 !== a.A + ? (a.A = b) + : Object.defineProperties(a, { + A: { value: b, configurable: !0, writable: !0, enumerable: !1 }, + }); + } + function Ab(a) { + P(a, 1); + return a; + } + function Bb(a, b) { + R(b, (a | 0) & -51); + } + function Cb(a, b) { + R(b, (a | 18) & -41); + } + var Db = {}; + function Eb(a) { + return null !== a && "object" === typeof a && !Array.isArray(a) && a.constructor === Object; + } + var Fb, + Gb = []; + R(Gb, 23); + Fb = Object.freeze(Gb); + function Hb(a) { + if (Q(a.o) & 2) throw Error("Cannot mutate an immutable Message"); + } + function Ib(a) { + var b = a.length; + (b = b ? a[b - 1] : void 0) && Eb(b) ? (b.g = 1) : ((b = {}), a.push(((b.g = 1), b))); + } + function Jb(a) { + var b = a.i + a.G; + return a.B || (a.B = a.o[b] = {}); + } + function S(a, b) { + return -1 === b ? null : b >= a.i ? (a.B ? a.B[b] : void 0) : a.o[b + a.G]; + } + function U(a, b, c, d) { + Hb(a); + Kb(a, b, c, d); + } + function Kb(a, b, c, d) { + a.j && (a.j = void 0); + b >= a.i || d ? (Jb(a)[b] = c) : ((a.o[b + a.G] = c), (a = a.B) && b in a && delete a[b]); + } + function Lb(a, b, c, d) { + var e = S(a, b); + Array.isArray(e) || (e = Fb); + var g = Q(e); + g & 1 || Ab(e); + if (d) g & 2 || P(e, 2), c & 1 || Object.freeze(e); + else { + d = !(c & 2); + var f = g & 2; + c & 1 || !f + ? d && g & 16 && !f && zb(e, 16) + : ((e = Ab(Array.prototype.slice.call(e))), Kb(a, b, e)); + } + return e; + } + function Mb(a, b) { + var c = S(a, b); + var d = + null == c + ? c + : "number" === typeof c || "NaN" === c || "Infinity" === c || "-Infinity" === c + ? Number(c) + : void 0; + null != d && d !== c && Kb(a, b, d); + return d; + } + function Nb(a, b, c, d, e) { + a.h || (a.h = {}); + var g = a.h[c], + f = Lb(a, c, 3, e); + if (!g) { + var h = f; + g = []; + var k = !!(Q(a.o) & 16); + f = !!(Q(h) & 2); + var l = h; + !e && f && (h = Array.prototype.slice.call(h)); + for (var m = f, r = 0; r < h.length; r++) { + var p = h[r]; + var n = b, + q = !1; + q = void 0 === q ? !1 : q; + p = Array.isArray(p) ? new n(p) : q ? new n() : void 0; + if (void 0 !== p) { + n = p.o; + var t = (q = Q(n)); + f && (t |= 2); + k && (t |= 16); + t != q && R(n, t); + n = t; + m = m || !!(2 & n); + g.push(p); + } + } + a.h[c] = g; + k = Q(h); + b = k | 33; + b = m ? b & -9 : b | 8; + k != b && + ((m = h), Object.isFrozen(m) && (m = Array.prototype.slice.call(m)), R(m, b), (h = m)); + l !== h && Kb(a, c, h); + (e || (d && f)) && P(g, 2); + d && Object.freeze(g); + return g; + } + e || + ((e = Object.isFrozen(g)), + d && !e ? Object.freeze(g) : !d && e && ((g = Array.prototype.slice.call(g)), (a.h[c] = g))); + return g; + } + function Ob(a, b, c) { + var d = !!(Q(a.o) & 2); + b = Nb(a, b, c, d, d); + a = Lb(a, c, 3, d); + if (!(d || Q(a) & 8)) { + for (d = 0; d < b.length; d++) { + c = b[d]; + if (Q(c.o) & 2) { + var e = Pb(c, !1); + e.j = c; + } else e = c; + c !== e && ((b[d] = e), (a[d] = e.o)); + } + P(a, 8); + } + return b; + } + function V(a, b, c) { + if (null != c && "number" !== typeof c) + throw Error( + "Value of float/double field must be a number|null|undefined, found " + typeof c + ": " + c, + ); + U(a, b, c); + } + function Qb(a, b, c, d, e) { + Hb(a); + var g = Nb(a, c, b, !1, !1); + c = null != d ? d : new c(); + a = Lb(a, b, 2, !1); + void 0 != e ? (g.splice(e, 0, c), a.splice(e, 0, c.o)) : (g.push(c), a.push(c.o)); + c.C() && zb(a, 8); + return c; + } + function Rb(a, b) { + return null == a ? b : a; + } + function W(a, b, c) { + c = void 0 === c ? 0 : c; + return Rb(Mb(a, b), c); + } + var Sb; + function Tb(a) { + switch (typeof a) { + case "number": + return isFinite(a) ? a : String(a); + case "object": + if (a) + if (Array.isArray(a)) { + if (0 !== (Q(a) & 128)) return (a = Array.prototype.slice.call(a)), Ib(a), a; + } else { + if (Ia && null != a && a instanceof Uint8Array) return Ka(a); + if (a instanceof ib) { + var b = a.V; + return null == b ? "" : "string" === typeof b ? b : (a.V = Ka(b)); + } + } + } + return a; + } + function Ub(a, b, c, d) { + if (null != a) { + if (Array.isArray(a)) a = Vb(a, b, c, void 0 !== d); + else if (Eb(a)) { + var e = {}, + g; + for (g in a) e[g] = Ub(a[g], b, c, d); + a = e; + } else a = b(a, d); + return a; + } + } + function Vb(a, b, c, d) { + var e = Q(a); + d = d ? !!(e & 16) : void 0; + a = Array.prototype.slice.call(a); + for (var g = 0; g < a.length; g++) a[g] = Ub(a[g], b, c, d); + c(e, a); + return a; + } + function Wb(a) { + return a.ja === Db ? a.toJSON() : Tb(a); + } + function Xb(a, b) { + a & 128 && Ib(b); + } + function Yb(a, b, c) { + c = void 0 === c ? Cb : c; + if (null != a) { + if (Ia && a instanceof Uint8Array) return a.length ? new ib(new Uint8Array(a), Qa) : jb(); + if (Array.isArray(a)) { + var d = Q(a); + if (d & 2) return a; + if (b && !(d & 32) && (d & 16 || 0 === d)) return R(a, d | 2), a; + a = Vb(a, Yb, d & 4 ? Cb : c, !0); + b = Q(a); + b & 4 && b & 2 && Object.freeze(a); + return a; + } + return a.ja === Db ? Zb(a) : a; + } + } + function $b(a, b, c, d, e, g, f) { + if ((a = a.h && a.h[c])) { + d = Q(a); + d & 2 ? (d = a) : ((g = Ca(a, Zb)), Cb(d, g), Object.freeze(g), (d = g)); + Hb(b); + f = null == d ? Fb : Ab([]); + if (null != d) { + g = !!d.length; + for (a = 0; a < d.length; a++) { + var h = d[a]; + g = g && !(Q(h.o) & 2); + f[a] = h.o; + } + g = (g ? 8 : 0) | 1; + a = Q(f); + (a & g) !== g && (Object.isFrozen(f) && (f = Array.prototype.slice.call(f)), R(f, a | g)); + b.h || (b.h = {}); + b.h[c] = d; + } else b.h && (b.h[c] = void 0); + Kb(b, c, f, e); + } else U(b, c, Yb(d, g, f), e); + } + function Zb(a) { + if (Q(a.o) & 2) return a; + a = Pb(a, !0); + P(a.o, 2); + return a; + } + function Pb(a, b) { + var c = a.o, + d = []; + P(d, 16); + var e = a.constructor.h; + e && d.push(e); + e = a.B; + if (e) { + d.length = c.length; + d.fill(void 0, d.length, c.length); + var g = {}; + d[d.length - 1] = g; + } + 0 !== (Q(c) & 128) && Ib(d); + b = b || a.C() ? Cb : Bb; + g = a.constructor; + Sb = d; + d = new g(d); + Sb = void 0; + a.R && (d.R = a.R.slice()); + g = !!(Q(c) & 16); + for (var f = e ? c.length - 1 : c.length, h = 0; h < f; h++) $b(a, d, h - a.G, c[h], !1, g, b); + if (e) for (var k in e) $b(a, d, +k, e[k], !0, g, b); + return d; + } + function X(a, b, c) { + null == a && (a = Sb); + Sb = void 0; + var d = this.constructor.i || 0, + e = 0 < d, + g = this.constructor.h, + f = !1; + if (null == a) { + a = g ? [g] : []; + var h = 48; + var k = !0; + e && ((d = 0), (h |= 128)); + R(a, h); + } else { + if (!Array.isArray(a)) throw Error(); + if (g && g !== a[0]) throw Error(); + var l = (h = P(a, 0)); + if ((k = 0 !== (16 & l))) (f = 0 !== (32 & l)) || (l |= 32); + if (e) + if (128 & l) d = 0; + else { + if (0 < a.length) { + var m = a[a.length - 1]; + if (Eb(m) && "g" in m) { + d = 0; + l |= 128; + delete m.g; + var r = !0, + p; + for (p in m) { + r = !1; + break; + } + r && a.pop(); + } + } + } + else if (128 & l) throw Error(); + h !== l && R(a, l); + } + this.G = (g ? 0 : -1) - d; + this.h = void 0; + this.o = a; + a: { + g = this.o.length; + d = g - 1; + if (g && ((g = this.o[d]), Eb(g))) { + this.B = g; + this.i = d - this.G; + break a; + } + void 0 !== b && -1 < b + ? ((this.i = Math.max(b, d + 1 - this.G)), (this.B = void 0)) + : (this.i = Number.MAX_VALUE); + } + if (!e && this.B && "g" in this.B) + throw Error('Unexpected "g" flag in sparse object of message that is not a group type.'); + if (c) { + b = k && !f && !0; + e = this.i; + var n; + for (k = 0; k < c.length; k++) + (f = c[k]), + f < e + ? ((f += this.G), (d = a[f]) ? ac(d, b) : (a[f] = Fb)) + : (n || (n = Jb(this)), (d = n[f]) ? ac(d, b) : (n[f] = Fb)); + } + } + X.prototype.toJSON = function () { + return Vb(this.o, Wb, Xb); + }; + X.prototype.C = function () { + return !!(Q(this.o) & 2); + }; + function ac(a, b) { + if (Array.isArray(a)) { + var c = Q(a), + d = 1; + !b || c & 2 || (d |= 16); + (c & d) !== d && R(a, c | d); + } + } + X.prototype.ja = Db; + X.prototype.toString = function () { + return this.o.toString(); + }; + function bc(a, b, c) { + if (c) { + var d = {}, + e; + for (e in c) { + var g = c[e], + f = g.ra; + f || + ((d.J = g.xa || g.oa.W), + g.ia + ? ((d.aa = cc(g.ia)), + (f = (function (h) { + return function (k, l, m) { + return h.J(k, l, m, h.aa); + }; + })(d))) + : g.ka + ? ((d.Z = dc(g.da.P, g.ka)), + (f = (function (h) { + return function (k, l, m) { + return h.J(k, l, m, h.Z); + }; + })(d))) + : (f = d.J), + (g.ra = f)); + f(b, a, g.da); + d = { J: d.J, aa: d.aa, Z: d.Z }; + } + } + yb(b, a); + } + var ec = Symbol(); + function fc(a, b, c) { + return ( + a[ec] || + (a[ec] = function (d, e) { + return b(d, e, c); + }) + ); + } + function gc(a) { + var b = a[ec]; + if (!b) { + var c = hc(a); + b = function (d, e) { + return ic(d, e, c); + }; + a[ec] = b; + } + return b; + } + function jc(a) { + var b = a.ia; + if (b) return gc(b); + if ((b = a.wa)) return fc(a.da.P, b, a.ka); + } + function kc(a) { + var b = jc(a), + c = a.da, + d = a.oa.U; + return b + ? function (e, g) { + return d(e, g, c, b); + } + : function (e, g) { + return d(e, g, c); + }; + } + function lc(a, b) { + var c = a[b]; + "function" == typeof c && 0 === c.length && ((c = c()), (a[b] = c)); + return Array.isArray(c) && (mc in c || nc in c || (0 < c.length && "function" == typeof c[0])) + ? c + : void 0; + } + function oc(a, b, c, d, e, g) { + b.P = a[0]; + var f = 1; + if (a.length > f && "number" !== typeof a[f]) { + var h = a[f++]; + c(b, h); + } + for (; f < a.length; ) { + c = a[f++]; + for (var k = f + 1; k < a.length && "number" !== typeof a[k]; ) k++; + h = a[f++]; + k -= f; + switch (k) { + case 0: + d(b, c, h); + break; + case 1: + (k = lc(a, f)) ? (f++, e(b, c, h, k)) : d(b, c, h, a[f++]); + break; + case 2: + k = f++; + k = lc(a, k); + e(b, c, h, k, a[f++]); + break; + case 3: + g(b, c, h, a[f++], a[f++], a[f++]); + break; + case 4: + g(b, c, h, a[f++], a[f++], a[f++], a[f++]); + break; + default: + throw Error("unexpected number of binary field arguments: " + k); + } + } + return b; + } + var pc = Symbol(); + function cc(a) { + var b = a[pc]; + if (!b) { + var c = qc(a); + b = function (d, e) { + return rc(d, e, c); + }; + a[pc] = b; + } + return b; + } + function dc(a, b) { + var c = a[pc]; + c || + ((c = function (d, e) { + return bc(d, e, b); + }), + (a[pc] = c)); + return c; + } + var nc = Symbol(); + function sc(a, b) { + a.push(b); + } + function tc(a, b, c) { + a.push(b, c.W); + } + function uc(a, b, c, d) { + var e = cc(d), + g = qc(d).P, + f = c.W; + a.push(b, function (h, k, l) { + return f(h, k, l, g, e); + }); + } + function vc(a, b, c, d, e, g) { + var f = dc(d, g), + h = c.W; + a.push(b, function (k, l, m) { + return h(k, l, m, d, f); + }); + } + function qc(a) { + var b = a[nc]; + if (b) return b; + b = oc(a, (a[nc] = []), sc, tc, uc, vc); + mc in a && nc in a && (a.length = 0); + return b; + } + var mc = Symbol(); + function wc(a, b) { + a[0] = b; + } + function xc(a, b, c, d) { + var e = c.U; + a[b] = d + ? function (g, f, h) { + return e(g, f, h, d); + } + : e; + } + function yc(a, b, c, d, e) { + var g = c.U, + f = gc(d), + h = hc(d).P; + a[b] = function (k, l, m) { + return g(k, l, m, h, f, e); + }; + } + function zc(a, b, c, d, e, g, f) { + var h = c.U, + k = fc(d, e, g); + a[b] = function (l, m, r) { + return h(l, m, r, d, k, f); + }; + } + function hc(a) { + var b = a[mc]; + if (b) return b; + b = oc(a, (a[mc] = {}), wc, xc, yc, zc); + mc in a && nc in a && (a.length = 0); + return b; + } + function ic(a, b, c) { + for (; ub(b) && 4 != b.i; ) { + var d = b.l, + e = c[d]; + if (!e) { + var g = c[0]; + g && (g = g[d]) && (e = c[d] = kc(g)); + } + if (!e || !e(b, a, d)) { + e = b; + d = a; + g = e.j; + vb(e); + var f = e; + if (!f.ca) { + e = f.h.h - g; + f.h.h = g; + f = f.h; + if (0 == e) e = jb(); + else { + g = pb(f, e); + if (f.S && f.m) e = f.i.subarray(g, g + e); + else { + f = f.i; + var h = g; + e = g + e; + e = h === e ? Pa() : Ra ? f.slice(h, e) : new Uint8Array(f.subarray(h, e)); + } + e = 0 == e.length ? jb() : new ib(e, Qa); + } + (g = d.R) ? g.push(e) : (d.R = [e]); + } + } + } + return a; + } + function rc(a, b, c) { + for (var d = c.length, e = 1 == d % 2, g = e ? 1 : 0; g < d; g += 2) (0, c[g + 1])(b, a, c[g]); + bc(a, b, e ? c[0] : void 0); + } + function Ac(a, b) { + return { U: a, W: b }; + } + var Y = Ac( + function (a, b, c) { + if (5 !== a.i) return !1; + a = a.h; + var d = a.i, + e = a.h, + g = d[e]; + var f = d[e + 1]; + var h = d[e + 2]; + d = d[e + 3]; + L(a, a.h + 4); + f = ((g << 0) | (f << 8) | (h << 16) | (d << 24)) >>> 0; + a = 2 * (f >> 31) + 1; + g = (f >>> 23) & 255; + f &= 8388607; + U( + b, + c, + 255 == g + ? f + ? NaN + : Infinity * a + : 0 == g + ? a * Math.pow(2, -149) * f + : a * Math.pow(2, g - 150) * (f + Math.pow(2, 23)), + ); + return !0; + }, + function (a, b, c) { + b = Mb(b, c); + if (null != b) { + M(a.h, 8 * c + 5); + a = a.h; + var d = +b; + 0 === d + ? 0 < 1 / d + ? (G = H = 0) + : ((H = 0), (G = 2147483648)) + : isNaN(d) + ? ((H = 0), (G = 2147483647)) + : ((d = (c = 0 > d ? -2147483648 : 0) ? -d : d), + 3.4028234663852886e38 < d + ? ((H = 0), (G = (c | 2139095040) >>> 0)) + : 1.1754943508222875e-38 > d + ? ((d = Math.round(d / Math.pow(2, -149))), (H = 0), (G = (c | d) >>> 0)) + : ((b = Math.floor(Math.log(d) / Math.LN2)), + (d *= Math.pow(2, -b)), + (d = Math.round(8388608 * d)), + 16777216 <= d && ++b, + (H = 0), + (G = (c | ((b + 127) << 23) | (d & 8388607)) >>> 0))); + c = G; + a.h.push((c >>> 0) & 255); + a.h.push((c >>> 8) & 255); + a.h.push((c >>> 16) & 255); + a.h.push((c >>> 24) & 255); + } + }, + ), + Bc = Ac( + function (a, b, c) { + if (0 !== a.i) return !1; + var d = a.h, + e = 0, + g = (a = 0), + f = d.i, + h = d.h; + do { + var k = f[h++]; + e |= (k & 127) << g; + g += 7; + } while (32 > g && k & 128); + 32 < g && (a |= (k & 127) >> 4); + for (g = 3; 32 > g && k & 128; g += 7) (k = f[h++]), (a |= (k & 127) << g); + L(d, h); + if (128 > k) { + d = e >>> 0; + k = a >>> 0; + if ((a = k & 2147483648)) + (d = (~d + 1) >>> 0), (k = ~k >>> 0), 0 == d && (k = (k + 1) >>> 0); + d = 4294967296 * k + (d >>> 0); + } else throw Za(); + U(b, c, a ? -d : d); + return !0; + }, + function (a, b, c) { + b = S(b, c); + null != b && + ("string" === typeof b && Wa(b), + null != b && + (M(a.h, 8 * c), + "number" === typeof b + ? ((a = a.h), Sa(b), sb(a, G, H)) + : ((c = Wa(b)), sb(a.h, c.i, c.h)))); + }, + ), + Cc = Ac( + function (a, b, c) { + if (0 !== a.i) return !1; + U(b, c, ob(a.h)); + return !0; + }, + function (a, b, c) { + b = S(b, c); + if (null != b && null != b) + if ((M(a.h, 8 * c), (a = a.h), (c = b), 0 <= c)) M(a, c); + else { + for (b = 0; 9 > b; b++) a.h.push((c & 127) | 128), (c >>= 7); + a.h.push(1); + } + }, + ), + Dc = Ac( + function (a, b, c) { + if (2 !== a.i) return !1; + var d = ob(a.h) >>> 0; + a = a.h; + var e = pb(a, d); + a = a.i; + if (db) { + var g = a, + f; + (f = cb) || (f = cb = new TextDecoder("utf-8", { fatal: !0 })); + a = e + d; + g = 0 === e && a === g.length ? g : g.subarray(e, a); + try { + var h = f.decode(g); + } catch (r) { + if (void 0 === bb) { + try { + f.decode(new Uint8Array([128])); + } catch (p) {} + try { + f.decode(new Uint8Array([97])), (bb = !0); + } catch (p) { + bb = !1; + } + } + !bb && (cb = void 0); + throw r; + } + } else { + h = e; + d = h + d; + e = []; + for (var k = null, l, m; h < d; ) + (l = a[h++]), + 128 > l + ? e.push(l) + : 224 > l + ? h >= d + ? K() + : ((m = a[h++]), + 194 > l || 128 !== (m & 192) + ? (h--, K()) + : e.push(((l & 31) << 6) | (m & 63))) + : 240 > l + ? h >= d - 1 + ? K() + : ((m = a[h++]), + 128 !== (m & 192) || + (224 === l && 160 > m) || + (237 === l && 160 <= m) || + 128 !== ((g = a[h++]) & 192) + ? (h--, K()) + : e.push(((l & 15) << 12) | ((m & 63) << 6) | (g & 63))) + : 244 >= l + ? h >= d - 2 + ? K() + : ((m = a[h++]), + 128 !== (m & 192) || + 0 !== ((l << 28) + (m - 144)) >> 30 || + 128 !== ((g = a[h++]) & 192) || + 128 !== ((f = a[h++]) & 192) + ? (h--, K()) + : ((l = + ((l & 7) << 18) | ((m & 63) << 12) | ((g & 63) << 6) | (f & 63)), + (l -= 65536), + e.push(((l >> 10) & 1023) + 55296, (l & 1023) + 56320))) + : K(), + 8192 <= e.length && ((k = ab(k, e)), (e.length = 0)); + h = ab(k, e); + } + U(b, c, h); + return !0; + }, + function (a, b, c) { + b = S(b, c); + if (null != b) { + var d = !1; + d = void 0 === d ? !1 : d; + if (fb) { + if ( + d && + /(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])/.test(b) + ) + throw Error("Found an unpaired surrogate"); + b = (eb || (eb = new TextEncoder())).encode(b); + } else { + for (var e = 0, g = new Uint8Array(3 * b.length), f = 0; f < b.length; f++) { + var h = b.charCodeAt(f); + if (128 > h) g[e++] = h; + else { + if (2048 > h) g[e++] = (h >> 6) | 192; + else { + if (55296 <= h && 57343 >= h) { + if (56319 >= h && f < b.length) { + var k = b.charCodeAt(++f); + if (56320 <= k && 57343 >= k) { + h = 1024 * (h - 55296) + k - 56320 + 65536; + g[e++] = (h >> 18) | 240; + g[e++] = ((h >> 12) & 63) | 128; + g[e++] = ((h >> 6) & 63) | 128; + g[e++] = (h & 63) | 128; + continue; + } else f--; + } + if (d) throw Error("Found an unpaired surrogate"); + h = 65533; + } + g[e++] = (h >> 12) | 224; + g[e++] = ((h >> 6) & 63) | 128; + } + g[e++] = (h & 63) | 128; + } + } + b = e === g.length ? g : g.subarray(0, e); + } + M(a.h, 8 * c + 2); + M(a.h, b.length); + N(a, a.h.end()); + N(a, b); + } + }, + ), + Ec = Ac( + function (a, b, c, d, e) { + if (2 !== a.i) return !1; + b = Qb(b, c, d); + c = a.h.j; + d = ob(a.h) >>> 0; + var g = a.h.h + d, + f = g - c; + 0 >= f && ((a.h.j = g), e(b, a, void 0, void 0, void 0), (f = g - a.h.h)); + if (f) + throw Error( + "Message parsing ended unexpectedly. Expected to read " + + (d + + " bytes, instead read " + + (d - f) + + " bytes, either the data ended unexpectedly or the message misreported its own length"), + ); + a.h.h = g; + a.h.j = c; + return !0; + }, + function (a, b, c, d, e) { + b = Ob(b, d, c); + if (null != b) + for (d = 0; d < b.length; d++) { + var g = a; + M(g.h, 8 * c + 2); + var f = g.h.end(); + N(g, f); + f.push(g.i); + g = f; + e(b[d], a); + f = a; + var h = g.pop(); + for (h = f.i + f.h.length() - h; 127 < h; ) g.push((h & 127) | 128), (h >>>= 7), f.i++; + g.push(h); + f.i++; + } + }, + ); + function Fc(a) { + return function (b, c) { + a: { + if (wb.length) { + var d = wb.pop(); + d.setOptions(c); + nb(d.h, b, c); + b = d; + } else b = new tb(b, c); + try { + var e = hc(a); + var g = ic(new e.P(), b, e); + break a; + } finally { + (e = b.h), + (e.i = null), + (e.m = !1), + (e.l = 0), + (e.j = 0), + (e.h = 0), + (e.S = !1), + (b.l = -1), + (b.i = -1), + 100 > wb.length && wb.push(b); + } + g = void 0; + } + return g; + }; + } + function Gc(a) { + return function () { + var b = new xb(); + rc(this, b, qc(a)); + N(b, b.h.end()); + for (var c = new Uint8Array(b.i), d = b.j, e = d.length, g = 0, f = 0; f < e; f++) { + var h = d[f]; + c.set(h, g); + g += h.length; + } + b.j = [c]; + return c; + }; + } + function Z(a) { + X.call(this, a); + } + na(Z, X); + var Hc = [Z, 1, Cc, 2, Y, 3, Dc, 4, Dc]; + Z.prototype.l = Gc(Hc); + function Ic(a) { + X.call(this, a, -1, Jc); + } + na(Ic, X); + Ic.prototype.addClassification = function (a, b) { + Qb(this, 1, Z, a, b); + return this; + }; + var Jc = [1], + Kc = Fc([Ic, 1, Ec, Hc]); + function Lc(a) { + X.call(this, a); + } + na(Lc, X); + var Mc = [Lc, 1, Y, 2, Y, 3, Y, 4, Y, 5, Y]; + Lc.prototype.l = Gc(Mc); + function Nc(a) { + X.call(this, a, -1, Oc); + } + na(Nc, X); + var Oc = [1], + Pc = Fc([Nc, 1, Ec, Mc]); + function Qc(a) { + X.call(this, a); + } + na(Qc, X); + var Rc = [Qc, 1, Y, 2, Y, 3, Y, 4, Y, 5, Y, 6, Bc], + Sc = Fc(Rc); + Qc.prototype.l = Gc(Rc); + function Tc(a, b, c) { + c = a.createShader(0 === c ? a.VERTEX_SHADER : a.FRAGMENT_SHADER); + a.shaderSource(c, b); + a.compileShader(c); + if (!a.getShaderParameter(c, a.COMPILE_STATUS)) + throw Error("Could not compile WebGL shader.\n\n" + a.getShaderInfoLog(c)); + return c; + } + function Uc(a) { + return Ob(a, Z, 1).map(function (b) { + var c = S(b, 1); + return { + index: null == c ? 0 : c, + qa: W(b, 2), + label: null != S(b, 3) ? Rb(S(b, 3), "") : void 0, + displayName: null != S(b, 4) ? Rb(S(b, 4), "") : void 0, + }; + }); + } + function Vc(a) { + return { x: W(a, 1), y: W(a, 2), z: W(a, 3), visibility: null != Mb(a, 4) ? W(a, 4) : void 0 }; + } + function Wc(a, b) { + this.i = a; + this.h = b; + this.m = 0; + } + function Xc(a, b, c) { + Yc(a, b); + if ("function" === typeof a.h.canvas.transferToImageBitmap) + return Promise.resolve(a.h.canvas.transferToImageBitmap()); + if (c) return Promise.resolve(a.h.canvas); + if ("function" === typeof createImageBitmap) return createImageBitmap(a.h.canvas); + void 0 === a.j && (a.j = document.createElement("canvas")); + return new Promise(function (d) { + a.j.height = a.h.canvas.height; + a.j.width = a.h.canvas.width; + a.j.getContext("2d", {}).drawImage(a.h.canvas, 0, 0, a.h.canvas.width, a.h.canvas.height); + d(a.j); + }); + } + function Yc(a, b) { + var c = a.h; + if (void 0 === a.s) { + var d = Tc( + c, + "\n attribute vec2 aVertex;\n attribute vec2 aTex;\n varying vec2 vTex;\n void main(void) {\n gl_Position = vec4(aVertex, 0.0, 1.0);\n vTex = aTex;\n }", + 0, + ), + e = Tc( + c, + "\n precision mediump float;\n varying vec2 vTex;\n uniform sampler2D sampler0;\n void main(){\n gl_FragColor = texture2D(sampler0, vTex);\n }", + 1, + ), + g = c.createProgram(); + c.attachShader(g, d); + c.attachShader(g, e); + c.linkProgram(g); + if (!c.getProgramParameter(g, c.LINK_STATUS)) + throw Error("Could not compile WebGL program.\n\n" + c.getProgramInfoLog(g)); + d = a.s = g; + c.useProgram(d); + e = c.getUniformLocation(d, "sampler0"); + a.l = { O: c.getAttribLocation(d, "aVertex"), N: c.getAttribLocation(d, "aTex"), ya: e }; + a.v = c.createBuffer(); + c.bindBuffer(c.ARRAY_BUFFER, a.v); + c.enableVertexAttribArray(a.l.O); + c.vertexAttribPointer(a.l.O, 2, c.FLOAT, !1, 0, 0); + c.bufferData(c.ARRAY_BUFFER, new Float32Array([-1, -1, -1, 1, 1, 1, 1, -1]), c.STATIC_DRAW); + c.bindBuffer(c.ARRAY_BUFFER, null); + a.u = c.createBuffer(); + c.bindBuffer(c.ARRAY_BUFFER, a.u); + c.enableVertexAttribArray(a.l.N); + c.vertexAttribPointer(a.l.N, 2, c.FLOAT, !1, 0, 0); + c.bufferData(c.ARRAY_BUFFER, new Float32Array([0, 1, 0, 0, 1, 0, 1, 1]), c.STATIC_DRAW); + c.bindBuffer(c.ARRAY_BUFFER, null); + c.uniform1i(e, 0); + } + d = a.l; + c.useProgram(a.s); + c.canvas.width = b.width; + c.canvas.height = b.height; + c.viewport(0, 0, b.width, b.height); + c.activeTexture(c.TEXTURE0); + a.i.bindTexture2d(b.glName); + c.enableVertexAttribArray(d.O); + c.bindBuffer(c.ARRAY_BUFFER, a.v); + c.vertexAttribPointer(d.O, 2, c.FLOAT, !1, 0, 0); + c.enableVertexAttribArray(d.N); + c.bindBuffer(c.ARRAY_BUFFER, a.u); + c.vertexAttribPointer(d.N, 2, c.FLOAT, !1, 0, 0); + c.bindFramebuffer(c.DRAW_FRAMEBUFFER ? c.DRAW_FRAMEBUFFER : c.FRAMEBUFFER, null); + c.clearColor(0, 0, 0, 0); + c.clear(c.COLOR_BUFFER_BIT); + c.colorMask(!0, !0, !0, !0); + c.drawArrays(c.TRIANGLE_FAN, 0, 4); + c.disableVertexAttribArray(d.O); + c.disableVertexAttribArray(d.N); + c.bindBuffer(c.ARRAY_BUFFER, null); + a.i.bindTexture2d(0); + } + function Zc(a) { + this.h = a; + } + var $c = new Uint8Array([ + 0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 2, 1, 0, 10, 9, 1, 7, 0, 65, 0, 253, 15, 26, + 11, + ]); + function ad(a, b) { + return b + a; + } + function bd(a, b) { + window[a] = b; + } + function cd(a) { + var b = document.createElement("script"); + b.setAttribute("src", a); + b.setAttribute("crossorigin", "anonymous"); + return new Promise(function (c) { + b.addEventListener( + "load", + function () { + c(); + }, + !1, + ); + b.addEventListener( + "error", + function () { + c(); + }, + !1, + ); + document.body.appendChild(b); + }); + } + function dd() { + return E(function (a) { + switch (a.h) { + case 1: + return (a.s = 2), D(a, WebAssembly.instantiate($c), 4); + case 4: + a.h = 3; + a.s = 0; + break; + case 2: + return (a.s = 0), (a.l = null), a.return(!1); + case 3: + return a.return(!0); + } + }); + } + function ed(a) { + this.h = a; + this.listeners = {}; + this.l = {}; + this.L = {}; + this.s = {}; + this.v = {}; + this.M = this.u = this.ga = !0; + this.I = Promise.resolve(); + this.fa = ""; + this.D = {}; + this.locateFile = (a && a.locateFile) || ad; + if ("object" === typeof window) + var b = + window.location.pathname + .toString() + .substring(0, window.location.pathname.toString().lastIndexOf("/")) + "/"; + else if ("undefined" !== typeof location) + b = + location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf("/")) + + "/"; + else throw Error("solutions can only be loaded on a web page or in a web worker"); + this.ha = b; + if (a.options) { + b = A(Object.keys(a.options)); + for (var c = b.next(); !c.done; c = b.next()) { + c = c.value; + var d = a.options[c].default; + void 0 !== d && (this.l[c] = "function" === typeof d ? d() : d); + } + } + } + x = ed.prototype; + x.close = function () { + this.j && this.j.delete(); + return Promise.resolve(); + }; + function fd(a) { + var b, c, d, e, g, f, h, k, l, m, r; + return E(function (p) { + switch (p.h) { + case 1: + if (!a.ga) return p.return(); + b = + void 0 === a.h.files + ? [] + : "function" === typeof a.h.files + ? a.h.files(a.l) + : a.h.files; + return D(p, dd(), 2); + case 2: + c = p.i; + if ("object" === typeof window) + return ( + bd("createMediapipeSolutionsWasm", { locateFile: a.locateFile }), + bd("createMediapipeSolutionsPackedAssets", { locateFile: a.locateFile }), + (f = b.filter(function (n) { + return void 0 !== n.data; + })), + (h = b.filter(function (n) { + return void 0 === n.data; + })), + (k = Promise.all( + f.map(function (n) { + var q = gd(a, n.url); + if (void 0 !== n.path) { + var t = n.path; + q = q.then(function (w) { + a.overrideFile(t, w); + return Promise.resolve(w); + }); + } + return q; + }), + )), + (l = Promise.all( + h.map(function (n) { + return void 0 === n.simd || (n.simd && c) || (!n.simd && !c) + ? cd(a.locateFile(n.url, a.ha)) + : Promise.resolve(); + }), + ).then(function () { + var n, q, t; + return E(function (w) { + if (1 == w.h) + return ( + (n = window.createMediapipeSolutionsWasm), + (q = window.createMediapipeSolutionsPackedAssets), + (t = a), + D(w, n(q), 2) + ); + t.i = w.i; + w.h = 0; + }); + })), + (m = (function () { + return E(function (n) { + a.h.graph && a.h.graph.url + ? (n = D(n, gd(a, a.h.graph.url), 0)) + : ((n.h = 0), (n = void 0)); + return n; + }); + })()), + D(p, Promise.all([l, k, m]), 7) + ); + if ("function" !== typeof importScripts) + throw Error("solutions can only be loaded on a web page or in a web worker"); + d = b + .filter(function (n) { + return void 0 === n.simd || (n.simd && c) || (!n.simd && !c); + }) + .map(function (n) { + return a.locateFile(n.url, a.ha); + }); + importScripts.apply(null, ea(d)); + e = a; + return D(p, createMediapipeSolutionsWasm(Module), 6); + case 6: + e.i = p.i; + a.m = new OffscreenCanvas(1, 1); + a.i.canvas = a.m; + g = a.i.GL.createContext(a.m, { + antialias: !1, + alpha: !1, + va: "undefined" !== typeof WebGL2RenderingContext ? 2 : 1, + }); + a.i.GL.makeContextCurrent(g); + p.h = 4; + break; + case 7: + a.m = document.createElement("canvas"); + r = a.m.getContext("webgl2", {}); + if (!r && ((r = a.m.getContext("webgl", {})), !r)) + return ( + alert("Failed to create WebGL canvas context when passing video frame."), p.return() + ); + a.K = r; + a.i.canvas = a.m; + a.i.createContext(a.m, !0, !0, {}); + case 4: + (a.j = new a.i.SolutionWasm()), (a.ga = !1), (p.h = 0); + } + }); + } + function hd(a) { + var b, c, d, e, g, f, h, k; + return E(function (l) { + if (1 == l.h) { + if (a.h.graph && a.h.graph.url && a.fa === a.h.graph.url) return l.return(); + a.u = !0; + if (!a.h.graph || !a.h.graph.url) { + l.h = 2; + return; + } + a.fa = a.h.graph.url; + return D(l, gd(a, a.h.graph.url), 3); + } + 2 != l.h && ((b = l.i), a.j.loadGraph(b)); + c = A(Object.keys(a.D)); + for (d = c.next(); !d.done; d = c.next()) (e = d.value), a.j.overrideFile(e, a.D[e]); + a.D = {}; + if (a.h.listeners) + for (g = A(a.h.listeners), f = g.next(); !f.done; f = g.next()) (h = f.value), id(a, h); + k = a.l; + a.l = {}; + a.setOptions(k); + l.h = 0; + }); + } + x.reset = function () { + var a = this; + return E(function (b) { + a.j && (a.j.reset(), (a.s = {}), (a.v = {})); + b.h = 0; + }); + }; + x.setOptions = function (a, b) { + var c = this; + if ((b = b || this.h.options)) { + for ( + var d = [], e = [], g = {}, f = A(Object.keys(a)), h = f.next(); + !h.done; + g = { X: g.X, Y: g.Y }, h = f.next() + ) + if (((h = h.value), !(h in this.l && this.l[h] === a[h]))) { + this.l[h] = a[h]; + var k = b[h]; + void 0 !== k && + (k.onChange && + ((g.X = k.onChange), + (g.Y = a[h]), + d.push( + (function (l) { + return function () { + var m; + return E(function (r) { + if (1 == r.h) return D(r, l.X(l.Y), 2); + m = r.i; + !0 === m && (c.u = !0); + r.h = 0; + }); + }; + })(g), + )), + k.graphOptionXref && + ((h = Object.assign( + {}, + { calculatorName: "", calculatorIndex: 0 }, + k.graphOptionXref, + { + valueNumber: 1 === k.type ? a[h] : 0, + valueBoolean: 0 === k.type ? a[h] : !1, + valueString: 2 === k.type ? a[h] : "", + }, + )), + e.push(h))); + } + if (0 !== d.length || 0 !== e.length) + (this.u = !0), + (this.H = (void 0 === this.H ? [] : this.H).concat(e)), + (this.F = (void 0 === this.F ? [] : this.F).concat(d)); + } + }; + function jd(a) { + var b, c, d, e, g, f, h; + return E(function (k) { + switch (k.h) { + case 1: + if (!a.u) return k.return(); + if (!a.F) { + k.h = 2; + break; + } + b = A(a.F); + c = b.next(); + case 3: + if (c.done) { + k.h = 5; + break; + } + d = c.value; + return D(k, d(), 4); + case 4: + c = b.next(); + k.h = 3; + break; + case 5: + a.F = void 0; + case 2: + if (a.H) { + e = new a.i.GraphOptionChangeRequestList(); + g = A(a.H); + for (f = g.next(); !f.done; f = g.next()) (h = f.value), e.push_back(h); + a.j.changeOptions(e); + e.delete(); + a.H = void 0; + } + a.u = !1; + k.h = 0; + } + }); + } + x.initialize = function () { + var a = this; + return E(function (b) { + return 1 == b.h ? D(b, fd(a), 2) : 3 != b.h ? D(b, hd(a), 3) : D(b, jd(a), 0); + }); + }; + function gd(a, b) { + var c, d; + return E(function (e) { + if (b in a.L) return e.return(a.L[b]); + c = a.locateFile(b, ""); + d = fetch(c).then(function (g) { + return g.arrayBuffer(); + }); + a.L[b] = d; + return e.return(d); + }); + } + x.overrideFile = function (a, b) { + this.j ? this.j.overrideFile(a, b) : (this.D[a] = b); + }; + x.clearOverriddenFiles = function () { + this.D = {}; + this.j && this.j.clearOverriddenFiles(); + }; + x.send = function (a, b) { + var c = this, + d, + e, + g, + f, + h, + k, + l, + m, + r; + return E(function (p) { + switch (p.h) { + case 1: + if (!c.h.inputs) return p.return(); + d = 1e3 * (void 0 === b || null === b ? performance.now() : b); + return D(p, c.I, 2); + case 2: + return D(p, c.initialize(), 3); + case 3: + e = new c.i.PacketDataList(); + g = A(Object.keys(a)); + for (f = g.next(); !f.done; f = g.next()) + if (((h = f.value), (k = c.h.inputs[h]))) { + a: { + var n = a[h]; + switch (k.type) { + case "video": { + var q = c.s[k.stream]; + q || ((q = new Wc(c.i, c.K)), (c.s[k.stream] = q)); + 0 === q.m && (q.m = q.i.createTexture()); + if ("undefined" !== typeof HTMLVideoElement && n instanceof HTMLVideoElement) { + var t = n.videoWidth; + var w = n.videoHeight; + } else + "undefined" !== typeof HTMLImageElement && n instanceof HTMLImageElement + ? ((t = n.naturalWidth), (w = n.naturalHeight)) + : ((t = n.width), (w = n.height)); + w = { glName: q.m, width: t, height: w }; + t = q.h; + t.canvas.width = w.width; + t.canvas.height = w.height; + t.activeTexture(t.TEXTURE0); + q.i.bindTexture2d(q.m); + t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, t.RGBA, t.UNSIGNED_BYTE, n); + q.i.bindTexture2d(0); + q = w; + break a; + } + case "detections": + q = c.s[k.stream]; + q || ((q = new Zc(c.i)), (c.s[k.stream] = q)); + q.data || (q.data = new q.h.DetectionListData()); + q.data.reset(n.length); + for (w = 0; w < n.length; ++w) { + t = n[w]; + var v = q.data, + B = v.setBoundingBox, + J = w; + var I = t.la; + var u = new Qc(); + V(u, 1, I.sa); + V(u, 2, I.ta); + V(u, 3, I.height); + V(u, 4, I.width); + V(u, 5, I.rotation); + U(u, 6, I.pa); + I = u.l(); + B.call(v, J, I); + if (t.ea) + for (v = 0; v < t.ea.length; ++v) { + u = t.ea[v]; + B = q.data; + J = B.addNormalizedLandmark; + I = w; + u = Object.assign({}, u, { visibility: u.visibility ? u.visibility : 0 }); + var C = new Lc(); + V(C, 1, u.x); + V(C, 2, u.y); + V(C, 3, u.z); + u.visibility && V(C, 4, u.visibility); + u = C.l(); + J.call(B, I, u); + } + if (t.ba) + for (v = 0; v < t.ba.length; ++v) + (B = q.data), + (J = B.addClassification), + (I = w), + (u = t.ba[v]), + (C = new Z()), + V(C, 2, u.qa), + u.index && U(C, 1, u.index), + u.label && U(C, 3, u.label), + u.displayName && U(C, 4, u.displayName), + (u = C.l()), + J.call(B, I, u); + } + q = q.data; + break a; + default: + q = {}; + } + } + l = q; + m = k.stream; + switch (k.type) { + case "video": + e.pushTexture2d(Object.assign({}, l, { stream: m, timestamp: d })); + break; + case "detections": + r = l; + r.stream = m; + r.timestamp = d; + e.pushDetectionList(r); + break; + default: + throw Error("Unknown input config type: '" + k.type + "'"); + } + } + c.j.send(e); + return D(p, c.I, 4); + case 4: + e.delete(), (p.h = 0); + } + }); + }; + function kd(a, b, c) { + var d, e, g, f, h, k, l, m, r, p, n, q, t, w; + return E(function (v) { + switch (v.h) { + case 1: + if (!c) return v.return(b); + d = {}; + e = 0; + g = A(Object.keys(c)); + for (f = g.next(); !f.done; f = g.next()) + (h = f.value), + (k = c[h]), + "string" !== typeof k && "texture" === k.type && void 0 !== b[k.stream] && ++e; + 1 < e && (a.M = !1); + l = A(Object.keys(c)); + f = l.next(); + case 2: + if (f.done) { + v.h = 4; + break; + } + m = f.value; + r = c[m]; + if ("string" === typeof r) return (t = d), (w = m), D(v, ld(a, m, b[r]), 14); + p = b[r.stream]; + if ("detection_list" === r.type) { + if (p) { + var B = p.getRectList(); + for ( + var J = p.getLandmarksList(), I = p.getClassificationsList(), u = [], C = 0; + C < B.size(); + ++C + ) { + var T = Sc(B.get(C)), + od = W(T, 1), + pd = W(T, 2), + qd = W(T, 3), + rd = W(T, 4), + sd = W(T, 5, 0), + za = void 0; + za = void 0 === za ? 0 : za; + T = { + la: { sa: od, ta: pd, height: qd, width: rd, rotation: sd, pa: Rb(S(T, 6), za) }, + ea: Ob(Pc(J.get(C)), Lc, 1).map(Vc), + ba: Uc(Kc(I.get(C))), + }; + u.push(T); + } + B = u; + } else B = []; + d[m] = B; + v.h = 7; + break; + } + if ("proto_list" === r.type) { + if (p) { + B = Array(p.size()); + for (J = 0; J < p.size(); J++) B[J] = p.get(J); + p.delete(); + } else B = []; + d[m] = B; + v.h = 7; + break; + } + if (void 0 === p) { + v.h = 3; + break; + } + if ("float_list" === r.type) { + d[m] = p; + v.h = 7; + break; + } + if ("proto" === r.type) { + d[m] = p; + v.h = 7; + break; + } + if ("texture" !== r.type) throw Error("Unknown output config type: '" + r.type + "'"); + n = a.v[m]; + n || ((n = new Wc(a.i, a.K)), (a.v[m] = n)); + return D(v, Xc(n, p, a.M), 13); + case 13: + (q = v.i), (d[m] = q); + case 7: + r.transform && d[m] && (d[m] = r.transform(d[m])); + v.h = 3; + break; + case 14: + t[w] = v.i; + case 3: + f = l.next(); + v.h = 2; + break; + case 4: + return v.return(d); + } + }); + } + function ld(a, b, c) { + var d; + return E(function (e) { + return "number" === typeof c || c instanceof Uint8Array || c instanceof a.i.Uint8BlobList + ? e.return(c) + : c instanceof a.i.Texture2dDataOut + ? ((d = a.v[b]), d || ((d = new Wc(a.i, a.K)), (a.v[b] = d)), e.return(Xc(d, c, a.M))) + : e.return(void 0); + }); + } + function id(a, b) { + for ( + var c = b.name || "$", + d = [].concat(ea(b.wants)), + e = new a.i.StringList(), + g = A(b.wants), + f = g.next(); + !f.done; + f = g.next() + ) + e.push_back(f.value); + g = a.i.PacketListener.implement({ + onResults: function (h) { + for (var k = {}, l = 0; l < b.wants.length; ++l) k[d[l]] = h.get(l); + var m = a.listeners[c]; + m && + (a.I = kd(a, k, b.outs).then(function (r) { + r = m(r); + for (var p = 0; p < b.wants.length; ++p) { + var n = k[d[p]]; + "object" === typeof n && n.hasOwnProperty && Object.hasOwn(n, "delete") && n.delete(); + } + r && (a.I = r); + })); + }, + }); + a.j.attachMultiListener(e, g); + e.delete(); + } + x.onResults = function (a, b) { + this.listeners[b || "$"] = a; + }; + Aa("Solution", ed); + Aa("OptionType", { BOOL: 0, NUMBER: 1, ua: 2, 0: "BOOL", 1: "NUMBER", 2: "STRING" }); + function md(a) { + void 0 === a && (a = 0); + switch (a) { + case 1: + return "selfie_segmentation_landscape.tflite"; + default: + return "selfie_segmentation.tflite"; + } + } + function nd(a) { + var b = this; + a = a || {}; + this.h = new ed({ + locateFile: a.locateFile, + files: function (c) { + return [ + { simd: !0, url: "selfie_segmentation_solution_simd_wasm_bin.js" }, + { simd: !1, url: "selfie_segmentation_solution_wasm_bin.js" }, + { data: !0, url: md(c.modelSelection) }, + ]; + }, + graph: { url: "selfie_segmentation.binarypb" }, + listeners: [ + { + wants: ["segmentation_mask", "image_transformed"], + outs: { + image: { type: "texture", stream: "image_transformed" }, + segmentationMask: { type: "texture", stream: "segmentation_mask" }, + }, + }, + ], + inputs: { image: { type: "video", stream: "input_frames_gpu" } }, + options: { + useCpuInference: { + type: 0, + graphOptionXref: { + calculatorType: "InferenceCalculator", + fieldName: "use_cpu_inference", + }, + default: + "object" !== typeof window || void 0 === window.navigator + ? !1 + : "iPad Simulator;iPhone Simulator;iPod Simulator;iPad;iPhone;iPod" + .split(";") + .includes(navigator.platform) || + (navigator.userAgent.includes("Mac") && "ontouchend" in document), + }, + selfieMode: { + type: 0, + graphOptionXref: { + calculatorType: "GlScalerCalculator", + calculatorIndex: 1, + fieldName: "flip_horizontal", + }, + }, + modelSelection: { + type: 1, + graphOptionXref: { + calculatorType: "ConstantSidePacketCalculator", + calculatorName: "ConstantSidePacketCalculatorModelSelection", + fieldName: "int_value", + }, + onChange: function (c) { + var d, e, g; + return E(function (f) { + if (1 == f.h) + return ( + (d = md(c)), + (e = "third_party/mediapipe/modules/selfie_segmentation/" + d), + D(f, gd(b.h, d), 2) + ); + g = f.i; + b.h.overrideFile(e, g); + return f.return(!0); + }); + }, + }, + }, + }); + } + x = nd.prototype; + x.close = function () { + this.h.close(); + return Promise.resolve(); + }; + x.onResults = function (a) { + this.h.onResults(a); + }; + x.initialize = function () { + var a = this; + return E(function (b) { + return D(b, a.h.initialize(), 0); + }); + }; + x.reset = function () { + this.h.reset(); + }; + x.send = function (a) { + var b = this; + return E(function (c) { + return D(c, b.h.send(a), 0); + }); + }; + x.setOptions = function (a) { + this.h.setOptions(a); + }; + Aa("SelfieSegmentation", nd); + Aa("VERSION", "0.1.1675465747"); +}).call(this); diff --git a/public/mediapipe/selfie_segmentation/selfie_segmentation.tflite b/public/mediapipe/selfie_segmentation/selfie_segmentation.tflite new file mode 100644 index 0000000000000000000000000000000000000000..374c0720da42ded31584e5ec70bbb83217bfc2c5 GIT binary patch literal 249024 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
vd`9|6ousDD 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

*#e2h#rp2dRG%9mz-NDW=D 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 literal 0 HcmV?d00001 diff --git a/public/mediapipe/selfie_segmentation/selfie_segmentation_solution_simd_wasm_bin.data b/public/mediapipe/selfie_segmentation/selfie_segmentation_solution_simd_wasm_bin.data new file mode 100644 index 000000000..e69de29bb diff --git a/public/mediapipe/selfie_segmentation/selfie_segmentation_solution_simd_wasm_bin.js b/public/mediapipe/selfie_segmentation/selfie_segmentation_solution_simd_wasm_bin.js new file mode 100644 index 000000000..919700dbe --- /dev/null +++ b/public/mediapipe/selfie_segmentation/selfie_segmentation_solution_simd_wasm_bin.js @@ -0,0 +1,11354 @@ +var createMediapipeSolutionsWasm = (() => { + var _scriptDir = + typeof document !== "undefined" && document.currentScript + ? document.currentScript.src + : undefined; + if (typeof __filename !== "undefined") _scriptDir = _scriptDir || __filename; + return function (createMediapipeSolutionsWasm) { + createMediapipeSolutionsWasm = createMediapipeSolutionsWasm || {}; + + var Module = + typeof createMediapipeSolutionsWasm != "undefined" ? createMediapipeSolutionsWasm : {}; + var readyPromiseResolve, readyPromiseReject; + Module["ready"] = new Promise(function (resolve, reject) { + readyPromiseResolve = resolve; + readyPromiseReject = reject; + }); + [ + "_main", + "_fflush", + "___getTypeName", + "__embind_initialize_bindings", + "onRuntimeInitialized", + ].forEach((prop) => { + if (!Object.getOwnPropertyDescriptor(Module["ready"], prop)) { + Object.defineProperty(Module["ready"], prop, { + get: () => + abort( + "You are getting " + + prop + + " on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js", + ), + set: () => + abort( + "You are setting " + + prop + + " on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js", + ), + }); + } + }); + var moduleOverrides = Object.assign({}, Module); + var arguments_ = []; + var thisProgram = "./this.program"; + var quit_ = (status, toThrow) => { + throw toThrow; + }; + var ENVIRONMENT_IS_WEB = typeof window == "object"; + var ENVIRONMENT_IS_WORKER = typeof importScripts == "function"; + var ENVIRONMENT_IS_NODE = + typeof process == "object" && + typeof process.versions == "object" && + typeof process.versions.node == "string"; + var ENVIRONMENT_IS_SHELL = + !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; + if (Module["ENVIRONMENT"]) { + throw new Error( + "Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)", + ); + } + var scriptDirectory = ""; + function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; + } + var read_, readAsync, readBinary, setWindowTitle; + function logExceptionOnExit(e) { + if (e instanceof ExitStatus) return; + let toLog = e; + if (e && typeof e == "object" && e.stack) { + toLog = [e, e.stack]; + } + err("exiting due to exception: " + toLog); + } + if (ENVIRONMENT_IS_NODE) { + if (typeof process == "undefined" || !process.release || process.release.name !== "node") + throw new Error( + "not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)", + ); + var fs = require("fs"); + var nodePath = require("path"); + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = nodePath.dirname(scriptDirectory) + "/"; + } else { + scriptDirectory = __dirname + "/"; + } + read_ = (filename, binary) => { + filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename); + return fs.readFileSync(filename, binary ? undefined : "utf8"); + }; + readBinary = (filename) => { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert(ret.buffer); + return ret; + }; + readAsync = (filename, onload, onerror) => { + filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename); + fs.readFile(filename, function (err, data) { + if (err) onerror(err); + else onload(data.buffer); + }); + }; + if (process["argv"].length > 1) { + thisProgram = process["argv"][1].replace(/\\/g, "/"); + } + arguments_ = process["argv"].slice(2); + process["on"]("uncaughtException", function (ex) { + if (!(ex instanceof ExitStatus)) { + throw ex; + } + }); + process["on"]("unhandledRejection", function (reason) { + throw reason; + }); + quit_ = (status, toThrow) => { + if (keepRuntimeAlive()) { + process["exitCode"] = status; + throw toThrow; + } + logExceptionOnExit(toThrow); + process["exit"](status); + }; + Module["inspect"] = function () { + return "[Emscripten Module object]"; + }; + } else if (ENVIRONMENT_IS_SHELL) { + if ( + (typeof process == "object" && typeof require === "function") || + typeof window == "object" || + typeof importScripts == "function" + ) + throw new Error( + "not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)", + ); + if (typeof read != "undefined") { + read_ = function shell_read(f) { + return read(f); + }; + } + readBinary = function readBinary(f) { + let data; + if (typeof readbuffer == "function") { + return new Uint8Array(readbuffer(f)); + } + data = read(f, "binary"); + assert(typeof data == "object"); + return data; + }; + readAsync = function readAsync(f, onload, onerror) { + setTimeout(() => onload(readBinary(f)), 0); + }; + if (typeof scriptArgs != "undefined") { + arguments_ = scriptArgs; + } else if (typeof arguments != "undefined") { + arguments_ = arguments; + } + if (typeof quit == "function") { + quit_ = (status, toThrow) => { + logExceptionOnExit(toThrow); + quit(status); + }; + } + if (typeof print != "undefined") { + if (typeof console == "undefined") console = {}; + console.log = print; + console.warn = console.error = typeof printErr != "undefined" ? printErr : print; + } + } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = self.location.href; + } else if (typeof document != "undefined" && document.currentScript) { + scriptDirectory = document.currentScript.src; + } + if (_scriptDir) { + scriptDirectory = _scriptDir; + } + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr( + 0, + scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1, + ); + } else { + scriptDirectory = ""; + } + if (!(typeof window == "object" || typeof importScripts == "function")) + throw new Error( + "not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)", + ); + { + read_ = (url) => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.send(null); + return xhr.responseText; + }; + if (ENVIRONMENT_IS_WORKER) { + readBinary = (url) => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); + return new Uint8Array(xhr.response); + }; + } + readAsync = (url, onload, onerror) => { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = () => { + if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + }; + } + setWindowTitle = (title) => (document.title = title); + } else { + throw new Error("environment detection error"); + } + var out = Module["print"] || console.log.bind(console); + var err = Module["printErr"] || console.warn.bind(console); + Object.assign(Module, moduleOverrides); + moduleOverrides = null; + checkIncomingModuleAPI(); + if (Module["arguments"]) arguments_ = Module["arguments"]; + legacyModuleProp("arguments", "arguments_"); + if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; + legacyModuleProp("thisProgram", "thisProgram"); + if (Module["quit"]) quit_ = Module["quit"]; + legacyModuleProp("quit", "quit_"); + assert( + typeof Module["memoryInitializerPrefixURL"] == "undefined", + "Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead", + ); + assert( + typeof Module["pthreadMainPrefixURL"] == "undefined", + "Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead", + ); + assert( + typeof Module["cdInitializerPrefixURL"] == "undefined", + "Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead", + ); + assert( + typeof Module["filePackagePrefixURL"] == "undefined", + "Module.filePackagePrefixURL option was removed, use Module.locateFile instead", + ); + assert( + typeof Module["read"] == "undefined", + "Module.read option was removed (modify read_ in JS)", + ); + assert( + typeof Module["readAsync"] == "undefined", + "Module.readAsync option was removed (modify readAsync in JS)", + ); + assert( + typeof Module["readBinary"] == "undefined", + "Module.readBinary option was removed (modify readBinary in JS)", + ); + assert( + typeof Module["setWindowTitle"] == "undefined", + "Module.setWindowTitle option was removed (modify setWindowTitle in JS)", + ); + assert( + typeof Module["TOTAL_MEMORY"] == "undefined", + "Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY", + ); + legacyModuleProp("read", "read_"); + legacyModuleProp("readAsync", "readAsync"); + legacyModuleProp("readBinary", "readBinary"); + legacyModuleProp("setWindowTitle", "setWindowTitle"); + assert( + !ENVIRONMENT_IS_SHELL, + "shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable.", + ); + var POINTER_SIZE = 4; + function legacyModuleProp(prop, newName) { + if (!Object.getOwnPropertyDescriptor(Module, prop)) { + Object.defineProperty(Module, prop, { + configurable: true, + get: function () { + abort( + "Module." + + prop + + " has been replaced with plain " + + newName + + " (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)", + ); + }, + }); + } + } + function ignoredModuleProp(prop) { + if (Object.getOwnPropertyDescriptor(Module, prop)) { + abort( + "`Module." + + prop + + "` was supplied but `" + + prop + + "` not included in INCOMING_MODULE_JS_API", + ); + } + } + function isExportedByForceFilesystem(name) { + return ( + name === "FS_createPath" || + name === "FS_createDataFile" || + name === "FS_createPreloadedFile" || + name === "FS_unlink" || + name === "addRunDependency" || + name === "FS_createLazyFile" || + name === "FS_createDevice" || + name === "removeRunDependency" + ); + } + function missingLibrarySymbol(sym) { + if (typeof globalThis !== "undefined" && !Object.getOwnPropertyDescriptor(globalThis, sym)) { + Object.defineProperty(globalThis, sym, { + configurable: true, + get: function () { + var msg = + "`" + + sym + + "` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line"; + var librarySymbol = sym; + if (!librarySymbol.startsWith("_")) { + librarySymbol = "$" + sym; + } + msg += " (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE=" + librarySymbol + ")"; + if (isExportedByForceFilesystem(sym)) { + msg += + ". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"; + } + warnOnce(msg); + return undefined; + }, + }); + } + } + function unexportedRuntimeSymbol(sym) { + if (!Object.getOwnPropertyDescriptor(Module, sym)) { + Object.defineProperty(Module, sym, { + configurable: true, + get: function () { + var msg = + "'" + sym + "' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"; + if (isExportedByForceFilesystem(sym)) { + msg += + ". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"; + } + abort(msg); + }, + }); + } + } + var wasmBinary; + if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; + legacyModuleProp("wasmBinary", "wasmBinary"); + var noExitRuntime = Module["noExitRuntime"] || true; + legacyModuleProp("noExitRuntime", "noExitRuntime"); + if (typeof WebAssembly != "object") { + abort("no native wasm support detected"); + } + var wasmMemory; + var ABORT = false; + var EXITSTATUS; + function assert(condition, text) { + if (!condition) { + abort("Assertion failed" + (text ? ": " + text : "")); + } + } + var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf8") : undefined; + function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; + if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { + return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)); + } + var str = ""; + while (idx < endPtr) { + var u0 = heapOrArray[idx++]; + if (!(u0 & 128)) { + str += String.fromCharCode(u0); + continue; + } + var u1 = heapOrArray[idx++] & 63; + if ((u0 & 224) == 192) { + str += String.fromCharCode(((u0 & 31) << 6) | u1); + continue; + } + var u2 = heapOrArray[idx++] & 63; + if ((u0 & 240) == 224) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; + } else { + if ((u0 & 248) != 240) + warnOnce( + "Invalid UTF-8 leading byte " + + ptrToString(u0) + + " encountered when deserializing a UTF-8 string in wasm memory to a JS string!", + ); + u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (heapOrArray[idx++] & 63); + } + if (u0 < 65536) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 65536; + str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023)); + } + } + return str; + } + function UTF8ToString(ptr, maxBytesToRead) { + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""; + } + function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = (65536 + ((u & 1023) << 10)) | (u1 & 1023); + } + if (u <= 127) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 192 | (u >> 6); + heap[outIdx++] = 128 | (u & 63); + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 224 | (u >> 12); + heap[outIdx++] = 128 | ((u >> 6) & 63); + heap[outIdx++] = 128 | (u & 63); + } else { + if (outIdx + 3 >= endIdx) break; + if (u > 1114111) + warnOnce( + "Invalid Unicode code point " + + ptrToString(u) + + " encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).", + ); + heap[outIdx++] = 240 | (u >> 18); + heap[outIdx++] = 128 | ((u >> 12) & 63); + heap[outIdx++] = 128 | ((u >> 6) & 63); + heap[outIdx++] = 128 | (u & 63); + } + } + heap[outIdx] = 0; + return outIdx - startIdx; + } + function stringToUTF8(str, outPtr, maxBytesToWrite) { + assert( + typeof maxBytesToWrite == "number", + "stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!", + ); + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); + } + function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var c = str.charCodeAt(i); + if (c <= 127) { + len++; + } else if (c <= 2047) { + len += 2; + } else if (c >= 55296 && c <= 57343) { + len += 4; + ++i; + } else { + len += 3; + } + } + return len; + } + var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + function updateGlobalBufferAndViews(buf) { + buffer = buf; + Module["HEAP8"] = HEAP8 = new Int8Array(buf); + Module["HEAP16"] = HEAP16 = new Int16Array(buf); + Module["HEAP32"] = HEAP32 = new Int32Array(buf); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(buf); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(buf); + Module["HEAPF32"] = HEAPF32 = new Float32Array(buf); + Module["HEAPF64"] = HEAPF64 = new Float64Array(buf); + } + var STACK_SIZE = 65536; + if (Module["STACK_SIZE"]) + assert( + STACK_SIZE === Module["STACK_SIZE"], + "the stack size can no longer be determined at runtime", + ); + var INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 16777216; + legacyModuleProp("INITIAL_MEMORY", "INITIAL_MEMORY"); + assert( + INITIAL_MEMORY >= STACK_SIZE, + "INITIAL_MEMORY should be larger than STACK_SIZE, was " + + INITIAL_MEMORY + + "! (STACK_SIZE=" + + STACK_SIZE + + ")", + ); + assert( + typeof Int32Array != "undefined" && + typeof Float64Array !== "undefined" && + Int32Array.prototype.subarray != undefined && + Int32Array.prototype.set != undefined, + "JS engine does not provide full typed array support", + ); + assert( + !Module["wasmMemory"], + "Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally", + ); + assert( + INITIAL_MEMORY == 16777216, + "Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically", + ); + var wasmTable; + function writeStackCookie() { + var max = _emscripten_stack_get_end(); + assert((max & 3) == 0); + if (max == 0) { + max += 4; + } + HEAPU32[max >> 2] = 34821223; + HEAPU32[(max + 4) >> 2] = 2310721022; + HEAPU32[0] = 1668509029; + } + function checkStackCookie() { + if (ABORT) return; + var max = _emscripten_stack_get_end(); + if (max == 0) { + max += 4; + } + var cookie1 = HEAPU32[max >> 2]; + var cookie2 = HEAPU32[(max + 4) >> 2]; + if (cookie1 != 34821223 || cookie2 != 2310721022) { + abort( + "Stack overflow! Stack cookie has been overwritten at " + + ptrToString(max) + + ", expected hex dwords 0x89BACDFE and 0x2135467, but received " + + ptrToString(cookie2) + + " " + + ptrToString(cookie1), + ); + } + if (HEAPU32[0] !== 1668509029) { + abort("Runtime error: The application has corrupted its heap memory area (address zero)!"); + } + } + (function () { + var h16 = new Int16Array(1); + var h8 = new Int8Array(h16.buffer); + h16[0] = 25459; + if (h8[0] !== 115 || h8[1] !== 99) + throw "Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"; + })(); + var __ATPRERUN__ = []; + var __ATINIT__ = []; + var __ATEXIT__ = []; + var __ATPOSTRUN__ = []; + var runtimeInitialized = false; + function keepRuntimeAlive() { + return noExitRuntime; + } + function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); + } + function initRuntime() { + assert(!runtimeInitialized); + runtimeInitialized = true; + checkStackCookie(); + if (!Module["noFSInit"] && !FS.init.initialized) FS.init(); + FS.ignorePermissions = false; + TTY.init(); + callRuntimeCallbacks(__ATINIT__); + } + function postRun() { + checkStackCookie(); + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); + } + function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); + } + function addOnInit(cb) { + __ATINIT__.unshift(cb); + } + function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); + } + assert( + Math.imul, + "This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill", + ); + assert( + Math.fround, + "This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill", + ); + assert( + Math.clz32, + "This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill", + ); + assert( + Math.trunc, + "This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill", + ); + var runDependencies = 0; + var runDependencyWatcher = null; + var dependenciesFulfilled = null; + var runDependencyTracking = {}; + function getUniqueRunDependency(id) { + var orig = id; + while (1) { + if (!runDependencyTracking[id]) return id; + id = orig + Math.random(); + } + } + function addRunDependency(id) { + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (id) { + assert(!runDependencyTracking[id]); + runDependencyTracking[id] = 1; + if (runDependencyWatcher === null && typeof setInterval != "undefined") { + runDependencyWatcher = setInterval(function () { + if (ABORT) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + return; + } + var shown = false; + for (var dep in runDependencyTracking) { + if (!shown) { + shown = true; + err("still waiting on run dependencies:"); + } + err("dependency: " + dep); + } + if (shown) { + err("(end of list)"); + } + }, 1e4); + } + } else { + err("warning: run dependency added without ID"); + } + } + function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (id) { + assert(runDependencyTracking[id]); + delete runDependencyTracking[id]; + } else { + err("warning: run dependency removed without ID"); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } + } + function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what); + } + what = "Aborted(" + what + ")"; + err(what); + ABORT = true; + EXITSTATUS = 1; + var e = new WebAssembly.RuntimeError(what); + readyPromiseReject(e); + throw e; + } + var dataURIPrefix = "data:application/octet-stream;base64,"; + function isDataURI(filename) { + return filename.startsWith(dataURIPrefix); + } + function isFileURI(filename) { + return filename.startsWith("file://"); + } + function createExportWrapper(name, fixedasm) { + return function () { + var displayName = name; + var asm = fixedasm; + if (!fixedasm) { + asm = Module["asm"]; + } + assert( + runtimeInitialized, + "native function `" + displayName + "` called before runtime initialization", + ); + if (!asm[name]) { + assert(asm[name], "exported native function `" + displayName + "` not found"); + } + return asm[name].apply(null, arguments); + }; + } + var wasmBinaryFile; + wasmBinaryFile = "selfie_segmentation_solution_simd_wasm_bin.wasm"; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } + function getBinary(file) { + try { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + if (readBinary) { + return readBinary(file); + } + throw "both async and sync fetching of the wasm failed"; + } catch (err) { + abort(err); + } + } + function getBinaryPromise() { + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { + if (typeof fetch == "function" && !isFileURI(wasmBinaryFile)) { + return fetch(wasmBinaryFile, { credentials: "same-origin" }) + .then(function (response) { + if (!response["ok"]) { + throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"; + } + return response["arrayBuffer"](); + }) + .catch(function () { + return getBinary(wasmBinaryFile); + }); + } else { + if (readAsync) { + return new Promise(function (resolve, reject) { + readAsync( + wasmBinaryFile, + function (response) { + resolve(new Uint8Array(response)); + }, + reject, + ); + }); + } + } + } + return Promise.resolve().then(function () { + return getBinary(wasmBinaryFile); + }); + } + function createWasm() { + var info = { env: asmLibraryArg, wasi_snapshot_preview1: asmLibraryArg }; + function receiveInstance(instance, module) { + var exports = instance.exports; + Module["asm"] = exports; + wasmMemory = Module["asm"]["memory"]; + assert(wasmMemory, "memory not found in wasm exports"); + updateGlobalBufferAndViews(wasmMemory.buffer); + wasmTable = Module["asm"]["__indirect_function_table"]; + assert(wasmTable, "table not found in wasm exports"); + addOnInit(Module["asm"]["__wasm_call_ctors"]); + removeRunDependency("wasm-instantiate"); + } + addRunDependency("wasm-instantiate"); + var trueModule = Module; + function receiveInstantiationResult(result) { + assert( + Module === trueModule, + "the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?", + ); + trueModule = null; + receiveInstance(result["instance"]); + } + function instantiateArrayBuffer(receiver) { + return getBinaryPromise() + .then(function (binary) { + return WebAssembly.instantiate(binary, info); + }) + .then(function (instance) { + return instance; + }) + .then(receiver, function (reason) { + err("failed to asynchronously prepare wasm: " + reason); + if (isFileURI(wasmBinaryFile)) { + err( + "warning: Loading from a file URI (" + + wasmBinaryFile + + ") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing", + ); + } + abort(reason); + }); + } + function instantiateAsync() { + if ( + !wasmBinary && + typeof WebAssembly.instantiateStreaming == "function" && + !isDataURI(wasmBinaryFile) && + !isFileURI(wasmBinaryFile) && + !ENVIRONMENT_IS_NODE && + typeof fetch == "function" + ) { + return fetch(wasmBinaryFile, { credentials: "same-origin" }).then(function (response) { + var result = WebAssembly.instantiateStreaming(response, info); + return result.then(receiveInstantiationResult, function (reason) { + err("wasm streaming compile failed: " + reason); + err("falling back to ArrayBuffer instantiation"); + return instantiateArrayBuffer(receiveInstantiationResult); + }); + }); + } else { + return instantiateArrayBuffer(receiveInstantiationResult); + } + } + if (Module["instantiateWasm"]) { + try { + var exports = Module["instantiateWasm"](info, receiveInstance); + return exports; + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + readyPromiseReject(e); + } + } + instantiateAsync().catch(readyPromiseReject); + return {}; + } + var tempDouble; + var tempI64; + var ASM_CONSTS = { + 512548: ($0) => { + const canvas = Emval.toValue($0); + const context = canvas.getContext("webgpu"); + return JsValStore.add(context.getCurrentTexture()); + }, + 512683: ($0, $1, $2, $3, $4) => { + const drawable = Emval.toValue($0); + const device = JsValStore.get($1); + const texture = JsValStore.get($2); + const width = $3; + const height = $4; + device.queue.copyExternalImageToTexture({ source: drawable }, { texture: texture }, [ + width, + height, + ]); + }, + 512934: ($0, $1, $2, $3) => { + const sourceExtTex = Emval.toValue($0); + const device = JsValStore.get($1); + const sampler = JsValStore.get($2); + const bgLayout = JsValStore.get($3); + const bindGroup = device.createBindGroup({ + layout: bgLayout, + entries: [ + { binding: 0, resource: sampler }, + { binding: 1, resource: sourceExtTex }, + ], + }); + return JsValStore.add(bindGroup); + }, + 513282: ($0, $1) => { + const inputArray = Emval.toValue($0); + const output = Emval.toValue($1); + const ctx = output.getContext("2d"); + const image_data = new ImageData(inputArray, output.width, output.height); + ctx.putImageData(image_data, 0, 0); + }, + 513506: ($0, $1) => { + const input = Emval.toValue($0); + const outputArray = Emval.toValue($1); + const ctx = input.getContext("2d"); + const data = ctx.getImageData(0, 0, input.width, input.height); + outputArray.set(data.data); + }, + 513710: ($0, $1) => { + const input = Emval.toValue($0); + const output = Emval.toValue($1); + const ctx = output.getContext("2d"); + ctx.drawImage(input, 0, 0); + }, + 513846: () => { + return !!Module["preinitializedWebGPUDevice"]; + }, + 513897: () => { + let init_once = true; + if (init_once) { + const cachedFindCanvasEventTarget = findCanvasEventTarget; + if (typeof cachedFindCanvasEventTarget !== "function") { + if (typeof console !== "undefined") { + console.error( + "Expected Emscripten global function " + + '"findCanvasEventTarget" not found. WebGL context creation ' + + "may fail.", + ); + } + return; + } + findCanvasEventTarget = function (target) { + if (target == 0) { + if (Module && Module.canvas) { + return Module.canvas; + } else if (Module && Module.canvasCssSelector) { + return cachedFindCanvasEventTarget(Module.canvasCssSelector); + } + if (typeof console !== "undefined") { + console.warn( + "Module properties canvas and canvasCssSelector not " + + "found during WebGL context creation.", + ); + } + } + return cachedFindCanvasEventTarget(target); + }; + init_once = false; + } + }, + 514682: () => { + return typeof wasmOffsetConverter !== "undefined"; + }, + }; + function mediapipe_import_external_texture(device_handle, source_handle) { + const device = WebGPU.mgrDevice.get(device_handle); + const source = Emval.toValue(source_handle); + const externalTexture = device.importExternalTexture({ source: source }); + return Emval.toHandle(externalTexture); + } + function mediapipe_create_utility_canvas2d() { + const canvas = document.createElement("canvas"); + canvas.style.display = "none"; + canvas.id = "canvas_2d"; + document.body.appendChild(canvas); + return Emval.toHandle(canvas); + } + function HaveOffsetConverter() { + return typeof wasmOffsetConverter !== "undefined"; + } + function _emscripten_set_main_loop_timing(mode, value) { + Browser.mainLoop.timingMode = mode; + Browser.mainLoop.timingValue = value; + if (!Browser.mainLoop.func) { + err( + "emscripten_set_main_loop_timing: Cannot set timing mode for main loop since a main loop does not exist! Call emscripten_set_main_loop first to set one up.", + ); + return 1; + } + if (!Browser.mainLoop.running) { + Browser.mainLoop.running = true; + } + if (mode == 0) { + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setTimeout() { + var timeUntilNextTick = + Math.max(0, Browser.mainLoop.tickStartTime + value - _emscripten_get_now()) | 0; + setTimeout(Browser.mainLoop.runner, timeUntilNextTick); + }; + Browser.mainLoop.method = "timeout"; + } else if (mode == 1) { + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_rAF() { + Browser.requestAnimationFrame(Browser.mainLoop.runner); + }; + Browser.mainLoop.method = "rAF"; + } else if (mode == 2) { + if (typeof setImmediate == "undefined") { + var setImmediates = []; + var emscriptenMainLoopMessageId = "setimmediate"; + var Browser_setImmediate_messageHandler = (event) => { + if ( + event.data === emscriptenMainLoopMessageId || + event.data.target === emscriptenMainLoopMessageId + ) { + event.stopPropagation(); + setImmediates.shift()(); + } + }; + addEventListener("message", Browser_setImmediate_messageHandler, true); + setImmediate = function Browser_emulated_setImmediate(func) { + setImmediates.push(func); + if (ENVIRONMENT_IS_WORKER) { + if (Module["setImmediates"] === undefined) Module["setImmediates"] = []; + Module["setImmediates"].push(func); + postMessage({ target: emscriptenMainLoopMessageId }); + } else postMessage(emscriptenMainLoopMessageId, "*"); + }; + } + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setImmediate() { + setImmediate(Browser.mainLoop.runner); + }; + Browser.mainLoop.method = "immediate"; + } + return 0; + } + var _emscripten_get_now; + if (ENVIRONMENT_IS_NODE) { + _emscripten_get_now = () => { + var t = process["hrtime"](); + return t[0] * 1e3 + t[1] / 1e6; + }; + } else _emscripten_get_now = () => performance.now(); + function _emscripten_webgl_do_commit_frame() { + if (!GL.currentContext || !GL.currentContext.GLctx) { + return -3; + } + if (GL.currentContext.defaultFbo) { + GL.blitOffscreenFramebuffer(GL.currentContext); + return 0; + } + if (!GL.currentContext.attributes.explicitSwapControl) { + return -3; + } + return 0; + } + function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; + } + var PATH = { + isAbs: (path) => path.charAt(0) === "/", + splitPath: (filename) => { + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^/]+?|)(\.[^./]*|))(?:[/]*)$/; + return splitPathRe.exec(filename).slice(1); + }, + normalizeArray: (parts, allowAboveRoot) => { + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === ".") { + parts.splice(i, 1); + } else if (last === "..") { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + if (allowAboveRoot) { + for (; up; up--) { + parts.unshift(".."); + } + } + return parts; + }, + normalize: (path) => { + var isAbsolute = PATH.isAbs(path), + trailingSlash = path.substr(-1) === "/"; + path = PATH.normalizeArray( + path.split("/").filter((p) => !!p), + !isAbsolute, + ).join("/"); + if (!path && !isAbsolute) { + path = "."; + } + if (path && trailingSlash) { + path += "/"; + } + return (isAbsolute ? "/" : "") + path; + }, + dirname: (path) => { + var result = PATH.splitPath(path), + root = result[0], + dir = result[1]; + if (!root && !dir) { + return "."; + } + if (dir) { + dir = dir.substr(0, dir.length - 1); + } + return root + dir; + }, + basename: (path) => { + if (path === "/") return "/"; + path = PATH.normalize(path); + path = path.replace(/\/$/, ""); + var lastSlash = path.lastIndexOf("/"); + if (lastSlash === -1) return path; + return path.substr(lastSlash + 1); + }, + join: function () { + var paths = Array.prototype.slice.call(arguments); + return PATH.normalize(paths.join("/")); + }, + join2: (l, r) => { + return PATH.normalize(l + "/" + r); + }, + }; + function getRandomDevice() { + if (typeof crypto == "object" && typeof crypto["getRandomValues"] == "function") { + var randomBuffer = new Uint8Array(1); + return () => { + crypto.getRandomValues(randomBuffer); + return randomBuffer[0]; + }; + } else if (ENVIRONMENT_IS_NODE) { + try { + var crypto_module = require("crypto"); + return () => crypto_module["randomBytes"](1)[0]; + } catch (e) {} + } + return () => + abort( + "no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };", + ); + } + var PATH_FS = { + resolve: function () { + var resolvedPath = "", + resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = i >= 0 ? arguments[i] : FS.cwd(); + if (typeof path != "string") { + throw new TypeError("Arguments to path.resolve must be strings"); + } else if (!path) { + return ""; + } + resolvedPath = path + "/" + resolvedPath; + resolvedAbsolute = PATH.isAbs(path); + } + resolvedPath = PATH.normalizeArray( + resolvedPath.split("/").filter((p) => !!p), + !resolvedAbsolute, + ).join("/"); + return (resolvedAbsolute ? "/" : "") + resolvedPath || "."; + }, + relative: (from, to) => { + from = PATH_FS.resolve(from).substr(1); + to = PATH_FS.resolve(to).substr(1); + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== "") break; + } + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== "") break; + } + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + var fromParts = trim(from.split("/")); + var toParts = trim(to.split("/")); + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push(".."); + } + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join("/"); + }, + }; + function intArrayFromString(stringy, dontAddNull, length) { + var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1; + var u8array = new Array(len); + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); + if (dontAddNull) u8array.length = numBytesWritten; + return u8array; + } + var TTY = { + ttys: [], + init: function () {}, + shutdown: function () {}, + register: function (dev, ops) { + TTY.ttys[dev] = { input: [], output: [], ops: ops }; + FS.registerDevice(dev, TTY.stream_ops); + }, + stream_ops: { + open: function (stream) { + var tty = TTY.ttys[stream.node.rdev]; + if (!tty) { + throw new FS.ErrnoError(43); + } + stream.tty = tty; + stream.seekable = false; + }, + close: function (stream) { + stream.tty.ops.fsync(stream.tty); + }, + fsync: function (stream) { + stream.tty.ops.fsync(stream.tty); + }, + read: function (stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.get_char) { + throw new FS.ErrnoError(60); + } + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = stream.tty.ops.get_char(stream.tty); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: function (stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.put_char) { + throw new FS.ErrnoError(60); + } + try { + for (var i = 0; i < length; i++) { + stream.tty.ops.put_char(stream.tty, buffer[offset + i]); + } + } catch (e) { + throw new FS.ErrnoError(29); + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + }, + }, + default_tty_ops: { + get_char: function (tty) { + if (!tty.input.length) { + var result = null; + if (ENVIRONMENT_IS_NODE) { + var BUFSIZE = 256; + var buf = Buffer.alloc(BUFSIZE); + var bytesRead = 0; + try { + bytesRead = fs.readSync(process.stdin.fd, buf, 0, BUFSIZE, -1); + } catch (e) { + if (e.toString().includes("EOF")) bytesRead = 0; + else throw e; + } + if (bytesRead > 0) { + result = buf.slice(0, bytesRead).toString("utf-8"); + } else { + result = null; + } + } else if (typeof window != "undefined" && typeof window.prompt == "function") { + result = window.prompt("Input: "); + if (result !== null) { + result += "\n"; + } + } else if (typeof readline == "function") { + result = readline(); + if (result !== null) { + result += "\n"; + } + } + if (!result) { + return null; + } + tty.input = intArrayFromString(result, true); + } + return tty.input.shift(); + }, + put_char: function (tty, val) { + if (val === null || val === 10) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + }, + fsync: function (tty) { + if (tty.output && tty.output.length > 0) { + out(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + }, + }, + default_tty1_ops: { + put_char: function (tty, val) { + if (val === null || val === 10) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } else { + if (val != 0) tty.output.push(val); + } + }, + fsync: function (tty) { + if (tty.output && tty.output.length > 0) { + err(UTF8ArrayToString(tty.output, 0)); + tty.output = []; + } + }, + }, + }; + function zeroMemory(address, size) { + HEAPU8.fill(0, address, address + size); + return address; + } + function alignMemory(size, alignment) { + assert(alignment, "alignment argument is required"); + return Math.ceil(size / alignment) * alignment; + } + function mmapAlloc(size) { + size = alignMemory(size, 65536); + var ptr = _emscripten_builtin_memalign(65536, size); + if (!ptr) return 0; + return zeroMemory(ptr, size); + } + var MEMFS = { + ops_table: null, + mount: function (mount) { + return MEMFS.createNode(null, "/", 16384 | 511, 0); + }, + createNode: function (parent, name, mode, dev) { + if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { + throw new FS.ErrnoError(63); + } + if (!MEMFS.ops_table) { + MEMFS.ops_table = { + dir: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + lookup: MEMFS.node_ops.lookup, + mknod: MEMFS.node_ops.mknod, + rename: MEMFS.node_ops.rename, + unlink: MEMFS.node_ops.unlink, + rmdir: MEMFS.node_ops.rmdir, + readdir: MEMFS.node_ops.readdir, + symlink: MEMFS.node_ops.symlink, + }, + stream: { llseek: MEMFS.stream_ops.llseek }, + }, + file: { + node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, + stream: { + llseek: MEMFS.stream_ops.llseek, + read: MEMFS.stream_ops.read, + write: MEMFS.stream_ops.write, + allocate: MEMFS.stream_ops.allocate, + mmap: MEMFS.stream_ops.mmap, + msync: MEMFS.stream_ops.msync, + }, + }, + link: { + node: { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + readlink: MEMFS.node_ops.readlink, + }, + stream: {}, + }, + chrdev: { + node: { getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr }, + stream: FS.chrdev_stream_ops, + }, + }; + } + var node = FS.createNode(parent, name, mode, dev); + if (FS.isDir(node.mode)) { + node.node_ops = MEMFS.ops_table.dir.node; + node.stream_ops = MEMFS.ops_table.dir.stream; + node.contents = {}; + } else if (FS.isFile(node.mode)) { + node.node_ops = MEMFS.ops_table.file.node; + node.stream_ops = MEMFS.ops_table.file.stream; + node.usedBytes = 0; + node.contents = null; + } else if (FS.isLink(node.mode)) { + node.node_ops = MEMFS.ops_table.link.node; + node.stream_ops = MEMFS.ops_table.link.stream; + } else if (FS.isChrdev(node.mode)) { + node.node_ops = MEMFS.ops_table.chrdev.node; + node.stream_ops = MEMFS.ops_table.chrdev.stream; + } + node.timestamp = Date.now(); + if (parent) { + parent.contents[name] = node; + parent.timestamp = node.timestamp; + } + return node; + }, + getFileDataAsTypedArray: function (node) { + if (!node.contents) return new Uint8Array(0); + if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); + return new Uint8Array(node.contents); + }, + expandFileStorage: function (node, newCapacity) { + var prevCapacity = node.contents ? node.contents.length : 0; + if (prevCapacity >= newCapacity) return; + var CAPACITY_DOUBLING_MAX = 1024 * 1024; + newCapacity = Math.max( + newCapacity, + (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125)) >>> 0, + ); + if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); + var oldContents = node.contents; + node.contents = new Uint8Array(newCapacity); + if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); + }, + resizeFileStorage: function (node, newSize) { + if (node.usedBytes == newSize) return; + if (newSize == 0) { + node.contents = null; + node.usedBytes = 0; + } else { + var oldContents = node.contents; + node.contents = new Uint8Array(newSize); + if (oldContents) { + node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); + } + node.usedBytes = newSize; + } + }, + node_ops: { + getattr: function (node) { + var attr = {}; + attr.dev = FS.isChrdev(node.mode) ? node.id : 1; + attr.ino = node.id; + attr.mode = node.mode; + attr.nlink = 1; + attr.uid = 0; + attr.gid = 0; + attr.rdev = node.rdev; + if (FS.isDir(node.mode)) { + attr.size = 4096; + } else if (FS.isFile(node.mode)) { + attr.size = node.usedBytes; + } else if (FS.isLink(node.mode)) { + attr.size = node.link.length; + } else { + attr.size = 0; + } + attr.atime = new Date(node.timestamp); + attr.mtime = new Date(node.timestamp); + attr.ctime = new Date(node.timestamp); + attr.blksize = 4096; + attr.blocks = Math.ceil(attr.size / attr.blksize); + return attr; + }, + setattr: function (node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + if (attr.size !== undefined) { + MEMFS.resizeFileStorage(node, attr.size); + } + }, + lookup: function (parent, name) { + throw FS.genericErrors[44]; + }, + mknod: function (parent, name, mode, dev) { + return MEMFS.createNode(parent, name, mode, dev); + }, + rename: function (old_node, new_dir, new_name) { + if (FS.isDir(old_node.mode)) { + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) {} + if (new_node) { + for (var i in new_node.contents) { + throw new FS.ErrnoError(55); + } + } + } + delete old_node.parent.contents[old_node.name]; + old_node.parent.timestamp = Date.now(); + old_node.name = new_name; + new_dir.contents[new_name] = old_node; + new_dir.timestamp = old_node.parent.timestamp; + old_node.parent = new_dir; + }, + unlink: function (parent, name) { + delete parent.contents[name]; + parent.timestamp = Date.now(); + }, + rmdir: function (parent, name) { + var node = FS.lookupNode(parent, name); + for (var i in node.contents) { + throw new FS.ErrnoError(55); + } + delete parent.contents[name]; + parent.timestamp = Date.now(); + }, + readdir: function (node) { + var entries = [".", ".."]; + for (var key in node.contents) { + if (!Object.hasOwn(node.contents, key)) { + continue; + } + entries.push(key); + } + return entries; + }, + symlink: function (parent, newname, oldpath) { + var node = MEMFS.createNode(parent, newname, 511 | 40960, 0); + node.link = oldpath; + return node; + }, + readlink: function (node) { + if (!FS.isLink(node.mode)) { + throw new FS.ErrnoError(28); + } + return node.link; + }, + }, + stream_ops: { + read: function (stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= stream.node.usedBytes) return 0; + var size = Math.min(stream.node.usedBytes - position, length); + assert(size >= 0); + if (size > 8 && contents.subarray) { + buffer.set(contents.subarray(position, position + size), offset); + } else { + for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]; + } + return size; + }, + write: function (stream, buffer, offset, length, position, canOwn) { + assert(!(buffer instanceof ArrayBuffer)); + if (buffer.buffer === HEAP8.buffer) { + canOwn = false; + } + if (!length) return 0; + var node = stream.node; + node.timestamp = Date.now(); + if (buffer.subarray && (!node.contents || node.contents.subarray)) { + if (canOwn) { + assert(position === 0, "canOwn must imply no weird position inside the file"); + node.contents = buffer.subarray(offset, offset + length); + node.usedBytes = length; + return length; + } else if (node.usedBytes === 0 && position === 0) { + node.contents = buffer.slice(offset, offset + length); + node.usedBytes = length; + return length; + } else if (position + length <= node.usedBytes) { + node.contents.set(buffer.subarray(offset, offset + length), position); + return length; + } + } + MEMFS.expandFileStorage(node, position + length); + if (node.contents.subarray && buffer.subarray) { + node.contents.set(buffer.subarray(offset, offset + length), position); + } else { + for (var i = 0; i < length; i++) { + node.contents[position + i] = buffer[offset + i]; + } + } + node.usedBytes = Math.max(node.usedBytes, position + length); + return length; + }, + llseek: function (stream, offset, whence) { + var position = offset; + if (whence === 1) { + position += stream.position; + } else if (whence === 2) { + if (FS.isFile(stream.node.mode)) { + position += stream.node.usedBytes; + } + } + if (position < 0) { + throw new FS.ErrnoError(28); + } + return position; + }, + allocate: function (stream, offset, length) { + MEMFS.expandFileStorage(stream.node, offset + length); + stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); + }, + mmap: function (stream, length, position, prot, flags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + var ptr; + var allocated; + var contents = stream.node.contents; + if (!(flags & 2) && contents.buffer === buffer) { + allocated = false; + ptr = contents.byteOffset; + } else { + if (position > 0 || position + length < contents.length) { + if (contents.subarray) { + contents = contents.subarray(position, position + length); + } else { + contents = Array.prototype.slice.call(contents, position, position + length); + } + } + allocated = true; + ptr = mmapAlloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + HEAP8.set(contents, ptr); + } + return { ptr: ptr, allocated: allocated }; + }, + msync: function (stream, buffer, offset, length, mmapFlags) { + MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); + return 0; + }, + }, + }; + function asyncLoad(url, onload, onerror, noRunDep) { + var dep = !noRunDep ? getUniqueRunDependency("al " + url) : ""; + readAsync( + url, + (arrayBuffer) => { + assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); + onload(new Uint8Array(arrayBuffer)); + if (dep) removeRunDependency(dep); + }, + (event) => { + if (onerror) { + onerror(); + } else { + throw 'Loading data file "' + url + '" failed.'; + } + }, + ); + if (dep) addRunDependency(dep); + } + var ERRNO_MESSAGES = { + 0: "Success", + 1: "Arg list too long", + 2: "Permission denied", + 3: "Address already in use", + 4: "Address not available", + 5: "Address family not supported by protocol family", + 6: "No more processes", + 7: "Socket already connected", + 8: "Bad file number", + 9: "Trying to read unreadable message", + 10: "Mount device busy", + 11: "Operation canceled", + 12: "No children", + 13: "Connection aborted", + 14: "Connection refused", + 15: "Connection reset by peer", + 16: "File locking deadlock error", + 17: "Destination address required", + 18: "Math arg out of domain of func", + 19: "Quota exceeded", + 20: "File exists", + 21: "Bad address", + 22: "File too large", + 23: "Host is unreachable", + 24: "Identifier removed", + 25: "Illegal byte sequence", + 26: "Connection already in progress", + 27: "Interrupted system call", + 28: "Invalid argument", + 29: "I/O error", + 30: "Socket is already connected", + 31: "Is a directory", + 32: "Too many symbolic links", + 33: "Too many open files", + 34: "Too many links", + 35: "Message too long", + 36: "Multihop attempted", + 37: "File or path name too long", + 38: "Network interface is not configured", + 39: "Connection reset by network", + 40: "Network is unreachable", + 41: "Too many open files in system", + 42: "No buffer space available", + 43: "No such device", + 44: "No such file or directory", + 45: "Exec format error", + 46: "No record locks available", + 47: "The link has been severed", + 48: "Not enough core", + 49: "No message of desired type", + 50: "Protocol not available", + 51: "No space left on device", + 52: "Function not implemented", + 53: "Socket is not connected", + 54: "Not a directory", + 55: "Directory not empty", + 56: "State not recoverable", + 57: "Socket operation on non-socket", + 59: "Not a typewriter", + 60: "No such device or address", + 61: "Value too large for defined data type", + 62: "Previous owner died", + 63: "Not super-user", + 64: "Broken pipe", + 65: "Protocol error", + 66: "Unknown protocol", + 67: "Protocol wrong type for socket", + 68: "Math result not representable", + 69: "Read only file system", + 70: "Illegal seek", + 71: "No such process", + 72: "Stale file handle", + 73: "Connection timed out", + 74: "Text file busy", + 75: "Cross-device link", + 100: "Device not a stream", + 101: "Bad font file fmt", + 102: "Invalid slot", + 103: "Invalid request code", + 104: "No anode", + 105: "Block device required", + 106: "Channel number out of range", + 107: "Level 3 halted", + 108: "Level 3 reset", + 109: "Link number out of range", + 110: "Protocol driver not attached", + 111: "No CSI structure available", + 112: "Level 2 halted", + 113: "Invalid exchange", + 114: "Invalid request descriptor", + 115: "Exchange full", + 116: "No data (for no delay io)", + 117: "Timer expired", + 118: "Out of streams resources", + 119: "Machine is not on the network", + 120: "Package not installed", + 121: "The object is remote", + 122: "Advertise error", + 123: "Srmount error", + 124: "Communication error on send", + 125: "Cross mount point (not really error)", + 126: "Given log. name not unique", + 127: "f.d. invalid for this operation", + 128: "Remote address changed", + 129: "Can access a needed shared lib", + 130: "Accessing a corrupted shared lib", + 131: ".lib section in a.out corrupted", + 132: "Attempting to link in too many libs", + 133: "Attempting to exec a shared library", + 135: "Streams pipe error", + 136: "Too many users", + 137: "Socket type not supported", + 138: "Not supported", + 139: "Protocol family not supported", + 140: "Can't send after socket shutdown", + 141: "Too many references", + 142: "Host is down", + 148: "No medium (in tape drive)", + 156: "Level 2 not synchronized", + }; + var ERRNO_CODES = {}; + function demangle(func) { + warnOnce("warning: build with -sDEMANGLE_SUPPORT to link in libcxxabi demangling"); + return func; + } + function demangleAll(text) { + var regex = /\b_Z[\w\d_]+/g; + return text.replace(regex, function (x) { + var y = demangle(x); + return x === y ? x : y + " [" + x + "]"; + }); + } + var FS = { + root: null, + mounts: [], + devices: {}, + streams: [], + nextInode: 1, + nameTable: null, + currentPath: "/", + initialized: false, + ignorePermissions: true, + ErrnoError: null, + genericErrors: {}, + filesystems: null, + syncFSRequests: 0, + lookupPath: (path, opts = {}) => { + path = PATH_FS.resolve(path); + if (!path) return { path: "", node: null }; + var defaults = { follow_mount: true, recurse_count: 0 }; + opts = Object.assign(defaults, opts); + if (opts.recurse_count > 8) { + throw new FS.ErrnoError(32); + } + var parts = path.split("/").filter((p) => !!p); + var current = FS.root; + var current_path = "/"; + for (var i = 0; i < parts.length; i++) { + var islast = i === parts.length - 1; + if (islast && opts.parent) { + break; + } + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); + if (FS.isMountpoint(current)) { + if (!islast || (islast && opts.follow_mount)) { + current = current.mounted.root; + } + } + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH_FS.resolve(PATH.dirname(current_path), link); + var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count + 1 }); + current = lookup.node; + if (count++ > 40) { + throw new FS.ErrnoError(32); + } + } + } + } + return { path: current_path, node: current }; + }, + getPath: (node) => { + var path; + while (true) { + if (FS.isRoot(node)) { + var mount = node.mount.mountpoint; + if (!path) return mount; + return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path; + } + path = path ? node.name + "/" + path : node.name; + node = node.parent; + } + }, + hashName: (parentid, name) => { + var hash = 0; + for (var i = 0; i < name.length; i++) { + hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; + } + return ((parentid + hash) >>> 0) % FS.nameTable.length; + }, + hashAddNode: (node) => { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; + FS.nameTable[hash] = node; + }, + hashRemoveNode: (node) => { + var hash = FS.hashName(node.parent.id, node.name); + if (FS.nameTable[hash] === node) { + FS.nameTable[hash] = node.name_next; + } else { + var current = FS.nameTable[hash]; + while (current) { + if (current.name_next === node) { + current.name_next = node.name_next; + break; + } + current = current.name_next; + } + } + }, + lookupNode: (parent, name) => { + var errCode = FS.mayLookup(parent); + if (errCode) { + throw new FS.ErrnoError(errCode, parent); + } + var hash = FS.hashName(parent.id, name); + for (var node = FS.nameTable[hash]; node; node = node.name_next) { + var nodeName = node.name; + if (node.parent.id === parent.id && nodeName === name) { + return node; + } + } + return FS.lookup(parent, name); + }, + createNode: (parent, name, mode, rdev) => { + assert(typeof parent == "object"); + var node = new FS.FSNode(parent, name, mode, rdev); + FS.hashAddNode(node); + return node; + }, + destroyNode: (node) => { + FS.hashRemoveNode(node); + }, + isRoot: (node) => { + return node === node.parent; + }, + isMountpoint: (node) => { + return !!node.mounted; + }, + isFile: (mode) => { + return (mode & 61440) === 32768; + }, + isDir: (mode) => { + return (mode & 61440) === 16384; + }, + isLink: (mode) => { + return (mode & 61440) === 40960; + }, + isChrdev: (mode) => { + return (mode & 61440) === 8192; + }, + isBlkdev: (mode) => { + return (mode & 61440) === 24576; + }, + isFIFO: (mode) => { + return (mode & 61440) === 4096; + }, + isSocket: (mode) => { + return (mode & 49152) === 49152; + }, + flagModes: { r: 0, "r+": 2, w: 577, "w+": 578, a: 1089, "a+": 1090 }, + modeStringToFlags: (str) => { + var flags = FS.flagModes[str]; + if (typeof flags == "undefined") { + throw new Error("Unknown file open mode: " + str); + } + return flags; + }, + flagsToPermissionString: (flag) => { + var perms = ["r", "w", "rw"][flag & 3]; + if (flag & 512) { + perms += "w"; + } + return perms; + }, + nodePermissions: (node, perms) => { + if (FS.ignorePermissions) { + return 0; + } + if (perms.includes("r") && !(node.mode & 292)) { + return 2; + } else if (perms.includes("w") && !(node.mode & 146)) { + return 2; + } else if (perms.includes("x") && !(node.mode & 73)) { + return 2; + } + return 0; + }, + mayLookup: (dir) => { + var errCode = FS.nodePermissions(dir, "x"); + if (errCode) return errCode; + if (!dir.node_ops.lookup) return 2; + return 0; + }, + mayCreate: (dir, name) => { + try { + var node = FS.lookupNode(dir, name); + return 20; + } catch (e) {} + return FS.nodePermissions(dir, "wx"); + }, + mayDelete: (dir, name, isdir) => { + var node; + try { + node = FS.lookupNode(dir, name); + } catch (e) { + return e.errno; + } + var errCode = FS.nodePermissions(dir, "wx"); + if (errCode) { + return errCode; + } + if (isdir) { + if (!FS.isDir(node.mode)) { + return 54; + } + if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { + return 10; + } + } else { + if (FS.isDir(node.mode)) { + return 31; + } + } + return 0; + }, + mayOpen: (node, flags) => { + if (!node) { + return 44; + } + if (FS.isLink(node.mode)) { + return 32; + } else if (FS.isDir(node.mode)) { + if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) { + return 31; + } + } + return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); + }, + MAX_OPEN_FDS: 4096, + nextfd: (fd_start = 0, fd_end = FS.MAX_OPEN_FDS) => { + for (var fd = fd_start; fd <= fd_end; fd++) { + if (!FS.streams[fd]) { + return fd; + } + } + throw new FS.ErrnoError(33); + }, + getStream: (fd) => FS.streams[fd], + createStream: (stream, fd_start, fd_end) => { + if (!FS.FSStream) { + FS.FSStream = function () { + this.shared = {}; + }; + FS.FSStream.prototype = {}; + Object.defineProperties(FS.FSStream.prototype, { + object: { + get: function () { + return this.node; + }, + set: function (val) { + this.node = val; + }, + }, + isRead: { + get: function () { + return (this.flags & 2097155) !== 1; + }, + }, + isWrite: { + get: function () { + return (this.flags & 2097155) !== 0; + }, + }, + isAppend: { + get: function () { + return this.flags & 1024; + }, + }, + flags: { + get: function () { + return this.shared.flags; + }, + set: function (val) { + this.shared.flags = val; + }, + }, + position: { + get: function () { + return this.shared.position; + }, + set: function (val) { + this.shared.position = val; + }, + }, + }); + } + stream = Object.assign(new FS.FSStream(), stream); + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + FS.streams[fd] = stream; + return stream; + }, + closeStream: (fd) => { + FS.streams[fd] = null; + }, + chrdev_stream_ops: { + open: (stream) => { + var device = FS.getDevice(stream.node.rdev); + stream.stream_ops = device.stream_ops; + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + }, + llseek: () => { + throw new FS.ErrnoError(70); + }, + }, + major: (dev) => dev >> 8, + minor: (dev) => dev & 255, + makedev: (ma, mi) => (ma << 8) | mi, + registerDevice: (dev, ops) => { + FS.devices[dev] = { stream_ops: ops }; + }, + getDevice: (dev) => FS.devices[dev], + getMounts: (mount) => { + var mounts = []; + var check = [mount]; + while (check.length) { + var m = check.pop(); + mounts.push(m); + check.push.apply(check, m.mounts); + } + return mounts; + }, + syncfs: (populate, callback) => { + if (typeof populate == "function") { + callback = populate; + populate = false; + } + FS.syncFSRequests++; + if (FS.syncFSRequests > 1) { + err( + "warning: " + + FS.syncFSRequests + + " FS.syncfs operations in flight at once, probably just doing extra work", + ); + } + var mounts = FS.getMounts(FS.root.mount); + var completed = 0; + function doCallback(errCode) { + assert(FS.syncFSRequests > 0); + FS.syncFSRequests--; + return callback(errCode); + } + function done(errCode) { + if (errCode) { + if (!done.errored) { + done.errored = true; + return doCallback(errCode); + } + return; + } + if (++completed >= mounts.length) { + doCallback(null); + } + } + mounts.forEach((mount) => { + if (!mount.type.syncfs) { + return done(null); + } + mount.type.syncfs(mount, populate, done); + }); + }, + mount: (type, opts, mountpoint) => { + if (typeof type == "string") { + throw type; + } + var root = mountpoint === "/"; + var pseudo = !mountpoint; + var node; + if (root && FS.root) { + throw new FS.ErrnoError(10); + } else if (!root && !pseudo) { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); + mountpoint = lookup.path; + node = lookup.node; + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + if (!FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + } + var mount = { type: type, opts: opts, mountpoint: mountpoint, mounts: [] }; + var mountRoot = type.mount(mount); + mountRoot.mount = mount; + mount.root = mountRoot; + if (root) { + FS.root = mountRoot; + } else if (node) { + node.mounted = mount; + if (node.mount) { + node.mount.mounts.push(mount); + } + } + return mountRoot; + }, + unmount: (mountpoint) => { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); + if (!FS.isMountpoint(lookup.node)) { + throw new FS.ErrnoError(28); + } + var node = lookup.node; + var mount = node.mounted; + var mounts = FS.getMounts(mount); + Object.keys(FS.nameTable).forEach((hash) => { + var current = FS.nameTable[hash]; + while (current) { + var next = current.name_next; + if (mounts.includes(current.mount)) { + FS.destroyNode(current); + } + current = next; + } + }); + node.mounted = null; + var idx = node.mount.mounts.indexOf(mount); + assert(idx !== -1); + node.mount.mounts.splice(idx, 1); + }, + lookup: (parent, name) => { + return parent.node_ops.lookup(parent, name); + }, + mknod: (path, mode, dev) => { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + if (!name || name === "." || name === "..") { + throw new FS.ErrnoError(28); + } + var errCode = FS.mayCreate(parent, name); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.mknod) { + throw new FS.ErrnoError(63); + } + return parent.node_ops.mknod(parent, name, mode, dev); + }, + create: (path, mode) => { + mode = mode !== undefined ? mode : 438; + mode &= 4095; + mode |= 32768; + return FS.mknod(path, mode, 0); + }, + mkdir: (path, mode) => { + mode = mode !== undefined ? mode : 511; + mode &= 511 | 512; + mode |= 16384; + return FS.mknod(path, mode, 0); + }, + mkdirTree: (path, mode) => { + var dirs = path.split("/"); + var d = ""; + for (var i = 0; i < dirs.length; ++i) { + if (!dirs[i]) continue; + d += "/" + dirs[i]; + try { + FS.mkdir(d, mode); + } catch (e) { + if (e.errno != 20) throw e; + } + } + }, + mkdev: (path, mode, dev) => { + if (typeof dev == "undefined") { + dev = mode; + mode = 438; + } + mode |= 8192; + return FS.mknod(path, mode, dev); + }, + symlink: (oldpath, newpath) => { + if (!PATH_FS.resolve(oldpath)) { + throw new FS.ErrnoError(44); + } + var lookup = FS.lookupPath(newpath, { parent: true }); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(44); + } + var newname = PATH.basename(newpath); + var errCode = FS.mayCreate(parent, newname); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.symlink) { + throw new FS.ErrnoError(63); + } + return parent.node_ops.symlink(parent, newname, oldpath); + }, + rename: (old_path, new_path) => { + var old_dirname = PATH.dirname(old_path); + var new_dirname = PATH.dirname(new_path); + var old_name = PATH.basename(old_path); + var new_name = PATH.basename(new_path); + var lookup, old_dir, new_dir; + lookup = FS.lookupPath(old_path, { parent: true }); + old_dir = lookup.node; + lookup = FS.lookupPath(new_path, { parent: true }); + new_dir = lookup.node; + if (!old_dir || !new_dir) throw new FS.ErrnoError(44); + if (old_dir.mount !== new_dir.mount) { + throw new FS.ErrnoError(75); + } + var old_node = FS.lookupNode(old_dir, old_name); + var relative = PATH_FS.relative(old_path, new_dirname); + if (relative.charAt(0) !== ".") { + throw new FS.ErrnoError(28); + } + relative = PATH_FS.relative(new_path, old_dirname); + if (relative.charAt(0) !== ".") { + throw new FS.ErrnoError(55); + } + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) {} + if (old_node === new_node) { + return; + } + var isdir = FS.isDir(old_node.mode); + var errCode = FS.mayDelete(old_dir, old_name, isdir); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + errCode = new_node + ? FS.mayDelete(new_dir, new_name, isdir) + : FS.mayCreate(new_dir, new_name); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!old_dir.node_ops.rename) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { + throw new FS.ErrnoError(10); + } + if (new_dir !== old_dir) { + errCode = FS.nodePermissions(old_dir, "w"); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + } + FS.hashRemoveNode(old_node); + try { + old_dir.node_ops.rename(old_node, new_dir, new_name); + } catch (e) { + throw e; + } finally { + FS.hashAddNode(old_node); + } + }, + rmdir: (path) => { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, true); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.rmdir) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); + }, + readdir: (path) => { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + if (!node.node_ops.readdir) { + throw new FS.ErrnoError(54); + } + return node.node_ops.readdir(node); + }, + unlink: (path) => { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(44); + } + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var errCode = FS.mayDelete(parent, name, false); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + if (!parent.node_ops.unlink) { + throw new FS.ErrnoError(63); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(10); + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); + }, + readlink: (path) => { + var lookup = FS.lookupPath(path); + var link = lookup.node; + if (!link) { + throw new FS.ErrnoError(44); + } + if (!link.node_ops.readlink) { + throw new FS.ErrnoError(28); + } + return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); + }, + stat: (path, dontFollow) => { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + var node = lookup.node; + if (!node) { + throw new FS.ErrnoError(44); + } + if (!node.node_ops.getattr) { + throw new FS.ErrnoError(63); + } + return node.node_ops.getattr(node); + }, + lstat: (path) => { + return FS.stat(path, true); + }, + chmod: (path, mode, dontFollow) => { + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { + mode: (mode & 4095) | (node.mode & ~4095), + timestamp: Date.now(), + }); + }, + lchmod: (path, mode) => { + FS.chmod(path, mode, true); + }, + fchmod: (fd, mode) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chmod(stream.node, mode); + }, + chown: (path, uid, gid, dontFollow) => { + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + node.node_ops.setattr(node, { timestamp: Date.now() }); + }, + lchown: (path, uid, gid) => { + FS.chown(path, uid, gid, true); + }, + fchown: (fd, uid, gid) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + FS.chown(stream.node, uid, gid); + }, + truncate: (path, len) => { + if (len < 0) { + throw new FS.ErrnoError(28); + } + var node; + if (typeof path == "string") { + var lookup = FS.lookupPath(path, { follow: true }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(63); + } + if (FS.isDir(node.mode)) { + throw new FS.ErrnoError(31); + } + if (!FS.isFile(node.mode)) { + throw new FS.ErrnoError(28); + } + var errCode = FS.nodePermissions(node, "w"); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + node.node_ops.setattr(node, { size: len, timestamp: Date.now() }); + }, + ftruncate: (fd, len) => { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(28); + } + FS.truncate(stream.node, len); + }, + utime: (path, atime, mtime) => { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) }); + }, + open: (path, flags, mode) => { + if (path === "") { + throw new FS.ErrnoError(44); + } + flags = typeof flags == "string" ? FS.modeStringToFlags(flags) : flags; + mode = typeof mode == "undefined" ? 438 : mode; + if (flags & 64) { + mode = (mode & 4095) | 32768; + } else { + mode = 0; + } + var node; + if (typeof path == "object") { + node = path; + } else { + path = PATH.normalize(path); + try { + var lookup = FS.lookupPath(path, { follow: !(flags & 131072) }); + node = lookup.node; + } catch (e) {} + } + var created = false; + if (flags & 64) { + if (node) { + if (flags & 128) { + throw new FS.ErrnoError(20); + } + } else { + node = FS.mknod(path, mode, 0); + created = true; + } + } + if (!node) { + throw new FS.ErrnoError(44); + } + if (FS.isChrdev(node.mode)) { + flags &= ~512; + } + if (flags & 65536 && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(54); + } + if (!created) { + var errCode = FS.mayOpen(node, flags); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + } + if (flags & 512 && !created) { + FS.truncate(node, 0); + } + flags &= ~(128 | 512 | 131072); + var stream = FS.createStream({ + node: node, + path: FS.getPath(node), + flags: flags, + seekable: true, + position: 0, + stream_ops: node.stream_ops, + ungotten: [], + error: false, + }); + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + if (Module["logReadFiles"] && !(flags & 1)) { + if (!FS.readFiles) FS.readFiles = {}; + if (!(path in FS.readFiles)) { + FS.readFiles[path] = 1; + } + } + return stream; + }, + close: (stream) => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (stream.getdents) stream.getdents = null; + try { + if (stream.stream_ops.close) { + stream.stream_ops.close(stream); + } + } catch (e) { + throw e; + } finally { + FS.closeStream(stream.fd); + } + stream.fd = null; + }, + isClosed: (stream) => { + return stream.fd === null; + }, + llseek: (stream, offset, whence) => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (!stream.seekable || !stream.stream_ops.llseek) { + throw new FS.ErrnoError(70); + } + if (whence != 0 && whence != 1 && whence != 2) { + throw new FS.ErrnoError(28); + } + stream.position = stream.stream_ops.llseek(stream, offset, whence); + stream.ungotten = []; + return stream.position; + }, + read: (stream, buffer, offset, length, position) => { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.read) { + throw new FS.ErrnoError(28); + } + var seeking = typeof position != "undefined"; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); + if (!seeking) stream.position += bytesRead; + return bytesRead; + }, + write: (stream, buffer, offset, length, position, canOwn) => { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(28); + } + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(31); + } + if (!stream.stream_ops.write) { + throw new FS.ErrnoError(28); + } + if (stream.seekable && stream.flags & 1024) { + FS.llseek(stream, 0, 2); + } + var seeking = typeof position != "undefined"; + if (!seeking) { + position = stream.position; + } else if (!stream.seekable) { + throw new FS.ErrnoError(70); + } + var bytesWritten = stream.stream_ops.write( + stream, + buffer, + offset, + length, + position, + canOwn, + ); + if (!seeking) stream.position += bytesWritten; + return bytesWritten; + }, + allocate: (stream, offset, length) => { + if (FS.isClosed(stream)) { + throw new FS.ErrnoError(8); + } + if (offset < 0 || length <= 0) { + throw new FS.ErrnoError(28); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(8); + } + if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (!stream.stream_ops.allocate) { + throw new FS.ErrnoError(138); + } + stream.stream_ops.allocate(stream, offset, length); + }, + mmap: (stream, length, position, prot, flags) => { + if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) { + throw new FS.ErrnoError(2); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(2); + } + if (!stream.stream_ops.mmap) { + throw new FS.ErrnoError(43); + } + return stream.stream_ops.mmap(stream, length, position, prot, flags); + }, + msync: (stream, buffer, offset, length, mmapFlags) => { + if (!stream.stream_ops.msync) { + return 0; + } + return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); + }, + munmap: (stream) => 0, + ioctl: (stream, cmd, arg) => { + if (!stream.stream_ops.ioctl) { + throw new FS.ErrnoError(59); + } + return stream.stream_ops.ioctl(stream, cmd, arg); + }, + readFile: (path, opts = {}) => { + opts.flags = opts.flags || 0; + opts.encoding = opts.encoding || "binary"; + if (opts.encoding !== "utf8" && opts.encoding !== "binary") { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } + var ret; + var stream = FS.open(path, opts.flags); + var stat = FS.stat(path); + var length = stat.size; + var buf = new Uint8Array(length); + FS.read(stream, buf, 0, length, 0); + if (opts.encoding === "utf8") { + ret = UTF8ArrayToString(buf, 0); + } else if (opts.encoding === "binary") { + ret = buf; + } + FS.close(stream); + return ret; + }, + writeFile: (path, data, opts = {}) => { + opts.flags = opts.flags || 577; + var stream = FS.open(path, opts.flags, opts.mode); + if (typeof data == "string") { + var buf = new Uint8Array(lengthBytesUTF8(data) + 1); + var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); + FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn); + } else if (ArrayBuffer.isView(data)) { + FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn); + } else { + throw new Error("Unsupported data type"); + } + FS.close(stream); + }, + cwd: () => FS.currentPath, + chdir: (path) => { + var lookup = FS.lookupPath(path, { follow: true }); + if (lookup.node === null) { + throw new FS.ErrnoError(44); + } + if (!FS.isDir(lookup.node.mode)) { + throw new FS.ErrnoError(54); + } + var errCode = FS.nodePermissions(lookup.node, "x"); + if (errCode) { + throw new FS.ErrnoError(errCode); + } + FS.currentPath = lookup.path; + }, + createDefaultDirectories: () => { + FS.mkdir("/tmp"); + FS.mkdir("/home"); + FS.mkdir("/home/web_user"); + }, + createDefaultDevices: () => { + FS.mkdir("/dev"); + FS.registerDevice(FS.makedev(1, 3), { + read: () => 0, + write: (stream, buffer, offset, length, pos) => length, + }); + FS.mkdev("/dev/null", FS.makedev(1, 3)); + TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); + TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); + FS.mkdev("/dev/tty", FS.makedev(5, 0)); + FS.mkdev("/dev/tty1", FS.makedev(6, 0)); + var random_device = getRandomDevice(); + FS.createDevice("/dev", "random", random_device); + FS.createDevice("/dev", "urandom", random_device); + FS.mkdir("/dev/shm"); + FS.mkdir("/dev/shm/tmp"); + }, + createSpecialDirectories: () => { + FS.mkdir("/proc"); + var proc_self = FS.mkdir("/proc/self"); + FS.mkdir("/proc/self/fd"); + FS.mount( + { + mount: () => { + var node = FS.createNode(proc_self, "fd", 16384 | 511, 73); + node.node_ops = { + lookup: (parent, name) => { + var fd = +name; + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + var ret = { + parent: null, + mount: { mountpoint: "fake" }, + node_ops: { readlink: () => stream.path }, + }; + ret.parent = ret; + return ret; + }, + }; + return node; + }, + }, + {}, + "/proc/self/fd", + ); + }, + createStandardStreams: () => { + if (Module["stdin"]) { + FS.createDevice("/dev", "stdin", Module["stdin"]); + } else { + FS.symlink("/dev/tty", "/dev/stdin"); + } + if (Module["stdout"]) { + FS.createDevice("/dev", "stdout", null, Module["stdout"]); + } else { + FS.symlink("/dev/tty", "/dev/stdout"); + } + if (Module["stderr"]) { + FS.createDevice("/dev", "stderr", null, Module["stderr"]); + } else { + FS.symlink("/dev/tty1", "/dev/stderr"); + } + var stdin = FS.open("/dev/stdin", 0); + var stdout = FS.open("/dev/stdout", 1); + var stderr = FS.open("/dev/stderr", 1); + assert(stdin.fd === 0, "invalid handle for stdin (" + stdin.fd + ")"); + assert(stdout.fd === 1, "invalid handle for stdout (" + stdout.fd + ")"); + assert(stderr.fd === 2, "invalid handle for stderr (" + stderr.fd + ")"); + }, + ensureErrnoError: () => { + if (FS.ErrnoError) return; + FS.ErrnoError = function ErrnoError(errno, node) { + this.node = node; + this.setErrno = function (errno) { + this.errno = errno; + for (var key in ERRNO_CODES) { + if (ERRNO_CODES[key] === errno) { + this.code = key; + break; + } + } + }; + this.setErrno(errno); + this.message = ERRNO_MESSAGES[errno]; + if (this.stack) { + Object.defineProperty(this, "stack", { value: new Error().stack, writable: true }); + this.stack = demangleAll(this.stack); + } + }; + FS.ErrnoError.prototype = new Error(); + FS.ErrnoError.prototype.constructor = FS.ErrnoError; + [44].forEach((code) => { + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = ""; + }); + }, + staticInit: () => { + FS.ensureErrnoError(); + FS.nameTable = new Array(4096); + FS.mount(MEMFS, {}, "/"); + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + FS.createSpecialDirectories(); + FS.filesystems = { MEMFS: MEMFS }; + }, + init: (input, output, error) => { + assert( + !FS.init.initialized, + "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)", + ); + FS.init.initialized = true; + FS.ensureErrnoError(); + Module["stdin"] = input || Module["stdin"]; + Module["stdout"] = output || Module["stdout"]; + Module["stderr"] = error || Module["stderr"]; + FS.createStandardStreams(); + }, + quit: () => { + FS.init.initialized = false; + _fflush(0); + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue; + } + FS.close(stream); + } + }, + getMode: (canRead, canWrite) => { + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; + return mode; + }, + findObject: (path, dontResolveLastLink) => { + var ret = FS.analyzePath(path, dontResolveLastLink); + if (!ret.exists) { + return null; + } + return ret.object; + }, + analyzePath: (path, dontResolveLastLink) => { + try { + var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); + path = lookup.path; + } catch (e) {} + var ret = { + isRoot: false, + exists: false, + error: 0, + name: null, + path: null, + object: null, + parentExists: false, + parentPath: null, + parentObject: null, + }; + try { + var lookup = FS.lookupPath(path, { parent: true }); + ret.parentExists = true; + ret.parentPath = lookup.path; + ret.parentObject = lookup.node; + ret.name = PATH.basename(path); + lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); + ret.exists = true; + ret.path = lookup.path; + ret.object = lookup.node; + ret.name = lookup.node.name; + ret.isRoot = lookup.path === "/"; + } catch (e) { + ret.error = e.errno; + } + return ret; + }, + createPath: (parent, path, canRead, canWrite) => { + parent = typeof parent == "string" ? parent : FS.getPath(parent); + var parts = path.split("/").reverse(); + while (parts.length) { + var part = parts.pop(); + if (!part) continue; + var current = PATH.join2(parent, part); + try { + FS.mkdir(current); + } catch (e) {} + parent = current; + } + return current; + }, + createFile: (parent, name, properties, canRead, canWrite) => { + var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.create(path, mode); + }, + createDataFile: (parent, name, data, canRead, canWrite, canOwn) => { + var path = name; + if (parent) { + parent = typeof parent == "string" ? parent : FS.getPath(parent); + path = name ? PATH.join2(parent, name) : parent; + } + var mode = FS.getMode(canRead, canWrite); + var node = FS.create(path, mode); + if (data) { + if (typeof data == "string") { + var arr = new Array(data.length); + for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); + data = arr; + } + FS.chmod(node, mode | 146); + var stream = FS.open(node, 577); + FS.write(stream, data, 0, data.length, 0, canOwn); + FS.close(stream); + FS.chmod(node, mode); + } + return node; + }, + createDevice: (parent, name, input, output) => { + var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name); + var mode = FS.getMode(!!input, !!output); + if (!FS.createDevice.major) FS.createDevice.major = 64; + var dev = FS.makedev(FS.createDevice.major++, 0); + FS.registerDevice(dev, { + open: (stream) => { + stream.seekable = false; + }, + close: (stream) => { + if (output && output.buffer && output.buffer.length) { + output(10); + } + }, + read: (stream, buffer, offset, length, pos) => { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input(); + } catch (e) { + throw new FS.ErrnoError(29); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(6); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset + i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: (stream, buffer, offset, length, pos) => { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset + i]); + } catch (e) { + throw new FS.ErrnoError(29); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + }, + }); + return FS.mkdev(path, mode, dev); + }, + forceLoadFile: (obj) => { + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + if (typeof XMLHttpRequest != "undefined") { + throw new Error( + "Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.", + ); + } else if (read_) { + try { + obj.contents = intArrayFromString(read_(obj.url), true); + obj.usedBytes = obj.contents.length; + } catch (e) { + throw new FS.ErrnoError(29); + } + } else { + throw new Error("Cannot load without read() or XMLHttpRequest."); + } + }, + createLazyFile: (parent, name, url, canRead, canWrite) => { + function LazyUint8Array() { + this.lengthKnown = false; + this.chunks = []; + } + LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { + if (idx > this.length - 1 || idx < 0) { + return undefined; + } + var chunkOffset = idx % this.chunkSize; + var chunkNum = (idx / this.chunkSize) | 0; + return this.getter(chunkNum)[chunkOffset]; + }; + LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { + this.getter = getter; + }; + LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { + var xhr = new XMLHttpRequest(); + xhr.open("HEAD", url, false); + xhr.send(null); + if (!((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304)) + throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + var datalength = Number(xhr.getResponseHeader("Content-length")); + var header; + var hasByteServing = + (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; + var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; + var chunkSize = 1024 * 1024; + if (!hasByteServing) chunkSize = datalength; + var doXHR = (from, to) => { + if (from > to) + throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); + if (to > datalength - 1) + throw new Error("only " + datalength + " bytes available! programmer error!"); + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); + xhr.responseType = "arraybuffer"; + if (xhr.overrideMimeType) { + xhr.overrideMimeType("text/plain; charset=x-user-defined"); + } + xhr.send(null); + if (!((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304)) + throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + if (xhr.response !== undefined) { + return new Uint8Array(xhr.response || []); + } + return intArrayFromString(xhr.responseText || "", true); + }; + + this.setDataGetter((chunkNum) => { + var start = chunkNum * chunkSize; + var end = (chunkNum + 1) * chunkSize - 1; + end = Math.min(end, datalength - 1); + if (typeof this.chunks[chunkNum] == "undefined") { + this.chunks[chunkNum] = doXHR(start, end); + } + if (typeof this.chunks[chunkNum] == "undefined") throw new Error("doXHR failed!"); + return this.chunks[chunkNum]; + }); + if (usesGzip || !datalength) { + chunkSize = datalength = 1; + datalength = this.getter(0).length; + chunkSize = datalength; + out("LazyFiles on gzip forces download of the whole file when length is accessed"); + } + this._length = datalength; + this._chunkSize = chunkSize; + this.lengthKnown = true; + }; + if (typeof XMLHttpRequest != "undefined") { + if (!ENVIRONMENT_IS_WORKER) + throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; + var lazyArray = new LazyUint8Array(); + Object.defineProperties(lazyArray, { + length: { + get: function () { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._length; + }, + }, + chunkSize: { + get: function () { + if (!this.lengthKnown) { + this.cacheLength(); + } + return this._chunkSize; + }, + }, + }); + var properties = { isDevice: false, contents: lazyArray }; + } else { + var properties = { isDevice: false, url: url }; + } + var node = FS.createFile(parent, name, properties, canRead, canWrite); + if (properties.contents) { + node.contents = properties.contents; + } else if (properties.url) { + node.contents = null; + node.url = properties.url; + } + Object.defineProperties(node, { + usedBytes: { + get: function () { + return this.contents.length; + }, + }, + }); + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); + keys.forEach((key) => { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { + FS.forceLoadFile(node); + return fn.apply(null, arguments); + }; + }); + function writeChunks(stream, buffer, offset, length, position) { + var contents = stream.node.contents; + if (position >= contents.length) return 0; + var size = Math.min(contents.length - position, length); + assert(size >= 0); + if (contents.slice) { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } else { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents.get(position + i); + } + } + return size; + } + stream_ops.read = (stream, buffer, offset, length, position) => { + FS.forceLoadFile(node); + return writeChunks(stream, buffer, offset, length, position); + }; + stream_ops.mmap = (stream, length, position, prot, flags) => { + FS.forceLoadFile(node); + var ptr = mmapAlloc(length); + if (!ptr) { + throw new FS.ErrnoError(48); + } + writeChunks(stream, HEAP8, ptr, length, position); + return { ptr: ptr, allocated: true }; + }; + node.stream_ops = stream_ops; + return node; + }, + createPreloadedFile: ( + parent, + name, + url, + canRead, + canWrite, + onload, + onerror, + dontCreateFile, + canOwn, + preFinish, + ) => { + var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; + var dep = getUniqueRunDependency("cp " + fullname); + function processData(byteArray) { + function finish(byteArray) { + if (preFinish) preFinish(); + if (!dontCreateFile) { + FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); + } + if (onload) onload(); + removeRunDependency(dep); + } + if ( + Browser.handledByPreloadPlugin(byteArray, fullname, finish, () => { + if (onerror) onerror(); + removeRunDependency(dep); + }) + ) { + return; + } + finish(byteArray); + } + addRunDependency(dep); + if (typeof url == "string") { + asyncLoad(url, (byteArray) => processData(byteArray), onerror); + } else { + processData(url); + } + }, + indexedDB: () => { + return ( + window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB + ); + }, + DB_NAME: () => { + return "EM_FS_" + window.location.pathname; + }, + DB_VERSION: 20, + DB_STORE_NAME: "FILE_DATA", + saveFilesToDB: (paths, onload, onerror) => { + onload = onload || (() => {}); + onerror = onerror || (() => {}); + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = () => { + out("creating db"); + var db = openRequest.result; + db.createObjectStore(FS.DB_STORE_NAME); + }; + openRequest.onsuccess = () => { + var db = openRequest.result; + var transaction = db.transaction([FS.DB_STORE_NAME], "readwrite"); + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, + fail = 0, + total = paths.length; + function finish() { + if (fail == 0) onload(); + else onerror(); + } + paths.forEach((path) => { + var putRequest = files.put(FS.analyzePath(path).object.contents, path); + putRequest.onsuccess = () => { + ok++; + if (ok + fail == total) finish(); + }; + putRequest.onerror = () => { + fail++; + if (ok + fail == total) finish(); + }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + }, + loadFilesFromDB: (paths, onload, onerror) => { + onload = onload || (() => {}); + onerror = onerror || (() => {}); + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = onerror; + openRequest.onsuccess = () => { + var db = openRequest.result; + try { + var transaction = db.transaction([FS.DB_STORE_NAME], "readonly"); + } catch (e) { + onerror(e); + return; + } + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, + fail = 0, + total = paths.length; + function finish() { + if (fail == 0) onload(); + else onerror(); + } + paths.forEach((path) => { + var getRequest = files.get(path); + getRequest.onsuccess = () => { + if (FS.analyzePath(path).exists) { + FS.unlink(path); + } + FS.createDataFile( + PATH.dirname(path), + PATH.basename(path), + getRequest.result, + true, + true, + true, + ); + ok++; + if (ok + fail == total) finish(); + }; + getRequest.onerror = () => { + fail++; + if (ok + fail == total) finish(); + }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + }, + absolutePath: () => { + abort("FS.absolutePath has been removed; use PATH_FS.resolve instead"); + }, + createFolder: () => { + abort("FS.createFolder has been removed; use FS.mkdir instead"); + }, + createLink: () => { + abort("FS.createLink has been removed; use FS.symlink instead"); + }, + joinPath: () => { + abort("FS.joinPath has been removed; use PATH.join instead"); + }, + mmapAlloc: () => { + abort("FS.mmapAlloc has been replaced by the top level function mmapAlloc"); + }, + standardizePath: () => { + abort("FS.standardizePath has been removed; use PATH.normalize instead"); + }, + }; + var SYSCALLS = { + DEFAULT_POLLMASK: 5, + calculateAt: function (dirfd, path, allowEmpty) { + if (PATH.isAbs(path)) { + return path; + } + var dir; + if (dirfd === -100) { + dir = FS.cwd(); + } else { + var dirstream = SYSCALLS.getStreamFromFD(dirfd); + dir = dirstream.path; + } + if (path.length == 0) { + if (!allowEmpty) { + throw new FS.ErrnoError(44); + } + return dir; + } + return PATH.join2(dir, path); + }, + doStat: function (func, path, buf) { + try { + var stat = func(path); + } catch (e) { + if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { + return -54; + } + throw e; + } + HEAP32[buf >> 2] = stat.dev; + HEAP32[(buf + 8) >> 2] = stat.ino; + HEAP32[(buf + 12) >> 2] = stat.mode; + HEAPU32[(buf + 16) >> 2] = stat.nlink; + HEAP32[(buf + 20) >> 2] = stat.uid; + HEAP32[(buf + 24) >> 2] = stat.gid; + HEAP32[(buf + 28) >> 2] = stat.rdev; + (tempI64 = [ + stat.size >>> 0, + ((tempDouble = stat.size), + +Math.abs(tempDouble) >= 1 + ? tempDouble > 0 + ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 + : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 + : 0), + ]), + (HEAP32[(buf + 40) >> 2] = tempI64[0]), + (HEAP32[(buf + 44) >> 2] = tempI64[1]); + HEAP32[(buf + 48) >> 2] = 4096; + HEAP32[(buf + 52) >> 2] = stat.blocks; + (tempI64 = [ + Math.floor(stat.atime.getTime() / 1e3) >>> 0, + ((tempDouble = Math.floor(stat.atime.getTime() / 1e3)), + +Math.abs(tempDouble) >= 1 + ? tempDouble > 0 + ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 + : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 + : 0), + ]), + (HEAP32[(buf + 56) >> 2] = tempI64[0]), + (HEAP32[(buf + 60) >> 2] = tempI64[1]); + HEAPU32[(buf + 64) >> 2] = 0; + (tempI64 = [ + Math.floor(stat.mtime.getTime() / 1e3) >>> 0, + ((tempDouble = Math.floor(stat.mtime.getTime() / 1e3)), + +Math.abs(tempDouble) >= 1 + ? tempDouble > 0 + ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 + : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 + : 0), + ]), + (HEAP32[(buf + 72) >> 2] = tempI64[0]), + (HEAP32[(buf + 76) >> 2] = tempI64[1]); + HEAPU32[(buf + 80) >> 2] = 0; + (tempI64 = [ + Math.floor(stat.ctime.getTime() / 1e3) >>> 0, + ((tempDouble = Math.floor(stat.ctime.getTime() / 1e3)), + +Math.abs(tempDouble) >= 1 + ? tempDouble > 0 + ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 + : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 + : 0), + ]), + (HEAP32[(buf + 88) >> 2] = tempI64[0]), + (HEAP32[(buf + 92) >> 2] = tempI64[1]); + HEAPU32[(buf + 96) >> 2] = 0; + (tempI64 = [ + stat.ino >>> 0, + ((tempDouble = stat.ino), + +Math.abs(tempDouble) >= 1 + ? tempDouble > 0 + ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 + : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 + : 0), + ]), + (HEAP32[(buf + 104) >> 2] = tempI64[0]), + (HEAP32[(buf + 108) >> 2] = tempI64[1]); + return 0; + }, + doMsync: function (addr, stream, len, flags, offset) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(43); + } + if (flags & 2) { + return 0; + } + var buffer = HEAPU8.slice(addr, addr + len); + FS.msync(stream, buffer, offset, len, flags); + }, + varargs: undefined, + get: function () { + assert(SYSCALLS.varargs != undefined); + SYSCALLS.varargs += 4; + var ret = HEAP32[(SYSCALLS.varargs - 4) >> 2]; + return ret; + }, + getStr: function (ptr) { + var ret = UTF8ToString(ptr); + return ret; + }, + getStreamFromFD: function (fd) { + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + return stream; + }, + }; + function _proc_exit(code) { + EXITSTATUS = code; + if (!keepRuntimeAlive()) { + if (Module["onExit"]) Module["onExit"](code); + ABORT = true; + } + quit_(code, new ExitStatus(code)); + } + function exitJS(status, implicit) { + EXITSTATUS = status; + checkUnflushedContent(); + if (keepRuntimeAlive() && !implicit) { + var msg = + "program exited (with status: " + + status + + "), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)"; + readyPromiseReject(msg); + err(msg); + } + _proc_exit(status); + } + var _exit = exitJS; + function handleException(e) { + if (e instanceof ExitStatus || e == "unwind") { + return EXITSTATUS; + } + checkStackCookie(); + if (e instanceof WebAssembly.RuntimeError) { + if (_emscripten_stack_get_current() <= 0) { + err( + "Stack overflow detected. You can try increasing -sSTACK_SIZE (currently set to " + + STACK_SIZE + + ")", + ); + } + } + quit_(1, e); + } + function maybeExit() {} + function setMainLoop(browserIterationFunc, fps, simulateInfiniteLoop, arg, noSetTiming) { + assert( + !Browser.mainLoop.func, + "emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.", + ); + Browser.mainLoop.func = browserIterationFunc; + Browser.mainLoop.arg = arg; + var thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop; + function checkIsRunning() { + if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) { + maybeExit(); + return false; + } + return true; + } + Browser.mainLoop.running = false; + Browser.mainLoop.runner = function Browser_mainLoop_runner() { + if (ABORT) return; + if (Browser.mainLoop.queue.length > 0) { + var start = Date.now(); + var blocker = Browser.mainLoop.queue.shift(); + blocker.func(blocker.arg); + if (Browser.mainLoop.remainingBlockers) { + var remaining = Browser.mainLoop.remainingBlockers; + var next = remaining % 1 == 0 ? remaining - 1 : Math.floor(remaining); + if (blocker.counted) { + Browser.mainLoop.remainingBlockers = next; + } else { + next = next + 0.5; + Browser.mainLoop.remainingBlockers = (8 * remaining + next) / 9; + } + } + out('main loop blocker "' + blocker.name + '" took ' + (Date.now() - start) + " ms"); + Browser.mainLoop.updateStatus(); + if (!checkIsRunning()) return; + setTimeout(Browser.mainLoop.runner, 0); + return; + } + if (!checkIsRunning()) return; + Browser.mainLoop.currentFrameNumber = (Browser.mainLoop.currentFrameNumber + 1) | 0; + if ( + Browser.mainLoop.timingMode == 1 && + Browser.mainLoop.timingValue > 1 && + Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0 + ) { + Browser.mainLoop.scheduler(); + return; + } else if (Browser.mainLoop.timingMode == 0) { + Browser.mainLoop.tickStartTime = _emscripten_get_now(); + } + GL.newRenderingFrameStarted(); + if ( + typeof GL != "undefined" && + GL.currentContext && + !GL.currentContextIsProxied && + !GL.currentContext.attributes.explicitSwapControl && + GL.currentContext.GLctx.commit + ) { + GL.currentContext.GLctx.commit(); + } + if (Browser.mainLoop.method === "timeout" && Module.ctx) { + warnOnce( + "Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!", + ); + Browser.mainLoop.method = ""; + } + Browser.mainLoop.runIter(browserIterationFunc); + checkStackCookie(); + if (!checkIsRunning()) return; + if (typeof SDL == "object" && SDL.audio && SDL.audio.queueNewAudioData) + SDL.audio.queueNewAudioData(); + Browser.mainLoop.scheduler(); + }; + if (!noSetTiming) { + if (fps && fps > 0) _emscripten_set_main_loop_timing(0, 1e3 / fps); + else _emscripten_set_main_loop_timing(1, 1); + Browser.mainLoop.scheduler(); + } + if (simulateInfiniteLoop) { + throw "unwind"; + } + } + function callUserCallback(func) { + if (ABORT) { + err("user callback triggered after runtime exited or application aborted. Ignoring."); + return; + } + try { + func(); + } catch (e) { + handleException(e); + } + } + function safeSetTimeout(func, timeout) { + return setTimeout(function () { + callUserCallback(func); + }, timeout); + } + function warnOnce(text) { + if (!warnOnce.shown) warnOnce.shown = {}; + if (!warnOnce.shown[text]) { + warnOnce.shown[text] = 1; + if (ENVIRONMENT_IS_NODE) text = "warning: " + text; + err(text); + } + } + var Browser = { + mainLoop: { + running: false, + scheduler: null, + method: "", + currentlyRunningMainloop: 0, + func: null, + arg: 0, + timingMode: 0, + timingValue: 0, + currentFrameNumber: 0, + queue: [], + pause: function () { + Browser.mainLoop.scheduler = null; + Browser.mainLoop.currentlyRunningMainloop++; + }, + resume: function () { + Browser.mainLoop.currentlyRunningMainloop++; + var timingMode = Browser.mainLoop.timingMode; + var timingValue = Browser.mainLoop.timingValue; + var func = Browser.mainLoop.func; + Browser.mainLoop.func = null; + setMainLoop(func, 0, false, Browser.mainLoop.arg, true); + _emscripten_set_main_loop_timing(timingMode, timingValue); + Browser.mainLoop.scheduler(); + }, + updateStatus: function () { + if (Module["setStatus"]) { + var message = Module["statusMessage"] || "Please wait..."; + var remaining = Browser.mainLoop.remainingBlockers; + var expected = Browser.mainLoop.expectedBlockers; + if (remaining) { + if (remaining < expected) { + Module["setStatus"](message + " (" + (expected - remaining) + "/" + expected + ")"); + } else { + Module["setStatus"](message); + } + } else { + Module["setStatus"](""); + } + } + }, + runIter: function (func) { + if (ABORT) return; + if (Module["preMainLoop"]) { + var preRet = Module["preMainLoop"](); + if (preRet === false) { + return; + } + } + callUserCallback(func); + if (Module["postMainLoop"]) Module["postMainLoop"](); + }, + }, + isFullscreen: false, + pointerLock: false, + moduleContextCreatedCallbacks: [], + workers: [], + init: function () { + if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; + if (Browser.initted) return; + Browser.initted = true; + try { + new Blob(); + Browser.hasBlobConstructor = true; + } catch (e) { + Browser.hasBlobConstructor = false; + err("warning: no blob constructor, cannot create blobs with mimetypes"); + } + Browser.BlobBuilder = + typeof MozBlobBuilder != "undefined" + ? MozBlobBuilder + : typeof WebKitBlobBuilder != "undefined" + ? WebKitBlobBuilder + : !Browser.hasBlobConstructor + ? err("warning: no BlobBuilder") + : null; + Browser.URLObject = + typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined; + if (!Module.noImageDecoding && typeof Browser.URLObject == "undefined") { + err( + "warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.", + ); + Module.noImageDecoding = true; + } + var imagePlugin = {}; + imagePlugin["canHandle"] = function imagePlugin_canHandle(name) { + return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name); + }; + imagePlugin["handle"] = function imagePlugin_handle(byteArray, name, onload, onerror) { + var b = null; + if (Browser.hasBlobConstructor) { + try { + b = new Blob([byteArray], { type: Browser.getMimetype(name) }); + if (b.size !== byteArray.length) { + b = new Blob([new Uint8Array(byteArray).buffer], { + type: Browser.getMimetype(name), + }); + } + } catch (e) { + warnOnce( + "Blob constructor present but fails: " + e + "; falling back to blob builder", + ); + } + } + if (!b) { + var bb = new Browser.BlobBuilder(); + bb.append(new Uint8Array(byteArray).buffer); + b = bb.getBlob(); + } + var url = Browser.URLObject.createObjectURL(b); + assert(typeof url == "string", "createObjectURL must return a url as a string"); + var img = new Image(); + img.onload = () => { + assert(img.complete, "Image " + name + " could not be decoded"); + var canvas = document.createElement("canvas"); + canvas.width = img.width; + canvas.height = img.height; + var ctx = canvas.getContext("2d"); + ctx.drawImage(img, 0, 0); + preloadedImages[name] = canvas; + Browser.URLObject.revokeObjectURL(url); + if (onload) onload(byteArray); + }; + img.onerror = (event) => { + out("Image " + url + " could not be decoded"); + if (onerror) onerror(); + }; + img.src = url; + }; + Module["preloadPlugins"].push(imagePlugin); + var audioPlugin = {}; + audioPlugin["canHandle"] = function audioPlugin_canHandle(name) { + return !Module.noAudioDecoding && name.substr(-4) in { ".ogg": 1, ".wav": 1, ".mp3": 1 }; + }; + audioPlugin["handle"] = function audioPlugin_handle(byteArray, name, onload, onerror) { + var done = false; + function finish(audio) { + if (done) return; + done = true; + preloadedAudios[name] = audio; + if (onload) onload(byteArray); + } + function fail() { + if (done) return; + done = true; + preloadedAudios[name] = new Audio(); + if (onerror) onerror(); + } + if (Browser.hasBlobConstructor) { + try { + var b = new Blob([byteArray], { type: Browser.getMimetype(name) }); + } catch (e) { + return fail(); + } + var url = Browser.URLObject.createObjectURL(b); + assert(typeof url == "string", "createObjectURL must return a url as a string"); + var audio = new Audio(); + audio.addEventListener("canplaythrough", () => finish(audio), false); + audio.onerror = function audio_onerror(event) { + if (done) return; + err( + "warning: browser could not fully decode audio " + + name + + ", trying slower base64 approach", + ); + function encode64(data) { + var BASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + var PAD = "="; + var ret = ""; + var leftchar = 0; + var leftbits = 0; + for (var i = 0; i < data.length; i++) { + leftchar = (leftchar << 8) | data[i]; + leftbits += 8; + while (leftbits >= 6) { + var curr = (leftchar >> (leftbits - 6)) & 63; + leftbits -= 6; + ret += BASE[curr]; + } + } + if (leftbits == 2) { + ret += BASE[(leftchar & 3) << 4]; + ret += PAD + PAD; + } else if (leftbits == 4) { + ret += BASE[(leftchar & 15) << 2]; + ret += PAD; + } + return ret; + } + audio.src = "data:audio/x-" + name.substr(-3) + ";base64," + encode64(byteArray); + finish(audio); + }; + audio.src = url; + safeSetTimeout(function () { + finish(audio); + }, 1e4); + } else { + return fail(); + } + }; + Module["preloadPlugins"].push(audioPlugin); + function pointerLockChange() { + Browser.pointerLock = + document["pointerLockElement"] === Module["canvas"] || + document["mozPointerLockElement"] === Module["canvas"] || + document["webkitPointerLockElement"] === Module["canvas"] || + document["msPointerLockElement"] === Module["canvas"]; + } + var canvas = Module["canvas"]; + if (canvas) { + canvas.requestPointerLock = + canvas["requestPointerLock"] || + canvas["mozRequestPointerLock"] || + canvas["webkitRequestPointerLock"] || + canvas["msRequestPointerLock"] || + (() => {}); + canvas.exitPointerLock = + document["exitPointerLock"] || + document["mozExitPointerLock"] || + document["webkitExitPointerLock"] || + document["msExitPointerLock"] || + (() => {}); + canvas.exitPointerLock = canvas.exitPointerLock.bind(document); + document.addEventListener("pointerlockchange", pointerLockChange, false); + document.addEventListener("mozpointerlockchange", pointerLockChange, false); + document.addEventListener("webkitpointerlockchange", pointerLockChange, false); + document.addEventListener("mspointerlockchange", pointerLockChange, false); + if (Module["elementPointerLock"]) { + canvas.addEventListener( + "click", + (ev) => { + if (!Browser.pointerLock && Module["canvas"].requestPointerLock) { + Module["canvas"].requestPointerLock(); + ev.preventDefault(); + } + }, + false, + ); + } + } + }, + handledByPreloadPlugin: function (byteArray, fullname, finish, onerror) { + Browser.init(); + var handled = false; + Module["preloadPlugins"].forEach(function (plugin) { + if (handled) return; + if (plugin["canHandle"](fullname)) { + plugin["handle"](byteArray, fullname, finish, onerror); + handled = true; + } + }); + return handled; + }, + createContext: function (canvas, useWebGL, setInModule, webGLContextAttributes) { + if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx; + var ctx; + var contextHandle; + if (useWebGL) { + var contextAttributes = { + antialias: false, + alpha: false, + majorVersion: typeof WebGL2RenderingContext != "undefined" ? 2 : 1, + }; + if (webGLContextAttributes) { + for (var attribute in webGLContextAttributes) { + contextAttributes[attribute] = webGLContextAttributes[attribute]; + } + } + if (typeof GL != "undefined") { + contextHandle = GL.createContext(canvas, contextAttributes); + if (contextHandle) { + ctx = GL.getContext(contextHandle).GLctx; + } + } + } else { + ctx = canvas.getContext("2d"); + } + if (!ctx) return null; + if (setInModule) { + if (!useWebGL) + assert( + typeof GLctx == "undefined", + "cannot set in module if GLctx is used, but we are a non-GL context that would replace it", + ); + Module.ctx = ctx; + if (useWebGL) GL.makeContextCurrent(contextHandle); + Module.useWebGL = useWebGL; + Browser.moduleContextCreatedCallbacks.forEach(function (callback) { + callback(); + }); + Browser.init(); + } + return ctx; + }, + destroyContext: function (canvas, useWebGL, setInModule) {}, + fullscreenHandlersInstalled: false, + lockPointer: undefined, + resizeCanvas: undefined, + requestFullscreen: function (lockPointer, resizeCanvas) { + Browser.lockPointer = lockPointer; + Browser.resizeCanvas = resizeCanvas; + if (typeof Browser.lockPointer == "undefined") Browser.lockPointer = true; + if (typeof Browser.resizeCanvas == "undefined") Browser.resizeCanvas = false; + var canvas = Module["canvas"]; + function fullscreenChange() { + Browser.isFullscreen = false; + var canvasContainer = canvas.parentNode; + if ( + (document["fullscreenElement"] || + document["mozFullScreenElement"] || + document["msFullscreenElement"] || + document["webkitFullscreenElement"] || + document["webkitCurrentFullScreenElement"]) === canvasContainer + ) { + canvas.exitFullscreen = Browser.exitFullscreen; + if (Browser.lockPointer) canvas.requestPointerLock(); + Browser.isFullscreen = true; + if (Browser.resizeCanvas) { + Browser.setFullscreenCanvasSize(); + } else { + Browser.updateCanvasDimensions(canvas); + } + } else { + canvasContainer.parentNode.insertBefore(canvas, canvasContainer); + canvasContainer.parentNode.removeChild(canvasContainer); + if (Browser.resizeCanvas) { + Browser.setWindowedCanvasSize(); + } else { + Browser.updateCanvasDimensions(canvas); + } + } + if (Module["onFullScreen"]) Module["onFullScreen"](Browser.isFullscreen); + if (Module["onFullscreen"]) Module["onFullscreen"](Browser.isFullscreen); + } + if (!Browser.fullscreenHandlersInstalled) { + Browser.fullscreenHandlersInstalled = true; + document.addEventListener("fullscreenchange", fullscreenChange, false); + document.addEventListener("mozfullscreenchange", fullscreenChange, false); + document.addEventListener("webkitfullscreenchange", fullscreenChange, false); + document.addEventListener("MSFullscreenChange", fullscreenChange, false); + } + var canvasContainer = document.createElement("div"); + canvas.parentNode.insertBefore(canvasContainer, canvas); + canvasContainer.appendChild(canvas); + canvasContainer.requestFullscreen = + canvasContainer["requestFullscreen"] || + canvasContainer["mozRequestFullScreen"] || + canvasContainer["msRequestFullscreen"] || + (canvasContainer["webkitRequestFullscreen"] + ? () => canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]) + : null) || + (canvasContainer["webkitRequestFullScreen"] + ? () => canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]) + : null); + canvasContainer.requestFullscreen(); + }, + requestFullScreen: function () { + abort( + "Module.requestFullScreen has been replaced by Module.requestFullscreen (without a capital S)", + ); + }, + exitFullscreen: function () { + if (!Browser.isFullscreen) { + return false; + } + var CFS = + document["exitFullscreen"] || + document["cancelFullScreen"] || + document["mozCancelFullScreen"] || + document["msExitFullscreen"] || + document["webkitCancelFullScreen"] || + function () {}; + CFS.apply(document, []); + return true; + }, + nextRAF: 0, + fakeRequestAnimationFrame: function (func) { + var now = Date.now(); + if (Browser.nextRAF === 0) { + Browser.nextRAF = now + 1e3 / 60; + } else { + while (now + 2 >= Browser.nextRAF) { + Browser.nextRAF += 1e3 / 60; + } + } + var delay = Math.max(Browser.nextRAF - now, 0); + setTimeout(func, delay); + }, + requestAnimationFrame: function (func) { + if (typeof requestAnimationFrame == "function") { + requestAnimationFrame(func); + return; + } + var RAF = Browser.fakeRequestAnimationFrame; + RAF(func); + }, + safeSetTimeout: function (func, timeout) { + return safeSetTimeout(func, timeout); + }, + safeRequestAnimationFrame: function (func) { + return Browser.requestAnimationFrame(function () { + callUserCallback(func); + }); + }, + getMimetype: function (name) { + return { + jpg: "image/jpeg", + jpeg: "image/jpeg", + png: "image/png", + bmp: "image/bmp", + ogg: "audio/ogg", + wav: "audio/wav", + mp3: "audio/mpeg", + }[name.substr(name.lastIndexOf(".") + 1)]; + }, + getUserMedia: function (func) { + if (!window.getUserMedia) { + window.getUserMedia = navigator["getUserMedia"] || navigator["mozGetUserMedia"]; + } + window.getUserMedia(func); + }, + getMovementX: function (event) { + return event["movementX"] || event["mozMovementX"] || event["webkitMovementX"] || 0; + }, + getMovementY: function (event) { + return event["movementY"] || event["mozMovementY"] || event["webkitMovementY"] || 0; + }, + getMouseWheelDelta: function (event) { + var delta = 0; + switch (event.type) { + case "DOMMouseScroll": + delta = event.detail / 3; + break; + case "mousewheel": + delta = event.wheelDelta / 120; + break; + case "wheel": + delta = event.deltaY; + switch (event.deltaMode) { + case 0: + delta /= 100; + break; + case 1: + delta /= 3; + break; + case 2: + delta *= 80; + break; + default: + throw "unrecognized mouse wheel delta mode: " + event.deltaMode; + } + break; + default: + throw "unrecognized mouse wheel event: " + event.type; + } + return delta; + }, + mouseX: 0, + mouseY: 0, + mouseMovementX: 0, + mouseMovementY: 0, + touches: {}, + lastTouches: {}, + calculateMouseEvent: function (event) { + if (Browser.pointerLock) { + if (event.type != "mousemove" && "mozMovementX" in event) { + Browser.mouseMovementX = Browser.mouseMovementY = 0; + } else { + Browser.mouseMovementX = Browser.getMovementX(event); + Browser.mouseMovementY = Browser.getMovementY(event); + } + if (typeof SDL != "undefined") { + Browser.mouseX = SDL.mouseX + Browser.mouseMovementX; + Browser.mouseY = SDL.mouseY + Browser.mouseMovementY; + } else { + Browser.mouseX += Browser.mouseMovementX; + Browser.mouseY += Browser.mouseMovementY; + } + } else { + var rect = Module["canvas"].getBoundingClientRect(); + var cw = Module["canvas"].width; + var ch = Module["canvas"].height; + var scrollX = typeof window.scrollX != "undefined" ? window.scrollX : window.pageXOffset; + var scrollY = typeof window.scrollY != "undefined" ? window.scrollY : window.pageYOffset; + assert( + typeof scrollX != "undefined" && typeof scrollY != "undefined", + "Unable to retrieve scroll position, mouse positions likely broken.", + ); + if ( + event.type === "touchstart" || + event.type === "touchend" || + event.type === "touchmove" + ) { + var touch = event.touch; + if (touch === undefined) { + return; + } + var adjustedX = touch.pageX - (scrollX + rect.left); + var adjustedY = touch.pageY - (scrollY + rect.top); + adjustedX = adjustedX * (cw / rect.width); + adjustedY = adjustedY * (ch / rect.height); + var coords = { x: adjustedX, y: adjustedY }; + if (event.type === "touchstart") { + Browser.lastTouches[touch.identifier] = coords; + Browser.touches[touch.identifier] = coords; + } else if (event.type === "touchend" || event.type === "touchmove") { + var last = Browser.touches[touch.identifier]; + if (!last) last = coords; + Browser.lastTouches[touch.identifier] = last; + Browser.touches[touch.identifier] = coords; + } + return; + } + var x = event.pageX - (scrollX + rect.left); + var y = event.pageY - (scrollY + rect.top); + x = x * (cw / rect.width); + y = y * (ch / rect.height); + Browser.mouseMovementX = x - Browser.mouseX; + Browser.mouseMovementY = y - Browser.mouseY; + Browser.mouseX = x; + Browser.mouseY = y; + } + }, + resizeListeners: [], + updateResizeListeners: function () { + var canvas = Module["canvas"]; + Browser.resizeListeners.forEach(function (listener) { + listener(canvas.width, canvas.height); + }); + }, + setCanvasSize: function (width, height, noUpdates) { + var canvas = Module["canvas"]; + Browser.updateCanvasDimensions(canvas, width, height); + if (!noUpdates) Browser.updateResizeListeners(); + }, + windowedWidth: 0, + windowedHeight: 0, + setFullscreenCanvasSize: function () { + if (typeof SDL != "undefined") { + var flags = HEAPU32[SDL.screen >> 2]; + flags = flags | 8388608; + HEAP32[SDL.screen >> 2] = flags; + } + Browser.updateCanvasDimensions(Module["canvas"]); + Browser.updateResizeListeners(); + }, + setWindowedCanvasSize: function () { + if (typeof SDL != "undefined") { + var flags = HEAPU32[SDL.screen >> 2]; + flags = flags & ~8388608; + HEAP32[SDL.screen >> 2] = flags; + } + Browser.updateCanvasDimensions(Module["canvas"]); + Browser.updateResizeListeners(); + }, + updateCanvasDimensions: function (canvas, wNative, hNative) { + if (wNative && hNative) { + canvas.widthNative = wNative; + canvas.heightNative = hNative; + } else { + wNative = canvas.widthNative; + hNative = canvas.heightNative; + } + var w = wNative; + var h = hNative; + if (Module["forcedAspectRatio"] && Module["forcedAspectRatio"] > 0) { + if (w / h < Module["forcedAspectRatio"]) { + w = Math.round(h * Module["forcedAspectRatio"]); + } else { + h = Math.round(w / Module["forcedAspectRatio"]); + } + } + if ( + (document["fullscreenElement"] || + document["mozFullScreenElement"] || + document["msFullscreenElement"] || + document["webkitFullscreenElement"] || + document["webkitCurrentFullScreenElement"]) === canvas.parentNode && + typeof screen != "undefined" + ) { + var factor = Math.min(screen.width / w, screen.height / h); + w = Math.round(w * factor); + h = Math.round(h * factor); + } + if (Browser.resizeCanvas) { + if (canvas.width != w) canvas.width = w; + if (canvas.height != h) canvas.height = h; + if (typeof canvas.style != "undefined") { + canvas.style.removeProperty("width"); + canvas.style.removeProperty("height"); + } + } else { + if (canvas.width != wNative) canvas.width = wNative; + if (canvas.height != hNative) canvas.height = hNative; + if (typeof canvas.style != "undefined") { + if (w != wNative || h != hNative) { + canvas.style.setProperty("width", w + "px", "important"); + canvas.style.setProperty("height", h + "px", "important"); + } else { + canvas.style.removeProperty("width"); + canvas.style.removeProperty("height"); + } + } + } + }, + }; + function callRuntimeCallbacks(callbacks) { + while (callbacks.length > 0) { + callbacks.shift()(Module); + } + } + function ptrToString(ptr) { + return "0x" + ptr.toString(16).padStart(8, "0"); + } + function ___assert_fail(condition, filename, line, func) { + abort( + "Assertion failed: " + + UTF8ToString(condition) + + ", at: " + + [ + filename ? UTF8ToString(filename) : "unknown filename", + line, + func ? UTF8ToString(func) : "unknown function", + ], + ); + } + function ___cxa_allocate_exception(size) { + return _malloc(size + 24) + 24; + } + function ExceptionInfo(excPtr) { + this.excPtr = excPtr; + this.ptr = excPtr - 24; + this.set_type = function (type) { + HEAPU32[(this.ptr + 4) >> 2] = type; + }; + this.get_type = function () { + return HEAPU32[(this.ptr + 4) >> 2]; + }; + this.set_destructor = function (destructor) { + HEAPU32[(this.ptr + 8) >> 2] = destructor; + }; + this.get_destructor = function () { + return HEAPU32[(this.ptr + 8) >> 2]; + }; + this.set_refcount = function (refcount) { + HEAP32[this.ptr >> 2] = refcount; + }; + this.set_caught = function (caught) { + caught = caught ? 1 : 0; + HEAP8[(this.ptr + 12) >> 0] = caught; + }; + this.get_caught = function () { + return HEAP8[(this.ptr + 12) >> 0] != 0; + }; + this.set_rethrown = function (rethrown) { + rethrown = rethrown ? 1 : 0; + HEAP8[(this.ptr + 13) >> 0] = rethrown; + }; + this.get_rethrown = function () { + return HEAP8[(this.ptr + 13) >> 0] != 0; + }; + this.init = function (type, destructor) { + this.set_adjusted_ptr(0); + this.set_type(type); + this.set_destructor(destructor); + this.set_refcount(0); + this.set_caught(false); + this.set_rethrown(false); + }; + this.add_ref = function () { + var value = HEAP32[this.ptr >> 2]; + HEAP32[this.ptr >> 2] = value + 1; + }; + this.release_ref = function () { + var prev = HEAP32[this.ptr >> 2]; + HEAP32[this.ptr >> 2] = prev - 1; + assert(prev > 0); + return prev === 1; + }; + this.set_adjusted_ptr = function (adjustedPtr) { + HEAPU32[(this.ptr + 16) >> 2] = adjustedPtr; + }; + this.get_adjusted_ptr = function () { + return HEAPU32[(this.ptr + 16) >> 2]; + }; + this.get_exception_ptr = function () { + var isPointer = ___cxa_is_pointer_type(this.get_type()); + if (isPointer) { + return HEAPU32[this.excPtr >> 2]; + } + var adjusted = this.get_adjusted_ptr(); + if (adjusted !== 0) return adjusted; + return this.excPtr; + }; + } + var exceptionLast = 0; + var uncaughtExceptionCount = 0; + function ___cxa_throw(ptr, type, destructor) { + var info = new ExceptionInfo(ptr); + info.init(type, destructor); + exceptionLast = ptr; + uncaughtExceptionCount++; + throw ( + ptr + + " - Exception catching is disabled, this exception cannot be caught. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch." + ); + } + function ___syscall_dup(fd) { + try { + var old = SYSCALLS.getStreamFromFD(fd); + return FS.createStream(old, 0).fd; + } catch (e) { + if (typeof FS == "undefined" || !(e instanceof FS.ErrnoError)) throw e; + return -e.errno; + } + } + function setErrNo(value) { + HEAP32[___errno_location() >> 2] = value; + return value; + } + function ___syscall_fcntl64(fd, cmd, varargs) { + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(fd); + switch (cmd) { + case 0: { + var arg = SYSCALLS.get(); + if (arg < 0) { + return -28; + } + var newStream; + newStream = FS.createStream(stream, arg); + return newStream.fd; + } + case 1: + case 2: + return 0; + case 3: + return stream.flags; + case 4: { + var arg = SYSCALLS.get(); + stream.flags |= arg; + return 0; + } + case 5: { + var arg = SYSCALLS.get(); + var offset = 0; + HEAP16[(arg + offset) >> 1] = 2; + return 0; + } + case 6: + case 7: + return 0; + case 16: + case 8: + return -28; + case 9: + setErrNo(28); + return -1; + default: { + return -28; + } + } + } catch (e) { + if (typeof FS == "undefined" || !(e instanceof FS.ErrnoError)) throw e; + return -e.errno; + } + } + function ___syscall_fstat64(fd, buf) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + return SYSCALLS.doStat(FS.stat, stream.path, buf); + } catch (e) { + if (typeof FS == "undefined" || !(e instanceof FS.ErrnoError)) throw e; + return -e.errno; + } + } + function ___syscall_ioctl(fd, op, varargs) { + SYSCALLS.varargs = varargs; + try { + var stream = SYSCALLS.getStreamFromFD(fd); + switch (op) { + case 21509: + case 21505: { + if (!stream.tty) return -59; + return 0; + } + case 21510: + case 21511: + case 21512: + case 21506: + case 21507: + case 21508: { + if (!stream.tty) return -59; + return 0; + } + case 21519: { + if (!stream.tty) return -59; + var argp = SYSCALLS.get(); + HEAP32[argp >> 2] = 0; + return 0; + } + case 21520: { + if (!stream.tty) return -59; + return -28; + } + case 21531: { + var argp = SYSCALLS.get(); + return FS.ioctl(stream, op, argp); + } + case 21523: { + if (!stream.tty) return -59; + return 0; + } + case 21524: { + if (!stream.tty) return -59; + return 0; + } + default: + return -28; + } + } catch (e) { + if (typeof FS == "undefined" || !(e instanceof FS.ErrnoError)) throw e; + return -e.errno; + } + } + function ___syscall_lstat64(path, buf) { + try { + path = SYSCALLS.getStr(path); + return SYSCALLS.doStat(FS.lstat, path, buf); + } catch (e) { + if (typeof FS == "undefined" || !(e instanceof FS.ErrnoError)) throw e; + return -e.errno; + } + } + function ___syscall_newfstatat(dirfd, path, buf, flags) { + try { + path = SYSCALLS.getStr(path); + var nofollow = flags & 256; + var allowEmpty = flags & 4096; + flags = flags & ~6400; + assert(!flags, "unknown flags in __syscall_newfstatat: " + flags); + path = SYSCALLS.calculateAt(dirfd, path, allowEmpty); + return SYSCALLS.doStat(nofollow ? FS.lstat : FS.stat, path, buf); + } catch (e) { + if (typeof FS == "undefined" || !(e instanceof FS.ErrnoError)) throw e; + return -e.errno; + } + } + function ___syscall_openat(dirfd, path, flags, varargs) { + SYSCALLS.varargs = varargs; + try { + path = SYSCALLS.getStr(path); + path = SYSCALLS.calculateAt(dirfd, path); + var mode = varargs ? SYSCALLS.get() : 0; + return FS.open(path, flags, mode).fd; + } catch (e) { + if (typeof FS == "undefined" || !(e instanceof FS.ErrnoError)) throw e; + return -e.errno; + } + } + function ___syscall_stat64(path, buf) { + try { + path = SYSCALLS.getStr(path); + return SYSCALLS.doStat(FS.stat, path, buf); + } catch (e) { + if (typeof FS == "undefined" || !(e instanceof FS.ErrnoError)) throw e; + return -e.errno; + } + } + function __dlinit(main_dso_handle) {} + var dlopenMissingError = + "To use dlopen, you need enable dynamic linking, see https://github.com/emscripten-core/emscripten/wiki/Linking"; + function __dlopen_js(filename, flag) { + abort(dlopenMissingError); + } + function __dlsym_js(handle, symbol) { + abort(dlopenMissingError); + } + var char_0 = 48; + var char_9 = 57; + function makeLegalFunctionName(name) { + if (undefined === name) { + return "_unknown"; + } + name = name.replace(/[^a-zA-Z0-9_]/g, "$"); + var f = name.charCodeAt(0); + if (f >= char_0 && f <= char_9) { + return "_" + name; + } + return name; + } + function createNamedFunction(name, body) { + name = makeLegalFunctionName(name); + return function () { + "use strict"; + return body.apply(this, arguments); + }; + } + var emval_handle_array = [ + {}, + { value: undefined }, + { value: null }, + { value: true }, + { value: false }, + ]; + var emval_free_list = []; + function extendError(baseErrorType, errorName) { + var errorClass = createNamedFunction(errorName, function (message) { + this.name = errorName; + this.message = message; + var stack = new Error(message).stack; + if (stack !== undefined) { + this.stack = this.toString() + "\n" + stack.replace(/^Error(:[^\n]*)?\n/, ""); + } + }); + errorClass.prototype = Object.create(baseErrorType.prototype); + errorClass.prototype.constructor = errorClass; + errorClass.prototype.toString = function () { + if (this.message === undefined) { + return this.name; + } else { + return this.name + ": " + this.message; + } + }; + return errorClass; + } + var BindingError = undefined; + function throwBindingError(message) { + throw new BindingError(message); + } + function count_emval_handles() { + var count = 0; + for (var i = 5; i < emval_handle_array.length; ++i) { + if (emval_handle_array[i] !== undefined) { + ++count; + } + } + return count; + } + function get_first_emval() { + for (var i = 5; i < emval_handle_array.length; ++i) { + if (emval_handle_array[i] !== undefined) { + return emval_handle_array[i]; + } + } + return null; + } + function init_emval() { + Module["count_emval_handles"] = count_emval_handles; + Module["get_first_emval"] = get_first_emval; + } + var Emval = { + toValue: (handle) => { + if (!handle) { + throwBindingError("Cannot use deleted val. handle = " + handle); + } + return emval_handle_array[handle].value; + }, + toHandle: (value) => { + switch (value) { + case undefined: + return 1; + case null: + return 2; + case true: + return 3; + case false: + return 4; + default: { + var handle = emval_free_list.length ? emval_free_list.pop() : emval_handle_array.length; + emval_handle_array[handle] = { refcount: 1, value: value }; + return handle; + } + } + }, + }; + var PureVirtualError = undefined; + function embind_init_charCodes() { + var codes = new Array(256); + for (var i = 0; i < 256; ++i) { + codes[i] = String.fromCharCode(i); + } + embind_charCodes = codes; + } + var embind_charCodes = undefined; + function readLatin1String(ptr) { + var ret = ""; + var c = ptr; + while (HEAPU8[c]) { + ret += embind_charCodes[HEAPU8[c++]]; + } + return ret; + } + function getInheritedInstanceCount() { + return Object.keys(registeredInstances).length; + } + function getLiveInheritedInstances() { + var rv = []; + for (var k in registeredInstances) { + if (Object.hasOwn(registeredInstances, k)) { + rv.push(registeredInstances[k]); + } + } + return rv; + } + var deletionQueue = []; + function flushPendingDeletes() { + while (deletionQueue.length) { + var obj = deletionQueue.pop(); + obj.$$.deleteScheduled = false; + obj["delete"](); + } + } + var delayFunction = undefined; + function setDelayFunction(fn) { + delayFunction = fn; + if (deletionQueue.length && delayFunction) { + delayFunction(flushPendingDeletes); + } + } + function init_embind() { + Module["getInheritedInstanceCount"] = getInheritedInstanceCount; + Module["getLiveInheritedInstances"] = getLiveInheritedInstances; + Module["flushPendingDeletes"] = flushPendingDeletes; + Module["setDelayFunction"] = setDelayFunction; + } + var registeredInstances = {}; + function getBasestPointer(class_, ptr) { + if (ptr === undefined) { + throwBindingError("ptr should not be undefined"); + } + while (class_.baseClass) { + ptr = class_.upcast(ptr); + class_ = class_.baseClass; + } + return ptr; + } + function registerInheritedInstance(class_, ptr, instance) { + ptr = getBasestPointer(class_, ptr); + if (Object.hasOwn(registeredInstances, ptr)) { + throwBindingError("Tried to register registered instance: " + ptr); + } else { + registeredInstances[ptr] = instance; + } + } + var registeredTypes = {}; + function getTypeName(type) { + var ptr = ___getTypeName(type); + var rv = readLatin1String(ptr); + _free(ptr); + return rv; + } + function requireRegisteredType(rawType, humanName) { + var impl = registeredTypes[rawType]; + if (undefined === impl) { + throwBindingError(humanName + " has unknown type " + getTypeName(rawType)); + } + return impl; + } + function unregisterInheritedInstance(class_, ptr) { + ptr = getBasestPointer(class_, ptr); + if (Object.hasOwn(registeredInstances, ptr)) { + delete registeredInstances[ptr]; + } else { + throwBindingError("Tried to unregister unregistered instance: " + ptr); + } + } + function detachFinalizer(handle) {} + var finalizationRegistry = false; + function runDestructor($$) { + if ($$.smartPtr) { + $$.smartPtrType.rawDestructor($$.smartPtr); + } else { + $$.ptrType.registeredClass.rawDestructor($$.ptr); + } + } + function releaseClassHandle($$) { + $$.count.value -= 1; + var toDelete = 0 === $$.count.value; + if (toDelete) { + runDestructor($$); + } + } + function downcastPointer(ptr, ptrClass, desiredClass) { + if (ptrClass === desiredClass) { + return ptr; + } + if (undefined === desiredClass.baseClass) { + return null; + } + var rv = downcastPointer(ptr, ptrClass, desiredClass.baseClass); + if (rv === null) { + return null; + } + return desiredClass.downcast(rv); + } + var registeredPointers = {}; + function getInheritedInstance(class_, ptr) { + ptr = getBasestPointer(class_, ptr); + return registeredInstances[ptr]; + } + var InternalError = undefined; + function throwInternalError(message) { + throw new InternalError(message); + } + function makeClassHandle(prototype, record) { + if (!record.ptrType || !record.ptr) { + throwInternalError("makeClassHandle requires ptr and ptrType"); + } + var hasSmartPtrType = !!record.smartPtrType; + var hasSmartPtr = !!record.smartPtr; + if (hasSmartPtrType !== hasSmartPtr) { + throwInternalError("Both smartPtrType and smartPtr must be specified"); + } + record.count = { value: 1 }; + return attachFinalizer(Object.create(prototype, { $$: { value: record } })); + } + function RegisteredPointer_fromWireType(ptr) { + var rawPointer = this.getPointee(ptr); + if (!rawPointer) { + this.destructor(ptr); + return null; + } + var registeredInstance = getInheritedInstance(this.registeredClass, rawPointer); + if (undefined !== registeredInstance) { + if (0 === registeredInstance.$$.count.value) { + registeredInstance.$$.ptr = rawPointer; + registeredInstance.$$.smartPtr = ptr; + return registeredInstance["clone"](); + } else { + var rv = registeredInstance["clone"](); + this.destructor(ptr); + return rv; + } + } + function makeDefaultHandle() { + if (this.isSmartPointer) { + return makeClassHandle(this.registeredClass.instancePrototype, { + ptrType: this.pointeeType, + ptr: rawPointer, + smartPtrType: this, + smartPtr: ptr, + }); + } else { + return makeClassHandle(this.registeredClass.instancePrototype, { + ptrType: this, + ptr: ptr, + }); + } + } + var actualType = this.registeredClass.getActualType(rawPointer); + var registeredPointerRecord = registeredPointers[actualType]; + if (!registeredPointerRecord) { + return makeDefaultHandle.call(this); + } + var toType; + if (this.isConst) { + toType = registeredPointerRecord.constPointerType; + } else { + toType = registeredPointerRecord.pointerType; + } + var dp = downcastPointer(rawPointer, this.registeredClass, toType.registeredClass); + if (dp === null) { + return makeDefaultHandle.call(this); + } + if (this.isSmartPointer) { + return makeClassHandle(toType.registeredClass.instancePrototype, { + ptrType: toType, + ptr: dp, + smartPtrType: this, + smartPtr: ptr, + }); + } else { + return makeClassHandle(toType.registeredClass.instancePrototype, { + ptrType: toType, + ptr: dp, + }); + } + } + function attachFinalizer(handle) { + if ("undefined" === typeof FinalizationRegistry) { + attachFinalizer = (handle) => handle; + return handle; + } + finalizationRegistry = new FinalizationRegistry((info) => { + console.warn(info.leakWarning.stack.replace(/^Error: /, "")); + releaseClassHandle(info.$$); + }); + attachFinalizer = (handle) => { + var $$ = handle.$$; + var hasSmartPtr = !!$$.smartPtr; + if (hasSmartPtr) { + var info = { $$: $$ }; + var cls = $$.ptrType.registeredClass; + info.leakWarning = new Error( + "Embind found a leaked C++ instance " + + cls.name + + " <" + + ptrToString($$.ptr) + + ">.\n" + + "We'll free it automatically in this case, but this functionality is not reliable across various environments.\n" + + "Make sure to invoke .delete() manually once you're done with the instance instead.\n" + + "Originally allocated", + ); + if ("captureStackTrace" in Error) { + Error.captureStackTrace(info.leakWarning, RegisteredPointer_fromWireType); + } + finalizationRegistry.register(handle, info, handle); + } + return handle; + }; + detachFinalizer = (handle) => finalizationRegistry.unregister(handle); + return attachFinalizer(handle); + } + function __embind_create_inheriting_constructor(constructorName, wrapperType, properties) { + constructorName = readLatin1String(constructorName); + wrapperType = requireRegisteredType(wrapperType, "wrapper"); + properties = Emval.toValue(properties); + var arraySlice = [].slice; + var registeredClass = wrapperType.registeredClass; + var wrapperPrototype = registeredClass.instancePrototype; + var baseClass = registeredClass.baseClass; + var baseClassPrototype = baseClass.instancePrototype; + var baseConstructor = registeredClass.baseClass.constructor; + var ctor = createNamedFunction(constructorName, function () { + registeredClass.baseClass.pureVirtualFunctions.forEach( + function (name) { + if (this[name] === baseClassPrototype[name]) { + throw new PureVirtualError( + "Pure virtual function " + name + " must be implemented in JavaScript", + ); + } + }.bind(this), + ); + Object.defineProperty(this, "__parent", { value: wrapperPrototype }); + this["__construct"].apply(this, arraySlice.call(arguments)); + }); + wrapperPrototype["__construct"] = function __construct() { + if (this === wrapperPrototype) { + throwBindingError("Pass correct 'this' to __construct"); + } + var inner = baseConstructor["implement"].apply( + undefined, + [this].concat(arraySlice.call(arguments)), + ); + detachFinalizer(inner); + var $$ = inner.$$; + inner["notifyOnDestruction"](); + $$.preservePointerOnDelete = true; + Object.defineProperties(this, { $$: { value: $$ } }); + attachFinalizer(this); + registerInheritedInstance(registeredClass, $$.ptr, this); + }; + wrapperPrototype["__destruct"] = function __destruct() { + if (this === wrapperPrototype) { + throwBindingError("Pass correct 'this' to __destruct"); + } + detachFinalizer(this); + unregisterInheritedInstance(registeredClass, this.$$.ptr); + }; + ctor.prototype = Object.create(wrapperPrototype); + for (var p in properties) { + ctor.prototype[p] = properties[p]; + } + return Emval.toHandle(ctor); + } + var structRegistrations = {}; + function runDestructors(destructors) { + while (destructors.length) { + var ptr = destructors.pop(); + var del = destructors.pop(); + del(ptr); + } + } + function simpleReadValueFromPointer(pointer) { + return this["fromWireType"](HEAP32[pointer >> 2]); + } + var awaitingDependencies = {}; + var typeDependencies = {}; + function whenDependentTypesAreResolved(myTypes, dependentTypes, getTypeConverters) { + myTypes.forEach(function (type) { + typeDependencies[type] = dependentTypes; + }); + function onComplete(typeConverters) { + var myTypeConverters = getTypeConverters(typeConverters); + if (myTypeConverters.length !== myTypes.length) { + throwInternalError("Mismatched type converter count"); + } + for (var i = 0; i < myTypes.length; ++i) { + registerType(myTypes[i], myTypeConverters[i]); + } + } + var typeConverters = new Array(dependentTypes.length); + var unregisteredTypes = []; + var registered = 0; + dependentTypes.forEach((dt, i) => { + if (Object.hasOwn(registeredTypes, dt)) { + typeConverters[i] = registeredTypes[dt]; + } else { + unregisteredTypes.push(dt); + if (!Object.hasOwn(awaitingDependencies, dt)) { + awaitingDependencies[dt] = []; + } + awaitingDependencies[dt].push(() => { + typeConverters[i] = registeredTypes[dt]; + ++registered; + if (registered === unregisteredTypes.length) { + onComplete(typeConverters); + } + }); + } + }); + if (0 === unregisteredTypes.length) { + onComplete(typeConverters); + } + } + function __embind_finalize_value_object(structType) { + var reg = structRegistrations[structType]; + delete structRegistrations[structType]; + var rawConstructor = reg.rawConstructor; + var rawDestructor = reg.rawDestructor; + var fieldRecords = reg.fields; + var fieldTypes = fieldRecords + .map((field) => field.getterReturnType) + .concat(fieldRecords.map((field) => field.setterArgumentType)); + whenDependentTypesAreResolved([structType], fieldTypes, (fieldTypes) => { + var fields = {}; + fieldRecords.forEach((field, i) => { + var fieldName = field.fieldName; + var getterReturnType = fieldTypes[i]; + var getter = field.getter; + var getterContext = field.getterContext; + var setterArgumentType = fieldTypes[i + fieldRecords.length]; + var setter = field.setter; + var setterContext = field.setterContext; + fields[fieldName] = { + read: (ptr) => { + return getterReturnType["fromWireType"](getter(getterContext, ptr)); + }, + write: (ptr, o) => { + var destructors = []; + setter(setterContext, ptr, setterArgumentType["toWireType"](destructors, o)); + runDestructors(destructors); + }, + }; + }); + return [ + { + name: reg.name, + fromWireType: function (ptr) { + var rv = {}; + for (var i in fields) { + rv[i] = fields[i].read(ptr); + } + rawDestructor(ptr); + return rv; + }, + toWireType: function (destructors, o) { + for (var fieldName in fields) { + if (!(fieldName in o)) { + throw new TypeError('Missing field: "' + fieldName + '"'); + } + } + var ptr = rawConstructor(); + for (fieldName in fields) { + fields[fieldName].write(ptr, o[fieldName]); + } + if (destructors !== null) { + destructors.push(rawDestructor, ptr); + } + return ptr; + }, + argPackAdvance: 8, + readValueFromPointer: simpleReadValueFromPointer, + destructorFunction: rawDestructor, + }, + ]; + }); + } + function __embind_register_bigint(primitiveType, name, size, minRange, maxRange) {} + function getShiftFromSize(size) { + switch (size) { + case 1: + return 0; + case 2: + return 1; + case 4: + return 2; + case 8: + return 3; + default: + throw new TypeError("Unknown type size: " + size); + } + } + function registerType(rawType, registeredInstance, options = {}) { + if (!("argPackAdvance" in registeredInstance)) { + throw new TypeError("registerType registeredInstance requires argPackAdvance"); + } + var name = registeredInstance.name; + if (!rawType) { + throwBindingError('type "' + name + '" must have a positive integer typeid pointer'); + } + if (Object.hasOwn(registeredTypes, rawType)) { + if (options.ignoreDuplicateRegistrations) { + return; + } else { + throwBindingError("Cannot register type '" + name + "' twice"); + } + } + registeredTypes[rawType] = registeredInstance; + delete typeDependencies[rawType]; + if (Object.hasOwn(awaitingDependencies, rawType)) { + var callbacks = awaitingDependencies[rawType]; + delete awaitingDependencies[rawType]; + callbacks.forEach((cb) => cb()); + } + } + function __embind_register_bool(rawType, name, size, trueValue, falseValue) { + var shift = getShiftFromSize(size); + name = readLatin1String(name); + registerType(rawType, { + name: name, + fromWireType: function (wt) { + return !!wt; + }, + toWireType: function (destructors, o) { + return o ? trueValue : falseValue; + }, + argPackAdvance: 8, + readValueFromPointer: function (pointer) { + var heap; + if (size === 1) { + heap = HEAP8; + } else if (size === 2) { + heap = HEAP16; + } else if (size === 4) { + heap = HEAP32; + } else { + throw new TypeError("Unknown boolean type size: " + name); + } + return this["fromWireType"](heap[pointer >> shift]); + }, + destructorFunction: null, + }); + } + function ClassHandle_isAliasOf(other) { + if (!(this instanceof ClassHandle)) { + return false; + } + if (!(other instanceof ClassHandle)) { + return false; + } + var leftClass = this.$$.ptrType.registeredClass; + var left = this.$$.ptr; + var rightClass = other.$$.ptrType.registeredClass; + var right = other.$$.ptr; + while (leftClass.baseClass) { + left = leftClass.upcast(left); + leftClass = leftClass.baseClass; + } + while (rightClass.baseClass) { + right = rightClass.upcast(right); + rightClass = rightClass.baseClass; + } + return leftClass === rightClass && left === right; + } + function shallowCopyInternalPointer(o) { + return { + count: o.count, + deleteScheduled: o.deleteScheduled, + preservePointerOnDelete: o.preservePointerOnDelete, + ptr: o.ptr, + ptrType: o.ptrType, + smartPtr: o.smartPtr, + smartPtrType: o.smartPtrType, + }; + } + function throwInstanceAlreadyDeleted(obj) { + function getInstanceTypeName(handle) { + return handle.$$.ptrType.registeredClass.name; + } + throwBindingError(getInstanceTypeName(obj) + " instance already deleted"); + } + function ClassHandle_clone() { + if (!this.$$.ptr) { + throwInstanceAlreadyDeleted(this); + } + if (this.$$.preservePointerOnDelete) { + this.$$.count.value += 1; + return this; + } else { + var clone = attachFinalizer( + Object.create(Object.getPrototypeOf(this), { + $$: { value: shallowCopyInternalPointer(this.$$) }, + }), + ); + clone.$$.count.value += 1; + clone.$$.deleteScheduled = false; + return clone; + } + } + function ClassHandle_delete() { + if (!this.$$.ptr) { + throwInstanceAlreadyDeleted(this); + } + if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) { + throwBindingError("Object already scheduled for deletion"); + } + detachFinalizer(this); + releaseClassHandle(this.$$); + if (!this.$$.preservePointerOnDelete) { + this.$$.smartPtr = undefined; + this.$$.ptr = undefined; + } + } + function ClassHandle_isDeleted() { + return !this.$$.ptr; + } + function ClassHandle_deleteLater() { + if (!this.$$.ptr) { + throwInstanceAlreadyDeleted(this); + } + if (this.$$.deleteScheduled && !this.$$.preservePointerOnDelete) { + throwBindingError("Object already scheduled for deletion"); + } + deletionQueue.push(this); + if (deletionQueue.length === 1 && delayFunction) { + delayFunction(flushPendingDeletes); + } + this.$$.deleteScheduled = true; + return this; + } + function init_ClassHandle() { + ClassHandle.prototype["isAliasOf"] = ClassHandle_isAliasOf; + ClassHandle.prototype["clone"] = ClassHandle_clone; + ClassHandle.prototype["delete"] = ClassHandle_delete; + ClassHandle.prototype["isDeleted"] = ClassHandle_isDeleted; + ClassHandle.prototype["deleteLater"] = ClassHandle_deleteLater; + } + function ClassHandle() {} + function ensureOverloadTable(proto, methodName, humanName) { + if (undefined === proto[methodName].overloadTable) { + var prevFunc = proto[methodName]; + proto[methodName] = function () { + if (!Object.hasOwn(proto[methodName].overloadTable, arguments.length)) { + throwBindingError( + "Function '" + + humanName + + "' called with an invalid number of arguments (" + + arguments.length + + ") - expects one of (" + + proto[methodName].overloadTable + + ")!", + ); + } + return proto[methodName].overloadTable[arguments.length].apply(this, arguments); + }; + proto[methodName].overloadTable = []; + proto[methodName].overloadTable[prevFunc.argCount] = prevFunc; + } + } + function exposePublicSymbol(name, value, numArguments) { + if (Object.hasOwn(Module, name)) { + if ( + undefined === numArguments || + (undefined !== Module[name].overloadTable && + undefined !== Module[name].overloadTable[numArguments]) + ) { + throwBindingError("Cannot register public name '" + name + "' twice"); + } + ensureOverloadTable(Module, name, name); + if (Object.hasOwn(Module, numArguments)) { + throwBindingError( + "Cannot register multiple overloads of a function with the same number of arguments (" + + numArguments + + ")!", + ); + } + Module[name].overloadTable[numArguments] = value; + } else { + Module[name] = value; + if (undefined !== numArguments) { + Module[name].numArguments = numArguments; + } + } + } + function RegisteredClass( + name, + constructor, + instancePrototype, + rawDestructor, + baseClass, + getActualType, + upcast, + downcast, + ) { + this.name = name; + this.constructor = constructor; + this.instancePrototype = instancePrototype; + this.rawDestructor = rawDestructor; + this.baseClass = baseClass; + this.getActualType = getActualType; + this.upcast = upcast; + this.downcast = downcast; + this.pureVirtualFunctions = []; + } + function upcastPointer(ptr, ptrClass, desiredClass) { + while (ptrClass !== desiredClass) { + if (!ptrClass.upcast) { + throwBindingError( + "Expected null or instance of " + + desiredClass.name + + ", got an instance of " + + ptrClass.name, + ); + } + ptr = ptrClass.upcast(ptr); + ptrClass = ptrClass.baseClass; + } + return ptr; + } + function constNoSmartPtrRawPointerToWireType(destructors, handle) { + if (handle === null) { + if (this.isReference) { + throwBindingError("null is not a valid " + this.name); + } + return 0; + } + if (!handle.$$) { + throwBindingError('Cannot pass "' + embindRepr(handle) + '" as a ' + this.name); + } + if (!handle.$$.ptr) { + throwBindingError("Cannot pass deleted object as a pointer of type " + this.name); + } + var handleClass = handle.$$.ptrType.registeredClass; + var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); + return ptr; + } + function genericPointerToWireType(destructors, handle) { + var ptr; + if (handle === null) { + if (this.isReference) { + throwBindingError("null is not a valid " + this.name); + } + if (this.isSmartPointer) { + ptr = this.rawConstructor(); + if (destructors !== null) { + destructors.push(this.rawDestructor, ptr); + } + return ptr; + } else { + return 0; + } + } + if (!handle.$$) { + throwBindingError('Cannot pass "' + embindRepr(handle) + '" as a ' + this.name); + } + if (!handle.$$.ptr) { + throwBindingError("Cannot pass deleted object as a pointer of type " + this.name); + } + if (!this.isConst && handle.$$.ptrType.isConst) { + throwBindingError( + "Cannot convert argument of type " + + (handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name) + + " to parameter type " + + this.name, + ); + } + var handleClass = handle.$$.ptrType.registeredClass; + ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); + if (this.isSmartPointer) { + if (undefined === handle.$$.smartPtr) { + throwBindingError("Passing raw pointer to smart pointer is illegal"); + } + switch (this.sharingPolicy) { + case 0: + if (handle.$$.smartPtrType === this) { + ptr = handle.$$.smartPtr; + } else { + throwBindingError( + "Cannot convert argument of type " + + (handle.$$.smartPtrType ? handle.$$.smartPtrType.name : handle.$$.ptrType.name) + + " to parameter type " + + this.name, + ); + } + break; + case 1: + ptr = handle.$$.smartPtr; + break; + case 2: + if (handle.$$.smartPtrType === this) { + ptr = handle.$$.smartPtr; + } else { + var clonedHandle = handle["clone"](); + ptr = this.rawShare( + ptr, + Emval.toHandle(function () { + clonedHandle["delete"](); + }), + ); + if (destructors !== null) { + destructors.push(this.rawDestructor, ptr); + } + } + break; + default: + throwBindingError("Unsupporting sharing policy"); + } + } + return ptr; + } + function nonConstNoSmartPtrRawPointerToWireType(destructors, handle) { + if (handle === null) { + if (this.isReference) { + throwBindingError("null is not a valid " + this.name); + } + return 0; + } + if (!handle.$$) { + throwBindingError('Cannot pass "' + embindRepr(handle) + '" as a ' + this.name); + } + if (!handle.$$.ptr) { + throwBindingError("Cannot pass deleted object as a pointer of type " + this.name); + } + if (handle.$$.ptrType.isConst) { + throwBindingError( + "Cannot convert argument of type " + + handle.$$.ptrType.name + + " to parameter type " + + this.name, + ); + } + var handleClass = handle.$$.ptrType.registeredClass; + var ptr = upcastPointer(handle.$$.ptr, handleClass, this.registeredClass); + return ptr; + } + function RegisteredPointer_getPointee(ptr) { + if (this.rawGetPointee) { + ptr = this.rawGetPointee(ptr); + } + return ptr; + } + function RegisteredPointer_destructor(ptr) { + if (this.rawDestructor) { + this.rawDestructor(ptr); + } + } + function RegisteredPointer_deleteObject(handle) { + if (handle !== null) { + handle["delete"](); + } + } + function init_RegisteredPointer() { + RegisteredPointer.prototype.getPointee = RegisteredPointer_getPointee; + RegisteredPointer.prototype.destructor = RegisteredPointer_destructor; + RegisteredPointer.prototype["argPackAdvance"] = 8; + RegisteredPointer.prototype["readValueFromPointer"] = simpleReadValueFromPointer; + RegisteredPointer.prototype["deleteObject"] = RegisteredPointer_deleteObject; + RegisteredPointer.prototype["fromWireType"] = RegisteredPointer_fromWireType; + } + function RegisteredPointer( + name, + registeredClass, + isReference, + isConst, + isSmartPointer, + pointeeType, + sharingPolicy, + rawGetPointee, + rawConstructor, + rawShare, + rawDestructor, + ) { + this.name = name; + this.registeredClass = registeredClass; + this.isReference = isReference; + this.isConst = isConst; + this.isSmartPointer = isSmartPointer; + this.pointeeType = pointeeType; + this.sharingPolicy = sharingPolicy; + this.rawGetPointee = rawGetPointee; + this.rawConstructor = rawConstructor; + this.rawShare = rawShare; + this.rawDestructor = rawDestructor; + if (!isSmartPointer && registeredClass.baseClass === undefined) { + if (isConst) { + this["toWireType"] = constNoSmartPtrRawPointerToWireType; + this.destructorFunction = null; + } else { + this["toWireType"] = nonConstNoSmartPtrRawPointerToWireType; + this.destructorFunction = null; + } + } else { + this["toWireType"] = genericPointerToWireType; + } + } + function replacePublicSymbol(name, value, numArguments) { + if (!Object.hasOwn(Module, name)) { + throwInternalError("Replacing nonexistant public symbol"); + } + if (undefined !== Module[name].overloadTable && undefined !== numArguments) { + Module[name].overloadTable[numArguments] = value; + } else { + Module[name] = value; + Module[name].argCount = numArguments; + } + } + function dynCallLegacy(sig, ptr, args) { + assert( + "dynCall_" + sig in Module, + "bad function pointer type - dynCall function not found for sig '" + sig + "'", + ); + if (args && args.length) { + assert(args.length === sig.substring(1).replace(/j/g, "--").length); + } else { + assert(sig.length == 1); + } + var f = Module["dynCall_" + sig]; + return args && args.length ? f.apply(null, [ptr].concat(args)) : f.call(null, ptr); + } + var wasmTableMirror = []; + function getWasmTableEntry(funcPtr) { + var func = wasmTableMirror[funcPtr]; + if (!func) { + if (funcPtr >= wasmTableMirror.length) wasmTableMirror.length = funcPtr + 1; + wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr); + } + assert( + wasmTable.get(funcPtr) == func, + "JavaScript-side Wasm function table mirror is out of date!", + ); + return func; + } + function dynCall(sig, ptr, args) { + if (sig.includes("j")) { + return dynCallLegacy(sig, ptr, args); + } + assert(getWasmTableEntry(ptr), "missing table entry in dynCall: " + ptr); + var rtn = getWasmTableEntry(ptr).apply(null, args); + return rtn; + } + function getDynCaller(sig, ptr) { + assert( + sig.includes("j") || sig.includes("p"), + "getDynCaller should only be called with i64 sigs", + ); + var argCache = []; + return function () { + argCache.length = 0; + Object.assign(argCache, arguments); + return dynCall(sig, ptr, argCache); + }; + } + function embind__requireFunction(signature, rawFunction) { + signature = readLatin1String(signature); + function makeDynCaller() { + if (signature.includes("j")) { + return getDynCaller(signature, rawFunction); + } + return getWasmTableEntry(rawFunction); + } + var fp = makeDynCaller(); + if (typeof fp != "function") { + throwBindingError( + "unknown function pointer with signature " + signature + ": " + rawFunction, + ); + } + return fp; + } + var UnboundTypeError = undefined; + function throwUnboundTypeError(message, types) { + var unboundTypes = []; + var seen = {}; + function visit(type) { + if (seen[type]) { + return; + } + if (registeredTypes[type]) { + return; + } + if (typeDependencies[type]) { + typeDependencies[type].forEach(visit); + return; + } + unboundTypes.push(type); + seen[type] = true; + } + types.forEach(visit); + throw new UnboundTypeError(message + ": " + unboundTypes.map(getTypeName).join([", "])); + } + function __embind_register_class( + rawType, + rawPointerType, + rawConstPointerType, + baseClassRawType, + getActualTypeSignature, + getActualType, + upcastSignature, + upcast, + downcastSignature, + downcast, + name, + destructorSignature, + rawDestructor, + ) { + name = readLatin1String(name); + getActualType = embind__requireFunction(getActualTypeSignature, getActualType); + if (upcast) { + upcast = embind__requireFunction(upcastSignature, upcast); + } + if (downcast) { + downcast = embind__requireFunction(downcastSignature, downcast); + } + rawDestructor = embind__requireFunction(destructorSignature, rawDestructor); + var legalFunctionName = makeLegalFunctionName(name); + exposePublicSymbol(legalFunctionName, function () { + throwUnboundTypeError("Cannot construct " + name + " due to unbound types", [ + baseClassRawType, + ]); + }); + whenDependentTypesAreResolved( + [rawType, rawPointerType, rawConstPointerType], + baseClassRawType ? [baseClassRawType] : [], + function (base) { + base = base[0]; + var baseClass; + var basePrototype; + if (baseClassRawType) { + baseClass = base.registeredClass; + basePrototype = baseClass.instancePrototype; + } else { + basePrototype = ClassHandle.prototype; + } + var constructor = createNamedFunction(legalFunctionName, function () { + if (Object.getPrototypeOf(this) !== instancePrototype) { + throw new BindingError("Use 'new' to construct " + name); + } + if (undefined === registeredClass.constructor_body) { + throw new BindingError(name + " has no accessible constructor"); + } + var body = registeredClass.constructor_body[arguments.length]; + if (undefined === body) { + throw new BindingError( + "Tried to invoke ctor of " + + name + + " with invalid number of parameters (" + + arguments.length + + ") - expected (" + + Object.keys(registeredClass.constructor_body).toString() + + ") parameters instead!", + ); + } + return body.apply(this, arguments); + }); + var instancePrototype = Object.create(basePrototype, { + constructor: { value: constructor }, + }); + constructor.prototype = instancePrototype; + var registeredClass = new RegisteredClass( + name, + constructor, + instancePrototype, + rawDestructor, + baseClass, + getActualType, + upcast, + downcast, + ); + var referenceConverter = new RegisteredPointer(name, registeredClass, true, false, false); + var pointerConverter = new RegisteredPointer( + name + "*", + registeredClass, + false, + false, + false, + ); + var constPointerConverter = new RegisteredPointer( + name + " const*", + registeredClass, + false, + true, + false, + ); + registeredPointers[rawType] = { + pointerType: pointerConverter, + constPointerType: constPointerConverter, + }; + replacePublicSymbol(legalFunctionName, constructor); + return [referenceConverter, pointerConverter, constPointerConverter]; + }, + ); + } + function craftInvokerFunction(humanName, argTypes, classType, cppInvokerFunc, cppTargetFunc) { + var argCount = argTypes.length; + if (argCount < 2) { + throwBindingError( + "argTypes array size mismatch! Must at least get return value and 'this' types!", + ); + } + var isClassMethodFunc = argTypes[1] !== null && classType !== null; + var needsDestructorStack = false; + for (var i = 1; i < argTypes.length; ++i) { + if (argTypes[i] !== null && argTypes[i].destructorFunction === undefined) { + needsDestructorStack = true; + break; + } + } + var returns = argTypes[0].name !== "void"; + var expectedArgCount = argCount - 2; + var argsWired = new Array(expectedArgCount); + var invokerFuncArgs = []; + var destructors = []; + return function () { + if (arguments.length !== expectedArgCount) { + throwBindingError( + "function " + + humanName + + " called with " + + arguments.length + + " arguments, expected " + + expectedArgCount + + " args!", + ); + } + destructors.length = 0; + var thisWired; + invokerFuncArgs.length = isClassMethodFunc ? 2 : 1; + invokerFuncArgs[0] = cppTargetFunc; + if (isClassMethodFunc) { + thisWired = argTypes[1]["toWireType"](destructors, this); + invokerFuncArgs[1] = thisWired; + } + for (var i = 0; i < expectedArgCount; ++i) { + argsWired[i] = argTypes[i + 2]["toWireType"](destructors, arguments[i]); + invokerFuncArgs.push(argsWired[i]); + } + var rv = cppInvokerFunc.apply(null, invokerFuncArgs); + function onDone(rv) { + if (needsDestructorStack) { + runDestructors(destructors); + } else { + for (var i = isClassMethodFunc ? 1 : 2; i < argTypes.length; i++) { + var param = i === 1 ? thisWired : argsWired[i - 2]; + if (argTypes[i].destructorFunction !== null) { + argTypes[i].destructorFunction(param); + } + } + } + if (returns) { + return argTypes[0]["fromWireType"](rv); + } + } + return onDone(rv); + }; + } + function heap32VectorToArray(count, firstElement) { + var array = []; + for (var i = 0; i < count; i++) { + array.push(HEAPU32[(firstElement + i * 4) >> 2]); + } + return array; + } + function __embind_register_class_class_function( + rawClassType, + methodName, + argCount, + rawArgTypesAddr, + invokerSignature, + rawInvoker, + fn, + ) { + var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); + methodName = readLatin1String(methodName); + rawInvoker = embind__requireFunction(invokerSignature, rawInvoker); + whenDependentTypesAreResolved([], [rawClassType], function (classType) { + classType = classType[0]; + var humanName = classType.name + "." + methodName; + function unboundTypesHandler() { + throwUnboundTypeError("Cannot call " + humanName + " due to unbound types", rawArgTypes); + } + if (methodName.startsWith("@@")) { + methodName = Symbol[methodName.substring(2)]; + } + var proto = classType.registeredClass.constructor; + if (undefined === proto[methodName]) { + unboundTypesHandler.argCount = argCount - 1; + proto[methodName] = unboundTypesHandler; + } else { + ensureOverloadTable(proto, methodName, humanName); + proto[methodName].overloadTable[argCount - 1] = unboundTypesHandler; + } + whenDependentTypesAreResolved([], rawArgTypes, function (argTypes) { + var invokerArgsArray = [argTypes[0], null].concat(argTypes.slice(1)); + var func = craftInvokerFunction(humanName, invokerArgsArray, null, rawInvoker, fn); + if (undefined === proto[methodName].overloadTable) { + func.argCount = argCount - 1; + proto[methodName] = func; + } else { + proto[methodName].overloadTable[argCount - 1] = func; + } + return []; + }); + return []; + }); + } + function __embind_register_class_constructor( + rawClassType, + argCount, + rawArgTypesAddr, + invokerSignature, + invoker, + rawConstructor, + ) { + assert(argCount > 0); + var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); + invoker = embind__requireFunction(invokerSignature, invoker); + whenDependentTypesAreResolved([], [rawClassType], function (classType) { + classType = classType[0]; + var humanName = "constructor " + classType.name; + if (undefined === classType.registeredClass.constructor_body) { + classType.registeredClass.constructor_body = []; + } + if (undefined !== classType.registeredClass.constructor_body[argCount - 1]) { + throw new BindingError( + "Cannot register multiple constructors with identical number of parameters (" + + (argCount - 1) + + ") for class '" + + classType.name + + "'! Overload resolution is currently only performed using the parameter count, not actual type info!", + ); + } + classType.registeredClass.constructor_body[argCount - 1] = () => { + throwUnboundTypeError( + "Cannot construct " + classType.name + " due to unbound types", + rawArgTypes, + ); + }; + whenDependentTypesAreResolved([], rawArgTypes, function (argTypes) { + argTypes.splice(1, 0, null); + classType.registeredClass.constructor_body[argCount - 1] = craftInvokerFunction( + humanName, + argTypes, + null, + invoker, + rawConstructor, + ); + return []; + }); + return []; + }); + } + function __embind_register_class_function( + rawClassType, + methodName, + argCount, + rawArgTypesAddr, + invokerSignature, + rawInvoker, + context, + isPureVirtual, + ) { + var rawArgTypes = heap32VectorToArray(argCount, rawArgTypesAddr); + methodName = readLatin1String(methodName); + rawInvoker = embind__requireFunction(invokerSignature, rawInvoker); + whenDependentTypesAreResolved([], [rawClassType], function (classType) { + classType = classType[0]; + var humanName = classType.name + "." + methodName; + if (methodName.startsWith("@@")) { + methodName = Symbol[methodName.substring(2)]; + } + if (isPureVirtual) { + classType.registeredClass.pureVirtualFunctions.push(methodName); + } + function unboundTypesHandler() { + throwUnboundTypeError("Cannot call " + humanName + " due to unbound types", rawArgTypes); + } + var proto = classType.registeredClass.instancePrototype; + var method = proto[methodName]; + if ( + undefined === method || + (undefined === method.overloadTable && + method.className !== classType.name && + method.argCount === argCount - 2) + ) { + unboundTypesHandler.argCount = argCount - 2; + unboundTypesHandler.className = classType.name; + proto[methodName] = unboundTypesHandler; + } else { + ensureOverloadTable(proto, methodName, humanName); + proto[methodName].overloadTable[argCount - 2] = unboundTypesHandler; + } + whenDependentTypesAreResolved([], rawArgTypes, function (argTypes) { + var memberFunction = craftInvokerFunction( + humanName, + argTypes, + classType, + rawInvoker, + context, + ); + if (undefined === proto[methodName].overloadTable) { + memberFunction.argCount = argCount - 2; + proto[methodName] = memberFunction; + } else { + proto[methodName].overloadTable[argCount - 2] = memberFunction; + } + return []; + }); + return []; + }); + } + function validateThis(this_, classType, humanName) { + if (!(this_ instanceof Object)) { + throwBindingError(humanName + ' with invalid "this": ' + this_); + } + if (!(this_ instanceof classType.registeredClass.constructor)) { + throwBindingError( + humanName + ' incompatible with "this" of type ' + this_.constructor.name, + ); + } + if (!this_.$$.ptr) { + throwBindingError( + "cannot call emscripten binding method " + humanName + " on deleted object", + ); + } + return upcastPointer( + this_.$$.ptr, + this_.$$.ptrType.registeredClass, + classType.registeredClass, + ); + } + function __embind_register_class_property( + classType, + fieldName, + getterReturnType, + getterSignature, + getter, + getterContext, + setterArgumentType, + setterSignature, + setter, + setterContext, + ) { + fieldName = readLatin1String(fieldName); + getter = embind__requireFunction(getterSignature, getter); + whenDependentTypesAreResolved([], [classType], function (classType) { + classType = classType[0]; + var humanName = classType.name + "." + fieldName; + var desc = { + get: function () { + throwUnboundTypeError("Cannot access " + humanName + " due to unbound types", [ + getterReturnType, + setterArgumentType, + ]); + }, + enumerable: true, + configurable: true, + }; + if (setter) { + desc.set = () => { + throwUnboundTypeError("Cannot access " + humanName + " due to unbound types", [ + getterReturnType, + setterArgumentType, + ]); + }; + } else { + desc.set = (v) => { + throwBindingError(humanName + " is a read-only property"); + }; + } + Object.defineProperty(classType.registeredClass.instancePrototype, fieldName, desc); + whenDependentTypesAreResolved( + [], + setter ? [getterReturnType, setterArgumentType] : [getterReturnType], + function (types) { + var getterReturnType = types[0]; + var desc = { + get: function () { + var ptr = validateThis(this, classType, humanName + " getter"); + return getterReturnType["fromWireType"](getter(getterContext, ptr)); + }, + enumerable: true, + }; + if (setter) { + setter = embind__requireFunction(setterSignature, setter); + var setterArgumentType = types[1]; + desc.set = function (v) { + var ptr = validateThis(this, classType, humanName + " setter"); + var destructors = []; + setter(setterContext, ptr, setterArgumentType["toWireType"](destructors, v)); + runDestructors(destructors); + }; + } + Object.defineProperty(classType.registeredClass.instancePrototype, fieldName, desc); + return []; + }, + ); + return []; + }); + } + function __emval_decref(handle) { + if (handle > 4 && 0 === --emval_handle_array[handle].refcount) { + emval_handle_array[handle] = undefined; + emval_free_list.push(handle); + } + } + function __embind_register_emval(rawType, name) { + name = readLatin1String(name); + registerType(rawType, { + name: name, + fromWireType: function (handle) { + var rv = Emval.toValue(handle); + __emval_decref(handle); + return rv; + }, + toWireType: function (destructors, value) { + return Emval.toHandle(value); + }, + argPackAdvance: 8, + readValueFromPointer: simpleReadValueFromPointer, + destructorFunction: null, + }); + } + function embindRepr(v) { + if (v === null) { + return "null"; + } + var t = typeof v; + if (t === "object" || t === "array" || t === "function") { + return v.toString(); + } else { + return "" + v; + } + } + function floatReadValueFromPointer(name, shift) { + switch (shift) { + case 2: + return function (pointer) { + return this["fromWireType"](HEAPF32[pointer >> 2]); + }; + case 3: + return function (pointer) { + return this["fromWireType"](HEAPF64[pointer >> 3]); + }; + default: + throw new TypeError("Unknown float type: " + name); + } + } + function __embind_register_float(rawType, name, size) { + var shift = getShiftFromSize(size); + name = readLatin1String(name); + registerType(rawType, { + name: name, + fromWireType: function (value) { + return value; + }, + toWireType: function (destructors, value) { + if (typeof value != "number" && typeof value != "boolean") { + throw new TypeError('Cannot convert "' + embindRepr(value) + '" to ' + this.name); + } + return value; + }, + argPackAdvance: 8, + readValueFromPointer: floatReadValueFromPointer(name, shift), + destructorFunction: null, + }); + } + function __embind_register_function( + name, + argCount, + rawArgTypesAddr, + signature, + rawInvoker, + fn, + ) { + var argTypes = heap32VectorToArray(argCount, rawArgTypesAddr); + name = readLatin1String(name); + rawInvoker = embind__requireFunction(signature, rawInvoker); + exposePublicSymbol( + name, + function () { + throwUnboundTypeError("Cannot call " + name + " due to unbound types", argTypes); + }, + argCount - 1, + ); + whenDependentTypesAreResolved([], argTypes, function (argTypes) { + var invokerArgsArray = [argTypes[0], null].concat(argTypes.slice(1)); + replacePublicSymbol( + name, + craftInvokerFunction(name, invokerArgsArray, null, rawInvoker, fn), + argCount - 1, + ); + return []; + }); + } + function integerReadValueFromPointer(name, shift, signed) { + switch (shift) { + case 0: + return signed + ? function readS8FromPointer(pointer) { + return HEAP8[pointer]; + } + : function readU8FromPointer(pointer) { + return HEAPU8[pointer]; + }; + case 1: + return signed + ? function readS16FromPointer(pointer) { + return HEAP16[pointer >> 1]; + } + : function readU16FromPointer(pointer) { + return HEAPU16[pointer >> 1]; + }; + case 2: + return signed + ? function readS32FromPointer(pointer) { + return HEAP32[pointer >> 2]; + } + : function readU32FromPointer(pointer) { + return HEAPU32[pointer >> 2]; + }; + default: + throw new TypeError("Unknown integer type: " + name); + } + } + function __embind_register_integer(primitiveType, name, size, minRange, maxRange) { + name = readLatin1String(name); + if (maxRange === -1) { + maxRange = 4294967295; + } + var shift = getShiftFromSize(size); + var fromWireType = (value) => value; + if (minRange === 0) { + var bitshift = 32 - 8 * size; + fromWireType = (value) => (value << bitshift) >>> bitshift; + } + var isUnsignedType = name.includes("unsigned"); + var checkAssertions = (value, toTypeName) => { + if (typeof value != "number" && typeof value != "boolean") { + throw new TypeError('Cannot convert "' + embindRepr(value) + '" to ' + toTypeName); + } + if (value < minRange || value > maxRange) { + throw new TypeError( + 'Passing a number "' + + embindRepr(value) + + '" from JS side to C/C++ side to an argument of type "' + + name + + '", which is outside the valid range [' + + minRange + + ", " + + maxRange + + "]!", + ); + } + }; + var toWireType; + if (isUnsignedType) { + toWireType = function (destructors, value) { + checkAssertions(value, this.name); + return value >>> 0; + }; + } else { + toWireType = function (destructors, value) { + checkAssertions(value, this.name); + return value; + }; + } + registerType(primitiveType, { + name: name, + fromWireType: fromWireType, + toWireType: toWireType, + argPackAdvance: 8, + readValueFromPointer: integerReadValueFromPointer(name, shift, minRange !== 0), + destructorFunction: null, + }); + } + function __embind_register_memory_view(rawType, dataTypeIndex, name) { + var typeMapping = [ + Int8Array, + Uint8Array, + Int16Array, + Uint16Array, + Int32Array, + Uint32Array, + Float32Array, + Float64Array, + ]; + var TA = typeMapping[dataTypeIndex]; + function decodeMemoryView(handle) { + handle = handle >> 2; + var heap = HEAPU32; + var size = heap[handle]; + var data = heap[handle + 1]; + return new TA(buffer, data, size); + } + name = readLatin1String(name); + registerType( + rawType, + { + name: name, + fromWireType: decodeMemoryView, + argPackAdvance: 8, + readValueFromPointer: decodeMemoryView, + }, + { ignoreDuplicateRegistrations: true }, + ); + } + function __embind_register_std_string(rawType, name) { + name = readLatin1String(name); + var stdStringIsUTF8 = name === "std::string"; + registerType(rawType, { + name: name, + fromWireType: function (value) { + var length = HEAPU32[value >> 2]; + var payload = value + 4; + var str; + if (stdStringIsUTF8) { + var decodeStartPtr = payload; + for (var i = 0; i <= length; ++i) { + var currentBytePtr = payload + i; + if (i == length || HEAPU8[currentBytePtr] == 0) { + var maxRead = currentBytePtr - decodeStartPtr; + var stringSegment = UTF8ToString(decodeStartPtr, maxRead); + if (str === undefined) { + str = stringSegment; + } else { + str += String.fromCharCode(0); + str += stringSegment; + } + decodeStartPtr = currentBytePtr + 1; + } + } + } else { + var a = new Array(length); + for (var i = 0; i < length; ++i) { + a[i] = String.fromCharCode(HEAPU8[payload + i]); + } + str = a.join(""); + } + _free(value); + return str; + }, + toWireType: function (destructors, value) { + if (value instanceof ArrayBuffer) { + value = new Uint8Array(value); + } + var length; + var valueIsOfTypeString = typeof value == "string"; + if ( + !( + valueIsOfTypeString || + value instanceof Uint8Array || + value instanceof Uint8ClampedArray || + value instanceof Int8Array + ) + ) { + throwBindingError("Cannot pass non-string to std::string"); + } + if (stdStringIsUTF8 && valueIsOfTypeString) { + length = lengthBytesUTF8(value); + } else { + length = value.length; + } + var base = _malloc(4 + length + 1); + var ptr = base + 4; + HEAPU32[base >> 2] = length; + if (stdStringIsUTF8 && valueIsOfTypeString) { + stringToUTF8(value, ptr, length + 1); + } else { + if (valueIsOfTypeString) { + for (var i = 0; i < length; ++i) { + var charCode = value.charCodeAt(i); + if (charCode > 255) { + _free(ptr); + throwBindingError("String has UTF-16 code units that do not fit in 8 bits"); + } + HEAPU8[ptr + i] = charCode; + } + } else { + for (var i = 0; i < length; ++i) { + HEAPU8[ptr + i] = value[i]; + } + } + } + if (destructors !== null) { + destructors.push(_free, base); + } + return base; + }, + argPackAdvance: 8, + readValueFromPointer: simpleReadValueFromPointer, + destructorFunction: function (ptr) { + _free(ptr); + }, + }); + } + var UTF16Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf-16le") : undefined; + function UTF16ToString(ptr, maxBytesToRead) { + assert(ptr % 2 == 0, "Pointer passed to UTF16ToString must be aligned to two bytes!"); + var endPtr = ptr; + var idx = endPtr >> 1; + var maxIdx = idx + maxBytesToRead / 2; + while (!(idx >= maxIdx) && HEAPU16[idx]) ++idx; + endPtr = idx << 1; + if (endPtr - ptr > 32 && UTF16Decoder) + return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr)); + var str = ""; + for (var i = 0; !(i >= maxBytesToRead / 2); ++i) { + var codeUnit = HEAP16[(ptr + i * 2) >> 1]; + if (codeUnit == 0) break; + str += String.fromCharCode(codeUnit); + } + return str; + } + function stringToUTF16(str, outPtr, maxBytesToWrite) { + assert(outPtr % 2 == 0, "Pointer passed to stringToUTF16 must be aligned to two bytes!"); + assert( + typeof maxBytesToWrite == "number", + "stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!", + ); + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 2147483647; + } + if (maxBytesToWrite < 2) return 0; + maxBytesToWrite -= 2; + var startPtr = outPtr; + var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length; + for (var i = 0; i < numCharsToWrite; ++i) { + var codeUnit = str.charCodeAt(i); + HEAP16[outPtr >> 1] = codeUnit; + outPtr += 2; + } + HEAP16[outPtr >> 1] = 0; + return outPtr - startPtr; + } + function lengthBytesUTF16(str) { + return str.length * 2; + } + function UTF32ToString(ptr, maxBytesToRead) { + assert(ptr % 4 == 0, "Pointer passed to UTF32ToString must be aligned to four bytes!"); + var i = 0; + var str = ""; + while (!(i >= maxBytesToRead / 4)) { + var utf32 = HEAP32[(ptr + i * 4) >> 2]; + if (utf32 == 0) break; + ++i; + if (utf32 >= 65536) { + var ch = utf32 - 65536; + str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023)); + } else { + str += String.fromCharCode(utf32); + } + } + return str; + } + function stringToUTF32(str, outPtr, maxBytesToWrite) { + assert(outPtr % 4 == 0, "Pointer passed to stringToUTF32 must be aligned to four bytes!"); + assert( + typeof maxBytesToWrite == "number", + "stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!", + ); + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 2147483647; + } + if (maxBytesToWrite < 4) return 0; + var startPtr = outPtr; + var endPtr = startPtr + maxBytesToWrite - 4; + for (var i = 0; i < str.length; ++i) { + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 55296 && codeUnit <= 57343) { + var trailSurrogate = str.charCodeAt(++i); + codeUnit = (65536 + ((codeUnit & 1023) << 10)) | (trailSurrogate & 1023); + } + HEAP32[outPtr >> 2] = codeUnit; + outPtr += 4; + if (outPtr + 4 > endPtr) break; + } + HEAP32[outPtr >> 2] = 0; + return outPtr - startPtr; + } + function lengthBytesUTF32(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 55296 && codeUnit <= 57343) ++i; + len += 4; + } + return len; + } + function __embind_register_std_wstring(rawType, charSize, name) { + name = readLatin1String(name); + var decodeString, encodeString, getHeap, lengthBytesUTF, shift; + if (charSize === 2) { + decodeString = UTF16ToString; + encodeString = stringToUTF16; + lengthBytesUTF = lengthBytesUTF16; + getHeap = () => HEAPU16; + shift = 1; + } else if (charSize === 4) { + decodeString = UTF32ToString; + encodeString = stringToUTF32; + lengthBytesUTF = lengthBytesUTF32; + getHeap = () => HEAPU32; + shift = 2; + } + registerType(rawType, { + name: name, + fromWireType: function (value) { + var length = HEAPU32[value >> 2]; + var HEAP = getHeap(); + var str; + var decodeStartPtr = value + 4; + for (var i = 0; i <= length; ++i) { + var currentBytePtr = value + 4 + i * charSize; + if (i == length || HEAP[currentBytePtr >> shift] == 0) { + var maxReadBytes = currentBytePtr - decodeStartPtr; + var stringSegment = decodeString(decodeStartPtr, maxReadBytes); + if (str === undefined) { + str = stringSegment; + } else { + str += String.fromCharCode(0); + str += stringSegment; + } + decodeStartPtr = currentBytePtr + charSize; + } + } + _free(value); + return str; + }, + toWireType: function (destructors, value) { + if (!(typeof value == "string")) { + throwBindingError("Cannot pass non-string to C++ string type " + name); + } + var length = lengthBytesUTF(value); + var ptr = _malloc(4 + length + charSize); + HEAPU32[ptr >> 2] = length >> shift; + encodeString(value, ptr + 4, length + charSize); + if (destructors !== null) { + destructors.push(_free, ptr); + } + return ptr; + }, + argPackAdvance: 8, + readValueFromPointer: simpleReadValueFromPointer, + destructorFunction: function (ptr) { + _free(ptr); + }, + }); + } + function __embind_register_value_object( + rawType, + name, + constructorSignature, + rawConstructor, + destructorSignature, + rawDestructor, + ) { + structRegistrations[rawType] = { + name: readLatin1String(name), + rawConstructor: embind__requireFunction(constructorSignature, rawConstructor), + rawDestructor: embind__requireFunction(destructorSignature, rawDestructor), + fields: [], + }; + } + function __embind_register_value_object_field( + structType, + fieldName, + getterReturnType, + getterSignature, + getter, + getterContext, + setterArgumentType, + setterSignature, + setter, + setterContext, + ) { + structRegistrations[structType].fields.push({ + fieldName: readLatin1String(fieldName), + getterReturnType: getterReturnType, + getter: embind__requireFunction(getterSignature, getter), + getterContext: getterContext, + setterArgumentType: setterArgumentType, + setter: embind__requireFunction(setterSignature, setter), + setterContext: setterContext, + }); + } + function __embind_register_void(rawType, name) { + name = readLatin1String(name); + registerType(rawType, { + isVoid: true, + name: name, + argPackAdvance: 0, + fromWireType: function () { + return undefined; + }, + toWireType: function (destructors, o) { + return undefined; + }, + }); + } + var nowIsMonotonic = true; + function __emscripten_get_now_is_monotonic() { + return nowIsMonotonic; + } + function __emval_as(handle, returnType, destructorsRef) { + handle = Emval.toValue(handle); + returnType = requireRegisteredType(returnType, "emval::as"); + var destructors = []; + var rd = Emval.toHandle(destructors); + HEAPU32[destructorsRef >> 2] = rd; + return returnType["toWireType"](destructors, handle); + } + var emval_symbols = {}; + function getStringOrSymbol(address) { + var symbol = emval_symbols[address]; + if (symbol === undefined) { + return readLatin1String(address); + } + return symbol; + } + var emval_methodCallers = []; + function __emval_call_void_method(caller, handle, methodName, args) { + caller = emval_methodCallers[caller]; + handle = Emval.toValue(handle); + methodName = getStringOrSymbol(methodName); + caller(handle, methodName, null, args); + } + function emval_get_global() { + if (typeof globalThis == "object") { + return globalThis; + } + function testGlobal(obj) { + obj["$$$embind_global$$$"] = obj; + var success = typeof $$$embind_global$$$ == "object" && obj["$$$embind_global$$$"] == obj; + if (!success) { + delete obj["$$$embind_global$$$"]; + } + return success; + } + if (typeof $$$embind_global$$$ == "object") { + return $$$embind_global$$$; + } + if (typeof global == "object" && testGlobal(global)) { + $$$embind_global$$$ = global; + } else if (typeof self == "object" && testGlobal(self)) { + $$$embind_global$$$ = self; + } + if (typeof $$$embind_global$$$ == "object") { + return $$$embind_global$$$; + } + throw Error("unable to get global object."); + } + function __emval_get_global(name) { + if (name === 0) { + return Emval.toHandle(emval_get_global()); + } else { + name = getStringOrSymbol(name); + return Emval.toHandle(emval_get_global()[name]); + } + } + function emval_addMethodCaller(caller) { + var id = emval_methodCallers.length; + emval_methodCallers.push(caller); + return id; + } + function emval_lookupTypes(argCount, argTypes) { + var a = new Array(argCount); + for (var i = 0; i < argCount; ++i) { + a[i] = requireRegisteredType(HEAPU32[(argTypes + i * POINTER_SIZE) >> 2], "parameter " + i); + } + return a; + } + var emval_registeredMethods = []; + function __emval_get_method_caller(argCount, argTypes) { + var types = emval_lookupTypes(argCount, argTypes); + var retType = types[0]; + var signatureName = + retType.name + + "_$" + + types + .slice(1) + .map(function (t) { + return t.name; + }) + .join("_") + + "$"; + var returnId = emval_registeredMethods[signatureName]; + if (returnId !== undefined) { + return returnId; + } + var argN = new Array(argCount - 1); + var invokerFunction = (handle, name, destructors, args) => { + var offset = 0; + for (var i = 0; i < argCount - 1; ++i) { + argN[i] = types[i + 1]["readValueFromPointer"](args + offset); + offset += types[i + 1]["argPackAdvance"]; + } + var rv = handle[name].apply(handle, argN); + for (var i = 0; i < argCount - 1; ++i) { + if (types[i + 1].deleteObject) { + types[i + 1].deleteObject(argN[i]); + } + } + if (!retType.isVoid) { + return retType["toWireType"](destructors, rv); + } + }; + returnId = emval_addMethodCaller(invokerFunction); + emval_registeredMethods[signatureName] = returnId; + return returnId; + } + function __emval_get_property(handle, key) { + handle = Emval.toValue(handle); + key = Emval.toValue(key); + return Emval.toHandle(handle[key]); + } + function __emval_incref(handle) { + if (handle > 4) { + emval_handle_array[handle].refcount += 1; + } + } + function __emval_instanceof(object, constructor) { + object = Emval.toValue(object); + constructor = Emval.toValue(constructor); + return object instanceof constructor; + } + function __emval_new_cstring(v) { + return Emval.toHandle(getStringOrSymbol(v)); + } + function __emval_run_destructors(handle) { + var destructors = Emval.toValue(handle); + runDestructors(destructors); + __emval_decref(handle); + } + function __emval_set_property(handle, key, value) { + handle = Emval.toValue(handle); + key = Emval.toValue(key); + value = Emval.toValue(value); + handle[key] = value; + } + function __emval_take_value(type, arg) { + type = requireRegisteredType(type, "_emval_take_value"); + var v = type["readValueFromPointer"](arg); + return Emval.toHandle(v); + } + function __emval_typeof(handle) { + handle = Emval.toValue(handle); + return Emval.toHandle(typeof handle); + } + function readI53FromI64(ptr) { + return HEAPU32[ptr >> 2] + HEAP32[(ptr + 4) >> 2] * 4294967296; + } + function __gmtime_js(time, tmPtr) { + var date = new Date(readI53FromI64(time) * 1e3); + HEAP32[tmPtr >> 2] = date.getUTCSeconds(); + HEAP32[(tmPtr + 4) >> 2] = date.getUTCMinutes(); + HEAP32[(tmPtr + 8) >> 2] = date.getUTCHours(); + HEAP32[(tmPtr + 12) >> 2] = date.getUTCDate(); + HEAP32[(tmPtr + 16) >> 2] = date.getUTCMonth(); + HEAP32[(tmPtr + 20) >> 2] = date.getUTCFullYear() - 1900; + HEAP32[(tmPtr + 24) >> 2] = date.getUTCDay(); + var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); + var yday = ((date.getTime() - start) / (1e3 * 60 * 60 * 24)) | 0; + HEAP32[(tmPtr + 28) >> 2] = yday; + } + function __isLeapYear(year) { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); + } + var __MONTH_DAYS_LEAP_CUMULATIVE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335]; + var __MONTH_DAYS_REGULAR_CUMULATIVE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; + function __yday_from_date(date) { + var isLeapYear = __isLeapYear(date.getFullYear()); + var monthDaysCumulative = isLeapYear + ? __MONTH_DAYS_LEAP_CUMULATIVE + : __MONTH_DAYS_REGULAR_CUMULATIVE; + var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1; + return yday; + } + function __localtime_js(time, tmPtr) { + var date = new Date(readI53FromI64(time) * 1e3); + HEAP32[tmPtr >> 2] = date.getSeconds(); + HEAP32[(tmPtr + 4) >> 2] = date.getMinutes(); + HEAP32[(tmPtr + 8) >> 2] = date.getHours(); + HEAP32[(tmPtr + 12) >> 2] = date.getDate(); + HEAP32[(tmPtr + 16) >> 2] = date.getMonth(); + HEAP32[(tmPtr + 20) >> 2] = date.getFullYear() - 1900; + HEAP32[(tmPtr + 24) >> 2] = date.getDay(); + var yday = __yday_from_date(date) | 0; + HEAP32[(tmPtr + 28) >> 2] = yday; + HEAP32[(tmPtr + 36) >> 2] = -(date.getTimezoneOffset() * 60); + var start = new Date(date.getFullYear(), 0, 1); + var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); + var winterOffset = start.getTimezoneOffset(); + var dst = + (summerOffset != winterOffset && + date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0; + HEAP32[(tmPtr + 32) >> 2] = dst; + } + function __mktime_js(tmPtr) { + var date = new Date( + HEAP32[(tmPtr + 20) >> 2] + 1900, + HEAP32[(tmPtr + 16) >> 2], + HEAP32[(tmPtr + 12) >> 2], + HEAP32[(tmPtr + 8) >> 2], + HEAP32[(tmPtr + 4) >> 2], + HEAP32[tmPtr >> 2], + 0, + ); + var dst = HEAP32[(tmPtr + 32) >> 2]; + var guessedOffset = date.getTimezoneOffset(); + var start = new Date(date.getFullYear(), 0, 1); + var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); + var winterOffset = start.getTimezoneOffset(); + var dstOffset = Math.min(winterOffset, summerOffset); + if (dst < 0) { + HEAP32[(tmPtr + 32) >> 2] = Number( + summerOffset != winterOffset && dstOffset == guessedOffset, + ); + } else if (dst > 0 != (dstOffset == guessedOffset)) { + var nonDstOffset = Math.max(winterOffset, summerOffset); + var trueOffset = dst > 0 ? dstOffset : nonDstOffset; + date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4); + } + HEAP32[(tmPtr + 24) >> 2] = date.getDay(); + var yday = __yday_from_date(date) | 0; + HEAP32[(tmPtr + 28) >> 2] = yday; + HEAP32[tmPtr >> 2] = date.getSeconds(); + HEAP32[(tmPtr + 4) >> 2] = date.getMinutes(); + HEAP32[(tmPtr + 8) >> 2] = date.getHours(); + HEAP32[(tmPtr + 12) >> 2] = date.getDate(); + HEAP32[(tmPtr + 16) >> 2] = date.getMonth(); + HEAP32[(tmPtr + 20) >> 2] = date.getYear(); + return (date.getTime() / 1e3) | 0; + } + function __mmap_js(len, prot, flags, fd, off, allocated, addr) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var res = FS.mmap(stream, len, off, prot, flags); + var ptr = res.ptr; + HEAP32[allocated >> 2] = res.allocated; + HEAPU32[addr >> 2] = ptr; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e instanceof FS.ErrnoError)) throw e; + return -e.errno; + } + } + function __munmap_js(addr, len, prot, flags, fd, offset) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + if (prot & 2) { + SYSCALLS.doMsync(addr, stream, len, flags, offset); + } + FS.munmap(stream); + } catch (e) { + if (typeof FS == "undefined" || !(e instanceof FS.ErrnoError)) throw e; + return -e.errno; + } + } + function allocateUTF8(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = _malloc(size); + if (ret) stringToUTF8Array(str, HEAP8, ret, size); + return ret; + } + function __tzset_js(timezone, daylight, tzname) { + var currentYear = new Date().getFullYear(); + var winter = new Date(currentYear, 0, 1); + var summer = new Date(currentYear, 6, 1); + var winterOffset = winter.getTimezoneOffset(); + var summerOffset = summer.getTimezoneOffset(); + var stdTimezoneOffset = Math.max(winterOffset, summerOffset); + HEAPU32[timezone >> 2] = stdTimezoneOffset * 60; + HEAP32[daylight >> 2] = Number(winterOffset != summerOffset); + function extractZone(date) { + var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); + return match ? match[1] : "GMT"; + } + var winterName = extractZone(winter); + var summerName = extractZone(summer); + var winterNamePtr = allocateUTF8(winterName); + var summerNamePtr = allocateUTF8(summerName); + if (summerOffset < winterOffset) { + HEAPU32[tzname >> 2] = winterNamePtr; + HEAPU32[(tzname + 4) >> 2] = summerNamePtr; + } else { + HEAPU32[tzname >> 2] = summerNamePtr; + HEAPU32[(tzname + 4) >> 2] = winterNamePtr; + } + } + function _abort() { + abort("native code called abort()"); + } + var readEmAsmArgsArray = []; + function readEmAsmArgs(sigPtr, buf) { + assert(Array.isArray(readEmAsmArgsArray)); + assert(buf % 16 == 0); + readEmAsmArgsArray.length = 0; + var ch; + buf >>= 2; + while ((ch = HEAPU8[sigPtr++])) { + var chr = String.fromCharCode(ch); + var validChars = ["d", "f", "i"]; + assert( + validChars.includes(chr), + "Invalid character " + + ch + + '("' + + chr + + '") in readEmAsmArgs! Use only [' + + validChars + + '], and do not specify "v" for void return argument.', + ); + buf += (ch != 105) & buf; + readEmAsmArgsArray.push(ch == 105 ? HEAP32[buf] : HEAPF64[buf++ >> 1]); + ++buf; + } + return readEmAsmArgsArray; + } + function runEmAsmFunction(code, sigPtr, argbuf) { + var args = readEmAsmArgs(sigPtr, argbuf); + if (!Object.hasOwn(ASM_CONSTS, code)) abort("No EM_ASM constant found at address " + code); + return ASM_CONSTS[code].apply(null, args); + } + function _emscripten_asm_const_int(code, sigPtr, argbuf) { + return runEmAsmFunction(code, sigPtr, argbuf); + } + function _emscripten_date_now() { + return Date.now(); + } + function getHeapMax() { + return 2147483648; + } + function _emscripten_get_heap_max() { + return getHeapMax(); + } + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num); + } + function _emscripten_pc_get_function(pc) { + abort("Cannot use emscripten_pc_get_function without -sUSE_OFFSET_CONVERTER"); + } + function emscripten_realloc_buffer(size) { + try { + wasmMemory.grow((size - buffer.byteLength + 65535) >>> 16); + updateGlobalBufferAndViews(wasmMemory.buffer); + return 1; + } catch (e) { + err( + "emscripten_realloc_buffer: Attempted to grow heap from " + + buffer.byteLength + + " bytes to " + + size + + " bytes, but got error: " + + e, + ); + } + } + function _emscripten_resize_heap(requestedSize) { + var oldSize = HEAPU8.length; + requestedSize = requestedSize >>> 0; + assert(requestedSize > oldSize); + var maxHeapSize = getHeapMax(); + if (requestedSize > maxHeapSize) { + err( + "Cannot enlarge memory, asked to go up to " + + requestedSize + + " bytes, but the limit is " + + maxHeapSize + + " bytes!", + ); + return false; + } + let alignUp = (x, multiple) => x + ((multiple - (x % multiple)) % multiple); + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown); + overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); + var newSize = Math.min( + maxHeapSize, + alignUp(Math.max(requestedSize, overGrownHeapSize), 65536), + ); + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + return true; + } + } + err( + "Failed to grow the heap from " + + oldSize + + " bytes to " + + newSize + + " bytes, not enough memory!", + ); + return false; + } + function convertFrameToPC(frame) { + abort( + "Cannot use convertFrameToPC (needed by __builtin_return_address) without -sUSE_OFFSET_CONVERTER", + ); + return 0; + } + var UNWIND_CACHE = {}; + function saveInUnwindCache(callstack) { + callstack.forEach((frame) => { + var pc = convertFrameToPC(frame); + if (pc) { + UNWIND_CACHE[pc] = frame; + } + }); + } + function jsStackTrace() { + var error = new Error(); + if (!error.stack) { + try { + throw new Error(); + } catch (e) { + error = e; + } + if (!error.stack) { + return "(no stack trace available)"; + } + } + return error.stack.toString(); + } + function _emscripten_stack_snapshot() { + var callstack = jsStackTrace().split("\n"); + if (callstack[0] == "Error") { + callstack.shift(); + } + saveInUnwindCache(callstack); + UNWIND_CACHE.last_addr = convertFrameToPC(callstack[3]); + UNWIND_CACHE.last_stack = callstack; + return UNWIND_CACHE.last_addr; + } + function _emscripten_stack_unwind_buffer(addr, buffer, count) { + var stack; + if (UNWIND_CACHE.last_addr == addr) { + stack = UNWIND_CACHE.last_stack; + } else { + stack = jsStackTrace().split("\n"); + if (stack[0] == "Error") { + stack.shift(); + } + saveInUnwindCache(stack); + } + var offset = 3; + while (stack[offset] && convertFrameToPC(stack[offset]) != addr) { + ++offset; + } + for (var i = 0; i < count && stack[i + offset]; ++i) { + HEAP32[(buffer + i * 4) >> 2] = convertFrameToPC(stack[i + offset]); + } + return i; + } + function __webgl_enable_ANGLE_instanced_arrays(ctx) { + var ext = ctx.getExtension("ANGLE_instanced_arrays"); + if (ext) { + ctx["vertexAttribDivisor"] = function (index, divisor) { + ext["vertexAttribDivisorANGLE"](index, divisor); + }; + ctx["drawArraysInstanced"] = function (mode, first, count, primcount) { + ext["drawArraysInstancedANGLE"](mode, first, count, primcount); + }; + ctx["drawElementsInstanced"] = function (mode, count, type, indices, primcount) { + ext["drawElementsInstancedANGLE"](mode, count, type, indices, primcount); + }; + return 1; + } + } + function __webgl_enable_OES_vertex_array_object(ctx) { + var ext = ctx.getExtension("OES_vertex_array_object"); + if (ext) { + ctx["createVertexArray"] = function () { + return ext["createVertexArrayOES"](); + }; + ctx["deleteVertexArray"] = function (vao) { + ext["deleteVertexArrayOES"](vao); + }; + ctx["bindVertexArray"] = function (vao) { + ext["bindVertexArrayOES"](vao); + }; + ctx["isVertexArray"] = function (vao) { + return ext["isVertexArrayOES"](vao); + }; + return 1; + } + } + function __webgl_enable_WEBGL_draw_buffers(ctx) { + var ext = ctx.getExtension("WEBGL_draw_buffers"); + if (ext) { + ctx["drawBuffers"] = function (n, bufs) { + ext["drawBuffersWEBGL"](n, bufs); + }; + return 1; + } + } + function __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx) { + return !!(ctx.dibvbi = ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance")); + } + function __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx) { + return !!(ctx.mdibvbi = ctx.getExtension( + "WEBGL_multi_draw_instanced_base_vertex_base_instance", + )); + } + function __webgl_enable_WEBGL_multi_draw(ctx) { + return !!(ctx.multiDrawWebgl = ctx.getExtension("WEBGL_multi_draw")); + } + var GL = { + counter: 1, + buffers: [], + mappedBuffers: {}, + programs: [], + framebuffers: [], + renderbuffers: [], + textures: [], + shaders: [], + vaos: [], + contexts: [], + offscreenCanvases: {}, + queries: [], + samplers: [], + transformFeedbacks: [], + syncs: [], + byteSizeByTypeRoot: 5120, + byteSizeByType: [1, 1, 2, 2, 4, 4, 4, 2, 3, 4, 8], + stringCache: {}, + stringiCache: {}, + unpackAlignment: 4, + recordError: function recordError(errorCode) { + if (!GL.lastError) { + GL.lastError = errorCode; + } + }, + getNewId: function (table) { + var ret = GL.counter++; + for (var i = table.length; i < ret; i++) { + table[i] = null; + } + return ret; + }, + MAX_TEMP_BUFFER_SIZE: 2097152, + numTempVertexBuffersPerSize: 64, + log2ceilLookup: function (i) { + return 32 - Math.clz32(i === 0 ? 0 : i - 1); + }, + generateTempBuffers: function (quads, context) { + var largestIndex = GL.log2ceilLookup(GL.MAX_TEMP_BUFFER_SIZE); + context.tempVertexBufferCounters1 = []; + context.tempVertexBufferCounters2 = []; + context.tempVertexBufferCounters1.length = context.tempVertexBufferCounters2.length = + largestIndex + 1; + context.tempVertexBuffers1 = []; + context.tempVertexBuffers2 = []; + context.tempVertexBuffers1.length = context.tempVertexBuffers2.length = largestIndex + 1; + context.tempIndexBuffers = []; + context.tempIndexBuffers.length = largestIndex + 1; + for (var i = 0; i <= largestIndex; ++i) { + context.tempIndexBuffers[i] = null; + context.tempVertexBufferCounters1[i] = context.tempVertexBufferCounters2[i] = 0; + var ringbufferLength = GL.numTempVertexBuffersPerSize; + context.tempVertexBuffers1[i] = []; + context.tempVertexBuffers2[i] = []; + var ringbuffer1 = context.tempVertexBuffers1[i]; + var ringbuffer2 = context.tempVertexBuffers2[i]; + ringbuffer1.length = ringbuffer2.length = ringbufferLength; + for (var j = 0; j < ringbufferLength; ++j) { + ringbuffer1[j] = ringbuffer2[j] = null; + } + } + if (quads) { + context.tempQuadIndexBuffer = GLctx.createBuffer(); + context.GLctx.bindBuffer(34963, context.tempQuadIndexBuffer); + var numIndexes = GL.MAX_TEMP_BUFFER_SIZE >> 1; + var quadIndexes = new Uint16Array(numIndexes); + var i = 0, + v = 0; + while (1) { + quadIndexes[i++] = v; + if (i >= numIndexes) break; + quadIndexes[i++] = v + 1; + if (i >= numIndexes) break; + quadIndexes[i++] = v + 2; + if (i >= numIndexes) break; + quadIndexes[i++] = v; + if (i >= numIndexes) break; + quadIndexes[i++] = v + 2; + if (i >= numIndexes) break; + quadIndexes[i++] = v + 3; + if (i >= numIndexes) break; + v += 4; + } + context.GLctx.bufferData(34963, quadIndexes, 35044); + context.GLctx.bindBuffer(34963, null); + } + }, + getTempVertexBuffer: function getTempVertexBuffer(sizeBytes) { + var idx = GL.log2ceilLookup(sizeBytes); + var ringbuffer = GL.currentContext.tempVertexBuffers1[idx]; + var nextFreeBufferIndex = GL.currentContext.tempVertexBufferCounters1[idx]; + GL.currentContext.tempVertexBufferCounters1[idx] = + (GL.currentContext.tempVertexBufferCounters1[idx] + 1) & + (GL.numTempVertexBuffersPerSize - 1); + var vbo = ringbuffer[nextFreeBufferIndex]; + if (vbo) { + return vbo; + } + var prevVBO = GLctx.getParameter(34964); + ringbuffer[nextFreeBufferIndex] = GLctx.createBuffer(); + GLctx.bindBuffer(34962, ringbuffer[nextFreeBufferIndex]); + GLctx.bufferData(34962, 1 << idx, 35048); + GLctx.bindBuffer(34962, prevVBO); + return ringbuffer[nextFreeBufferIndex]; + }, + getTempIndexBuffer: function getTempIndexBuffer(sizeBytes) { + var idx = GL.log2ceilLookup(sizeBytes); + var ibo = GL.currentContext.tempIndexBuffers[idx]; + if (ibo) { + return ibo; + } + var prevIBO = GLctx.getParameter(34965); + GL.currentContext.tempIndexBuffers[idx] = GLctx.createBuffer(); + GLctx.bindBuffer(34963, GL.currentContext.tempIndexBuffers[idx]); + GLctx.bufferData(34963, 1 << idx, 35048); + GLctx.bindBuffer(34963, prevIBO); + return GL.currentContext.tempIndexBuffers[idx]; + }, + newRenderingFrameStarted: function newRenderingFrameStarted() { + if (!GL.currentContext) { + return; + } + var vb = GL.currentContext.tempVertexBuffers1; + GL.currentContext.tempVertexBuffers1 = GL.currentContext.tempVertexBuffers2; + GL.currentContext.tempVertexBuffers2 = vb; + vb = GL.currentContext.tempVertexBufferCounters1; + GL.currentContext.tempVertexBufferCounters1 = GL.currentContext.tempVertexBufferCounters2; + GL.currentContext.tempVertexBufferCounters2 = vb; + var largestIndex = GL.log2ceilLookup(GL.MAX_TEMP_BUFFER_SIZE); + for (var i = 0; i <= largestIndex; ++i) { + GL.currentContext.tempVertexBufferCounters1[i] = 0; + } + }, + getSource: function (shader, count, string, length) { + var source = ""; + for (var i = 0; i < count; ++i) { + var len = length ? HEAP32[(length + i * 4) >> 2] : -1; + source += UTF8ToString(HEAP32[(string + i * 4) >> 2], len < 0 ? undefined : len); + } + return source; + }, + calcBufLength: function calcBufLength(size, type, stride, count) { + if (stride > 0) { + return count * stride; + } + var typeSize = GL.byteSizeByType[type - GL.byteSizeByTypeRoot]; + return size * typeSize * count; + }, + usedTempBuffers: [], + preDrawHandleClientVertexAttribBindings: function preDrawHandleClientVertexAttribBindings( + count, + ) { + GL.resetBufferBinding = false; + for (var i = 0; i < GL.currentContext.maxVertexAttribs; ++i) { + var cb = GL.currentContext.clientBuffers[i]; + if (!cb.clientside || !cb.enabled) continue; + GL.resetBufferBinding = true; + var size = GL.calcBufLength(cb.size, cb.type, cb.stride, count); + var buf = GL.getTempVertexBuffer(size); + GLctx.bindBuffer(34962, buf); + GLctx.bufferSubData(34962, 0, HEAPU8.subarray(cb.ptr, cb.ptr + size)); + cb.vertexAttribPointerAdaptor.call( + GLctx, + i, + cb.size, + cb.type, + cb.normalized, + cb.stride, + 0, + ); + } + }, + postDrawHandleClientVertexAttribBindings: + function postDrawHandleClientVertexAttribBindings() { + if (GL.resetBufferBinding) { + GLctx.bindBuffer(34962, GL.buffers[GLctx.currentArrayBufferBinding]); + } + }, + createContext: function (canvas, webGLContextAttributes) { + if (webGLContextAttributes.renderViaOffscreenBackBuffer) + webGLContextAttributes["preserveDrawingBuffer"] = true; + if (!canvas.getContextSafariWebGL2Fixed) { + canvas.getContextSafariWebGL2Fixed = canvas.getContext; + function fixedGetContext(ver, attrs) { + var gl = canvas.getContextSafariWebGL2Fixed(ver, attrs); + return (ver == "webgl") == gl instanceof WebGLRenderingContext ? gl : null; + } + canvas.getContext = fixedGetContext; + } + var ctx = + webGLContextAttributes.majorVersion > 1 + ? canvas.getContext("webgl2", webGLContextAttributes) + : canvas.getContext("webgl", webGLContextAttributes); + if (!ctx) return 0; + var handle = GL.registerContext(ctx, webGLContextAttributes); + return handle; + }, + enableOffscreenFramebufferAttributes: function (webGLContextAttributes) { + webGLContextAttributes.renderViaOffscreenBackBuffer = true; + webGLContextAttributes.preserveDrawingBuffer = true; + }, + createOffscreenFramebuffer: function (context) { + var gl = context.GLctx; + var fbo = gl.createFramebuffer(); + gl.bindFramebuffer(36160, fbo); + context.defaultFbo = fbo; + context.defaultFboForbidBlitFramebuffer = false; + if (gl.getContextAttributes().antialias) { + context.defaultFboForbidBlitFramebuffer = true; + } else { + var firefoxMatch = navigator.userAgent.toLowerCase().match(/firefox\/(\d\d)/); + if (firefoxMatch != null) { + var firefoxVersion = firefoxMatch[1]; + context.defaultFboForbidBlitFramebuffer = firefoxVersion < 67; + } + } + context.defaultColorTarget = gl.createTexture(); + context.defaultDepthTarget = gl.createRenderbuffer(); + GL.resizeOffscreenFramebuffer(context); + gl.bindTexture(3553, context.defaultColorTarget); + gl.texParameteri(3553, 10241, 9728); + gl.texParameteri(3553, 10240, 9728); + gl.texParameteri(3553, 10242, 33071); + gl.texParameteri(3553, 10243, 33071); + gl.texImage2D(3553, 0, 6408, gl.canvas.width, gl.canvas.height, 0, 6408, 5121, null); + gl.framebufferTexture2D(36160, 36064, 3553, context.defaultColorTarget, 0); + gl.bindTexture(3553, null); + var depthTarget = gl.createRenderbuffer(); + gl.bindRenderbuffer(36161, context.defaultDepthTarget); + gl.renderbufferStorage(36161, 33189, gl.canvas.width, gl.canvas.height); + gl.framebufferRenderbuffer(36160, 36096, 36161, context.defaultDepthTarget); + gl.bindRenderbuffer(36161, null); + var vertices = [-1, -1, -1, 1, 1, -1, 1, 1]; + var vb = gl.createBuffer(); + gl.bindBuffer(34962, vb); + gl.bufferData(34962, new Float32Array(vertices), 35044); + gl.bindBuffer(34962, null); + context.blitVB = vb; + var vsCode = + "attribute vec2 pos;" + + "varying lowp vec2 tex;" + + "void main() { tex = pos * 0.5 + vec2(0.5,0.5); gl_Position = vec4(pos, 0.0, 1.0); }"; + var vs = gl.createShader(35633); + gl.shaderSource(vs, vsCode); + gl.compileShader(vs); + var fsCode = + "varying lowp vec2 tex;" + + "uniform sampler2D sampler;" + + "void main() { gl_FragColor = texture2D(sampler, tex); }"; + var fs = gl.createShader(35632); + gl.shaderSource(fs, fsCode); + gl.compileShader(fs); + var blitProgram = gl.createProgram(); + gl.attachShader(blitProgram, vs); + gl.attachShader(blitProgram, fs); + gl.linkProgram(blitProgram); + context.blitProgram = blitProgram; + context.blitPosLoc = gl.getAttribLocation(blitProgram, "pos"); + gl.useProgram(blitProgram); + gl.uniform1i(gl.getUniformLocation(blitProgram, "sampler"), 0); + gl.useProgram(null); + context.defaultVao = undefined; + if (gl.createVertexArray) { + context.defaultVao = gl.createVertexArray(); + gl.bindVertexArray(context.defaultVao); + gl.enableVertexAttribArray(context.blitPosLoc); + gl.bindVertexArray(null); + } + }, + resizeOffscreenFramebuffer: function (context) { + var gl = context.GLctx; + if (context.defaultColorTarget) { + var prevTextureBinding = gl.getParameter(32873); + gl.bindTexture(3553, context.defaultColorTarget); + gl.texImage2D( + 3553, + 0, + 6408, + gl.drawingBufferWidth, + gl.drawingBufferHeight, + 0, + 6408, + 5121, + null, + ); + gl.bindTexture(3553, prevTextureBinding); + } + if (context.defaultDepthTarget) { + var prevRenderBufferBinding = gl.getParameter(36007); + gl.bindRenderbuffer(36161, context.defaultDepthTarget); + gl.renderbufferStorage(36161, 33189, gl.drawingBufferWidth, gl.drawingBufferHeight); + gl.bindRenderbuffer(36161, prevRenderBufferBinding); + } + }, + blitOffscreenFramebuffer: function (context) { + var gl = context.GLctx; + var prevScissorTest = gl.getParameter(3089); + if (prevScissorTest) gl.disable(3089); + var prevFbo = gl.getParameter(36006); + if (gl.blitFramebuffer && !context.defaultFboForbidBlitFramebuffer) { + gl.bindFramebuffer(36008, context.defaultFbo); + gl.bindFramebuffer(36009, null); + gl.blitFramebuffer( + 0, + 0, + gl.canvas.width, + gl.canvas.height, + 0, + 0, + gl.canvas.width, + gl.canvas.height, + 16384, + 9728, + ); + } else { + gl.bindFramebuffer(36160, null); + var prevProgram = gl.getParameter(35725); + gl.useProgram(context.blitProgram); + var prevVB = gl.getParameter(34964); + gl.bindBuffer(34962, context.blitVB); + var prevActiveTexture = gl.getParameter(34016); + gl.activeTexture(33984); + var prevTextureBinding = gl.getParameter(32873); + gl.bindTexture(3553, context.defaultColorTarget); + var prevBlend = gl.getParameter(3042); + if (prevBlend) gl.disable(3042); + var prevCullFace = gl.getParameter(2884); + if (prevCullFace) gl.disable(2884); + var prevDepthTest = gl.getParameter(2929); + if (prevDepthTest) gl.disable(2929); + var prevStencilTest = gl.getParameter(2960); + if (prevStencilTest) gl.disable(2960); + function draw() { + gl.vertexAttribPointer(context.blitPosLoc, 2, 5126, false, 0, 0); + gl.drawArrays(5, 0, 4); + } + if (context.defaultVao) { + var prevVAO = gl.getParameter(34229); + gl.bindVertexArray(context.defaultVao); + draw(); + gl.bindVertexArray(prevVAO); + } else { + var prevVertexAttribPointer = { + buffer: gl.getVertexAttrib(context.blitPosLoc, 34975), + size: gl.getVertexAttrib(context.blitPosLoc, 34339), + stride: gl.getVertexAttrib(context.blitPosLoc, 34340), + type: gl.getVertexAttrib(context.blitPosLoc, 34341), + normalized: gl.getVertexAttrib(context.blitPosLoc, 34922), + pointer: gl.getVertexAttribOffset(context.blitPosLoc, 34373), + }; + var maxVertexAttribs = gl.getParameter(34921); + var prevVertexAttribEnables = []; + for (var i = 0; i < maxVertexAttribs; ++i) { + var prevEnabled = gl.getVertexAttrib(i, 34338); + var wantEnabled = i == context.blitPosLoc; + if (prevEnabled && !wantEnabled) { + gl.disableVertexAttribArray(i); + } + if (!prevEnabled && wantEnabled) { + gl.enableVertexAttribArray(i); + } + prevVertexAttribEnables[i] = prevEnabled; + } + draw(); + for (var i = 0; i < maxVertexAttribs; ++i) { + var prevEnabled = prevVertexAttribEnables[i]; + var nowEnabled = i == context.blitPosLoc; + if (prevEnabled && !nowEnabled) { + gl.enableVertexAttribArray(i); + } + if (!prevEnabled && nowEnabled) { + gl.disableVertexAttribArray(i); + } + } + gl.bindBuffer(34962, prevVertexAttribPointer.buffer); + gl.vertexAttribPointer( + context.blitPosLoc, + prevVertexAttribPointer.size, + prevVertexAttribPointer.type, + prevVertexAttribPointer.normalized, + prevVertexAttribPointer.stride, + prevVertexAttribPointer.offset, + ); + } + if (prevStencilTest) gl.enable(2960); + if (prevDepthTest) gl.enable(2929); + if (prevCullFace) gl.enable(2884); + if (prevBlend) gl.enable(3042); + gl.bindTexture(3553, prevTextureBinding); + gl.activeTexture(prevActiveTexture); + gl.bindBuffer(34962, prevVB); + gl.useProgram(prevProgram); + } + gl.bindFramebuffer(36160, prevFbo); + if (prevScissorTest) gl.enable(3089); + }, + registerContext: function (ctx, webGLContextAttributes) { + var handle = GL.getNewId(GL.contexts); + var context = { + handle: handle, + attributes: webGLContextAttributes, + version: webGLContextAttributes.majorVersion, + GLctx: ctx, + }; + if (ctx.canvas) ctx.canvas.GLctxObject = context; + GL.contexts[handle] = context; + if ( + typeof webGLContextAttributes.enableExtensionsByDefault == "undefined" || + webGLContextAttributes.enableExtensionsByDefault + ) { + GL.initExtensions(context); + } + context.maxVertexAttribs = context.GLctx.getParameter(34921); + context.clientBuffers = []; + for (var i = 0; i < context.maxVertexAttribs; i++) { + context.clientBuffers[i] = { + enabled: false, + clientside: false, + size: 0, + type: 0, + normalized: 0, + stride: 0, + ptr: 0, + vertexAttribPointerAdaptor: null, + }; + } + GL.generateTempBuffers(false, context); + if (webGLContextAttributes.renderViaOffscreenBackBuffer) + GL.createOffscreenFramebuffer(context); + return handle; + }, + makeContextCurrent: function (contextHandle) { + GL.currentContext = GL.contexts[contextHandle]; + Module.ctx = GLctx = GL.currentContext && GL.currentContext.GLctx; + return !(contextHandle && !GLctx); + }, + getContext: function (contextHandle) { + return GL.contexts[contextHandle]; + }, + deleteContext: function (contextHandle) { + if (GL.currentContext === GL.contexts[contextHandle]) GL.currentContext = null; + if (typeof JSEvents == "object") + JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas); + if (GL.contexts[contextHandle] && GL.contexts[contextHandle].GLctx.canvas) + GL.contexts[contextHandle].GLctx.canvas.GLctxObject = undefined; + GL.contexts[contextHandle] = null; + }, + initExtensions: function (context) { + if (!context) context = GL.currentContext; + if (context.initExtensionsDone) return; + context.initExtensionsDone = true; + var GLctx = context.GLctx; + __webgl_enable_ANGLE_instanced_arrays(GLctx); + __webgl_enable_OES_vertex_array_object(GLctx); + __webgl_enable_WEBGL_draw_buffers(GLctx); + __webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx); + __webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx); + if (context.version >= 2) { + GLctx.disjointTimerQueryExt = GLctx.getExtension("EXT_disjoint_timer_query_webgl2"); + } + if (context.version < 2 || !GLctx.disjointTimerQueryExt) { + GLctx.disjointTimerQueryExt = GLctx.getExtension("EXT_disjoint_timer_query"); + } + __webgl_enable_WEBGL_multi_draw(GLctx); + var exts = GLctx.getSupportedExtensions() || []; + exts.forEach(function (ext) { + if (!ext.includes("lose_context") && !ext.includes("debug")) { + GLctx.getExtension(ext); + } + }); + }, + }; + var JSEvents = { + inEventHandler: 0, + removeAllEventListeners: function () { + for (var i = JSEvents.eventHandlers.length - 1; i >= 0; --i) { + JSEvents._removeHandler(i); + } + JSEvents.eventHandlers = []; + JSEvents.deferredCalls = []; + }, + registerRemoveEventListeners: function () { + if (!JSEvents.removeEventListenersRegistered) { + __ATEXIT__.push(JSEvents.removeAllEventListeners); + JSEvents.removeEventListenersRegistered = true; + } + }, + deferredCalls: [], + deferCall: function (targetFunction, precedence, argsList) { + function arraysHaveEqualContent(arrA, arrB) { + if (arrA.length != arrB.length) return false; + for (var i in arrA) { + if (arrA[i] != arrB[i]) return false; + } + return true; + } + for (var i in JSEvents.deferredCalls) { + var call = JSEvents.deferredCalls[i]; + if ( + call.targetFunction == targetFunction && + arraysHaveEqualContent(call.argsList, argsList) + ) { + return; + } + } + JSEvents.deferredCalls.push({ + targetFunction: targetFunction, + precedence: precedence, + argsList: argsList, + }); + JSEvents.deferredCalls.sort(function (x, y) { + return x.precedence < y.precedence; + }); + }, + removeDeferredCalls: function (targetFunction) { + for (var i = 0; i < JSEvents.deferredCalls.length; ++i) { + if (JSEvents.deferredCalls[i].targetFunction == targetFunction) { + JSEvents.deferredCalls.splice(i, 1); + --i; + } + } + }, + canPerformEventHandlerRequests: function () { + return JSEvents.inEventHandler && JSEvents.currentEventHandler.allowsDeferredCalls; + }, + runDeferredCalls: function () { + if (!JSEvents.canPerformEventHandlerRequests()) { + return; + } + for (var i = 0; i < JSEvents.deferredCalls.length; ++i) { + var call = JSEvents.deferredCalls[i]; + JSEvents.deferredCalls.splice(i, 1); + --i; + call.targetFunction.apply(null, call.argsList); + } + }, + eventHandlers: [], + removeAllHandlersOnTarget: function (target, eventTypeString) { + for (var i = 0; i < JSEvents.eventHandlers.length; ++i) { + if ( + JSEvents.eventHandlers[i].target == target && + (!eventTypeString || eventTypeString == JSEvents.eventHandlers[i].eventTypeString) + ) { + JSEvents._removeHandler(i--); + } + } + }, + _removeHandler: function (i) { + var h = JSEvents.eventHandlers[i]; + h.target.removeEventListener(h.eventTypeString, h.eventListenerFunc, h.useCapture); + JSEvents.eventHandlers.splice(i, 1); + }, + registerOrRemoveHandler: function (eventHandler) { + var jsEventHandler = function jsEventHandler(event) { + ++JSEvents.inEventHandler; + JSEvents.currentEventHandler = eventHandler; + JSEvents.runDeferredCalls(); + eventHandler.handlerFunc(event); + JSEvents.runDeferredCalls(); + --JSEvents.inEventHandler; + }; + if (eventHandler.callbackfunc) { + eventHandler.eventListenerFunc = jsEventHandler; + eventHandler.target.addEventListener( + eventHandler.eventTypeString, + jsEventHandler, + eventHandler.useCapture, + ); + JSEvents.eventHandlers.push(eventHandler); + JSEvents.registerRemoveEventListeners(); + } else { + for (var i = 0; i < JSEvents.eventHandlers.length; ++i) { + if ( + JSEvents.eventHandlers[i].target == eventHandler.target && + JSEvents.eventHandlers[i].eventTypeString == eventHandler.eventTypeString + ) { + JSEvents._removeHandler(i--); + } + } + } + }, + getNodeNameForTarget: function (target) { + if (!target) return ""; + if (target == window) return "#window"; + if (target == screen) return "#screen"; + return target && target.nodeName ? target.nodeName : ""; + }, + fullscreenEnabled: function () { + return document.fullscreenEnabled || document.webkitFullscreenEnabled; + }, + }; + var __emscripten_webgl_power_preferences = ["default", "low-power", "high-performance"]; + var specialHTMLTargets = [ + 0, + typeof document != "undefined" ? document : 0, + typeof window != "undefined" ? window : 0, + ]; + function findEventTarget(target) { + warnOnce( + "Rules for selecting event targets in HTML5 API are changing: instead of using document.getElementById() that only can refer to elements by their DOM ID, new event target selection mechanism uses the more flexible function document.querySelector() that can look up element names, classes, and complex CSS selectors. Build with -sDISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR to change to the new lookup rules. See https://github.com/emscripten-core/emscripten/pull/7977 for more details.", + ); + try { + if (!target) return window; + if (typeof target == "number") target = specialHTMLTargets[target] || UTF8ToString(target); + if (target === "#window") return window; + else if (target === "#document") return document; + else if (target === "#screen") return screen; + else if (target === "#canvas") return Module["canvas"]; + return typeof target == "string" ? document.getElementById(target) : target; + } catch (e) { + return null; + } + } + function findCanvasEventTarget(target) { + if (typeof target == "number") target = UTF8ToString(target); + if (!target || target === "#canvas") { + if (typeof GL != "undefined" && GL.offscreenCanvases["canvas"]) + return GL.offscreenCanvases["canvas"]; + return Module["canvas"]; + } + if (typeof GL != "undefined" && GL.offscreenCanvases[target]) + return GL.offscreenCanvases[target]; + return findEventTarget(target); + } + function _emscripten_webgl_do_create_context(target, attributes) { + assert(attributes); + var a = attributes >> 2; + var powerPreference = HEAP32[a + (24 >> 2)]; + var contextAttributes = { + alpha: !!HEAP32[a + (0 >> 2)], + depth: !!HEAP32[a + (4 >> 2)], + stencil: !!HEAP32[a + (8 >> 2)], + antialias: !!HEAP32[a + (12 >> 2)], + premultipliedAlpha: !!HEAP32[a + (16 >> 2)], + preserveDrawingBuffer: !!HEAP32[a + (20 >> 2)], + powerPreference: __emscripten_webgl_power_preferences[powerPreference], + failIfMajorPerformanceCaveat: !!HEAP32[a + (28 >> 2)], + majorVersion: HEAP32[a + (32 >> 2)], + minorVersion: HEAP32[a + (36 >> 2)], + enableExtensionsByDefault: HEAP32[a + (40 >> 2)], + explicitSwapControl: HEAP32[a + (44 >> 2)], + proxyContextToMainThread: HEAP32[a + (48 >> 2)], + renderViaOffscreenBackBuffer: HEAP32[a + (52 >> 2)], + }; + var canvas = findCanvasEventTarget(target); + if (!canvas) { + return 0; + } + if (canvas.offscreenCanvas) canvas = canvas.offscreenCanvas; + if (contextAttributes.explicitSwapControl) { + var supportsOffscreenCanvas = + canvas.transferControlToOffscreen || + (typeof OffscreenCanvas != "undefined" && canvas instanceof OffscreenCanvas); + if (!supportsOffscreenCanvas) { + if (!contextAttributes.renderViaOffscreenBackBuffer) { + contextAttributes.renderViaOffscreenBackBuffer = true; + } + } + if (canvas.transferControlToOffscreen) { + if (!canvas.controlTransferredOffscreen) { + GL.offscreenCanvases[canvas.id] = { + canvas: canvas.transferControlToOffscreen(), + canvasSharedPtr: _malloc(12), + id: canvas.id, + }; + canvas.controlTransferredOffscreen = true; + } else if (!GL.offscreenCanvases[canvas.id]) { + return 0; + } + canvas = GL.offscreenCanvases[canvas.id]; + } + } + var contextHandle = GL.createContext(canvas, contextAttributes); + return contextHandle; + } + var _emscripten_webgl_create_context = _emscripten_webgl_do_create_context; + function _emscripten_webgl_destroy_context(contextHandle) { + if (GL.currentContext == contextHandle) GL.currentContext = 0; + GL.deleteContext(contextHandle); + } + function _emscripten_webgl_get_context_attributes(c, a) { + if (!a) return -5; + c = GL.contexts[c]; + if (!c) return -3; + var t = c.GLctx; + if (!t) return -3; + t = t.getContextAttributes(); + HEAP32[a >> 2] = t.alpha; + HEAP32[(a + 4) >> 2] = t.depth; + HEAP32[(a + 8) >> 2] = t.stencil; + HEAP32[(a + 12) >> 2] = t.antialias; + HEAP32[(a + 16) >> 2] = t.premultipliedAlpha; + HEAP32[(a + 20) >> 2] = t.preserveDrawingBuffer; + var power = + t["powerPreference"] && __emscripten_webgl_power_preferences.indexOf(t["powerPreference"]); + HEAP32[(a + 24) >> 2] = power; + HEAP32[(a + 28) >> 2] = t.failIfMajorPerformanceCaveat; + HEAP32[(a + 32) >> 2] = c.version; + HEAP32[(a + 36) >> 2] = 0; + HEAP32[(a + 40) >> 2] = c.attributes.enableExtensionsByDefault; + return 0; + } + function _emscripten_webgl_do_get_current_context() { + return GL.currentContext ? GL.currentContext.handle : 0; + } + var _emscripten_webgl_get_current_context = _emscripten_webgl_do_get_current_context; + function _emscripten_webgl_init_context_attributes(attributes) { + assert(attributes); + var a = attributes >> 2; + for (var i = 0; i < 56 >> 2; ++i) { + HEAP32[a + i] = 0; + } + HEAP32[a + (0 >> 2)] = + HEAP32[a + (4 >> 2)] = + HEAP32[a + (12 >> 2)] = + HEAP32[a + (16 >> 2)] = + HEAP32[a + (32 >> 2)] = + HEAP32[a + (40 >> 2)] = + 1; + } + function _emscripten_webgl_make_context_current(contextHandle) { + var success = GL.makeContextCurrent(contextHandle); + return success ? 0 : -5; + } + var WebGPU = { + initManagers: function () { + if (WebGPU.mgrDevice) return; + function Manager() { + this.objects = {}; + this.nextId = 1; + this.create = function (object, wrapper) { + wrapper = wrapper || {}; + var id = this.nextId++; + assert(typeof this.objects[id] == "undefined"); + wrapper.refcount = 1; + wrapper.object = object; + this.objects[id] = wrapper; + return id; + }; + this.get = function (id) { + if (!id) return undefined; + var o = this.objects[id]; + assert(typeof o != "undefined"); + return o.object; + }; + this.reference = function (id) { + var o = this.objects[id]; + assert(typeof o != "undefined"); + o.refcount++; + }; + this.release = function (id) { + var o = this.objects[id]; + assert(typeof o != "undefined"); + assert(o.refcount > 0); + o.refcount--; + if (o.refcount <= 0) { + delete this.objects[id]; + } + }; + } + WebGPU.mgrSurface = WebGPU.mgrSurface || new Manager(); + WebGPU.mgrSwapChain = WebGPU.mgrSwapChain || new Manager(); + WebGPU.mgrAdapter = WebGPU.mgrAdapter || new Manager(); + WebGPU.mgrDevice = WebGPU.mgrDevice || new Manager(); + WebGPU.mgrQueue = WebGPU.mgrQueue || new Manager(); + WebGPU.mgrCommandBuffer = WebGPU.mgrCommandBuffer || new Manager(); + WebGPU.mgrCommandEncoder = WebGPU.mgrCommandEncoder || new Manager(); + WebGPU.mgrRenderPassEncoder = WebGPU.mgrRenderPassEncoder || new Manager(); + WebGPU.mgrComputePassEncoder = WebGPU.mgrComputePassEncoder || new Manager(); + WebGPU.mgrBindGroup = WebGPU.mgrBindGroup || new Manager(); + WebGPU.mgrBuffer = WebGPU.mgrBuffer || new Manager(); + WebGPU.mgrSampler = WebGPU.mgrSampler || new Manager(); + WebGPU.mgrTexture = WebGPU.mgrTexture || new Manager(); + WebGPU.mgrTextureView = WebGPU.mgrTextureView || new Manager(); + WebGPU.mgrQuerySet = WebGPU.mgrQuerySet || new Manager(); + WebGPU.mgrBindGroupLayout = WebGPU.mgrBindGroupLayout || new Manager(); + WebGPU.mgrPipelineLayout = WebGPU.mgrPipelineLayout || new Manager(); + WebGPU.mgrRenderPipeline = WebGPU.mgrRenderPipeline || new Manager(); + WebGPU.mgrComputePipeline = WebGPU.mgrComputePipeline || new Manager(); + WebGPU.mgrShaderModule = WebGPU.mgrShaderModule || new Manager(); + WebGPU.mgrRenderBundleEncoder = WebGPU.mgrRenderBundleEncoder || new Manager(); + WebGPU.mgrRenderBundle = WebGPU.mgrRenderBundle || new Manager(); + }, + makeColor: function (ptr) { + return { + r: HEAPF64[ptr >> 3], + g: HEAPF64[(ptr + 8) >> 3], + b: HEAPF64[(ptr + 16) >> 3], + a: HEAPF64[(ptr + 24) >> 3], + }; + }, + makeExtent3D: function (ptr) { + return { + width: HEAPU32[ptr >> 2], + height: HEAPU32[(ptr + 4) >> 2], + depthOrArrayLayers: HEAPU32[(ptr + 8) >> 2], + }; + }, + makeOrigin3D: function (ptr) { + return { x: HEAPU32[ptr >> 2], y: HEAPU32[(ptr + 4) >> 2], z: HEAPU32[(ptr + 8) >> 2] }; + }, + makeImageCopyTexture: function (ptr) { + assert(ptr); + assert(HEAPU32[ptr >> 2] === 0); + return { + texture: WebGPU.mgrTexture.get(HEAPU32[(ptr + 4) >> 2]), + mipLevel: HEAPU32[(ptr + 8) >> 2], + origin: WebGPU.makeOrigin3D(ptr + 12), + aspect: WebGPU.TextureAspect[HEAPU32[(ptr + 24) >> 2]], + }; + }, + makeTextureDataLayout: function (ptr) { + assert(ptr); + assert(HEAPU32[ptr >> 2] === 0); + var bytesPerRow = HEAPU32[(ptr + 16) >> 2]; + var rowsPerImage = HEAPU32[(ptr + 20) >> 2]; + return { + offset: HEAPU32[(ptr + 4 + 8) >> 2] * 4294967296 + HEAPU32[(ptr + 8) >> 2], + bytesPerRow: bytesPerRow === 4294967295 ? undefined : bytesPerRow, + rowsPerImage: rowsPerImage === 4294967295 ? undefined : rowsPerImage, + }; + }, + makeImageCopyBuffer: function (ptr) { + assert(ptr); + assert(HEAPU32[ptr >> 2] === 0); + var layoutPtr = ptr + 8; + var bufferCopyView = WebGPU.makeTextureDataLayout(layoutPtr); + bufferCopyView["buffer"] = WebGPU.mgrBuffer.get(HEAPU32[(ptr + 32) >> 2]); + return bufferCopyView; + }, + makePipelineConstants: function (constantCount, constantsPtr) { + if (!constantCount) return; + var constants = {}; + for (var i = 0; i < constantCount; ++i) { + var entryPtr = constantsPtr + 16 * i; + var key = UTF8ToString(HEAPU32[(entryPtr + 4) >> 2]); + constants[key] = HEAPF64[(entryPtr + 8) >> 3]; + } + return constants; + }, + makeProgrammableStageDescriptor: function (ptr) { + if (!ptr) return undefined; + assert(ptr); + assert(HEAPU32[ptr >> 2] === 0); + return { + module: WebGPU.mgrShaderModule.get(HEAPU32[(ptr + 4) >> 2]), + entryPoint: UTF8ToString(HEAPU32[(ptr + 8) >> 2]), + constants: WebGPU.makePipelineConstants( + HEAPU32[(ptr + 12) >> 2], + HEAPU32[(ptr + 16) >> 2], + ), + }; + }, + DeviceLostReason: { undefined: 0, destroyed: 1 }, + PreferredFormat: { rgba8unorm: 18, bgra8unorm: 23 }, + AddressMode: ["repeat", "mirror-repeat", "clamp-to-edge"], + BlendFactor: [ + "zero", + "one", + "src", + "one-minus-src", + "src-alpha", + "one-minus-src-alpha", + "dst", + "one-minus-dst", + "dst-alpha", + "one-minus-dst-alpha", + "src-alpha-saturated", + "constant", + "one-minus-constant", + ], + BlendOperation: ["add", "subtract", "reverse-subtract", "min", "max"], + BufferBindingType: [, "uniform", "storage", "read-only-storage"], + CompareFunction: [ + , + "never", + "less", + "less-equal", + "greater", + "greater-equal", + "equal", + "not-equal", + "always", + ], + CompilationInfoRequestStatus: ["success", "error", "device-lost", "unknown"], + ComputePassTimestampLocation: ["beginning", "end"], + CullMode: ["none", "front", "back"], + ErrorFilter: ["validation", "out-of-memory"], + FeatureName: [ + , + "depth-clip-control", + "depth32float-stencil8", + "timestamp-query", + "pipeline-statistics-query", + "texture-compression-bc", + "texture-compression-etc2", + "texture-compression-astc", + "indirect-first-instance", + ], + FilterMode: ["nearest", "linear"], + FrontFace: ["ccw", "cw"], + IndexFormat: [, "uint16", "uint32"], + LoadOp: [, "clear", "load"], + PipelineStatisticName: [ + "vertex-shader-invocations", + "clipper-invocations", + "clipper-primitives-out", + "fragment-shader-invocations", + "compute-shader-invocations", + ], + PowerPreference: [, "low-power", "high-performance"], + PrimitiveTopology: [ + "point-list", + "line-list", + "line-strip", + "triangle-list", + "triangle-strip", + ], + QueryType: ["occlusion", "pipeline-statistics", "timestamp"], + RenderPassTimestampLocation: ["beginning", "end"], + SamplerBindingType: [, "filtering", "non-filtering", "comparison"], + StencilOperation: [ + "keep", + "zero", + "replace", + "invert", + "increment-clamp", + "decrement-clamp", + "increment-wrap", + "decrement-wrap", + ], + StorageTextureAccess: [, "write-only"], + StoreOp: [, "store", "discard"], + TextureAspect: ["all", "stencil-only", "depth-only"], + TextureComponentType: ["float", "sint", "uint", "depth-comparison"], + TextureDimension: ["1d", "2d", "3d"], + TextureFormat: [ + , + "r8unorm", + "r8snorm", + "r8uint", + "r8sint", + "r16uint", + "r16sint", + "r16float", + "rg8unorm", + "rg8snorm", + "rg8uint", + "rg8sint", + "r32float", + "r32uint", + "r32sint", + "rg16uint", + "rg16sint", + "rg16float", + "rgba8unorm", + "rgba8unorm-srgb", + "rgba8snorm", + "rgba8uint", + "rgba8sint", + "bgra8unorm", + "bgra8unorm-srgb", + "rgb10a2unorm", + "rg11b10ufloat", + "rgb9e5ufloat", + "rg32float", + "rg32uint", + "rg32sint", + "rgba16uint", + "rgba16sint", + "rgba16float", + "rgba32float", + "rgba32uint", + "rgba32sint", + "stencil8", + "depth16unorm", + "depth24plus", + "depth24plus-stencil8", + "depth32float", + "depth32float-stencil8", + "bc1-rgba-unorm", + "bc1-rgba-unorm-srgb", + "bc2-rgba-unorm", + "bc2-rgba-unorm-srgb", + "bc3-rgba-unorm", + "bc3-rgba-unorm-srgb", + "bc4-r-unorm", + "bc4-r-snorm", + "bc5-rg-unorm", + "bc5-rg-snorm", + "bc6h-rgb-ufloat", + "bc6h-rgb-float", + "bc7-rgba-unorm", + "bc7-rgba-unorm-srgb", + "etc2-rgb8unorm", + "etc2-rgb8unorm-srgb", + "etc2-rgb8a1unorm", + "etc2-rgb8a1unorm-srgb", + "etc2-rgba8unorm", + "etc2-rgba8unorm-srgb", + "eac-r11unorm", + "eac-r11snorm", + "eac-rg11unorm", + "eac-rg11snorm", + "astc-4x4-unorm", + "astc-4x4-unorm-srgb", + "astc-5x4-unorm", + "astc-5x4-unorm-srgb", + "astc-5x5-unorm", + "astc-5x5-unorm-srgb", + "astc-6x5-unorm", + "astc-6x5-unorm-srgb", + "astc-6x6-unorm", + "astc-6x6-unorm-srgb", + "astc-8x5-unorm", + "astc-8x5-unorm-srgb", + "astc-8x6-unorm", + "astc-8x6-unorm-srgb", + "astc-8x8-unorm", + "astc-8x8-unorm-srgb", + "astc-10x5-unorm", + "astc-10x5-unorm-srgb", + "astc-10x6-unorm", + "astc-10x6-unorm-srgb", + "astc-10x8-unorm", + "astc-10x8-unorm-srgb", + "astc-10x10-unorm", + "astc-10x10-unorm-srgb", + "astc-12x10-unorm", + "astc-12x10-unorm-srgb", + "astc-12x12-unorm", + "astc-12x12-unorm-srgb", + ], + TextureSampleType: [, "float", "unfilterable-float", "depth", "sint", "uint"], + TextureViewDimension: [, "1d", "2d", "2d-array", "cube", "cube-array", "3d"], + VertexFormat: [ + , + "uint8x2", + "uint8x4", + "sint8x2", + "sint8x4", + "unorm8x2", + "unorm8x4", + "snorm8x2", + "snorm8x4", + "uint16x2", + "uint16x4", + "sint16x2", + "sint16x4", + "unorm16x2", + "unorm16x4", + "snorm16x2", + "snorm16x4", + "float16x2", + "float16x4", + "float32", + "float32x2", + "float32x3", + "float32x4", + "uint32", + "uint32x2", + "uint32x3", + "uint32x4", + "sint32", + "sint32x2", + "sint32x3", + "sint32x4", + ], + VertexStepMode: ["vertex", "instance"], + FeatureNameString2Enum: { + undefined: "0", + "depth-clip-control": "1", + "depth32float-stencil8": "2", + "timestamp-query": "3", + "pipeline-statistics-query": "4", + "texture-compression-bc": "5", + "texture-compression-etc2": "6", + "texture-compression-astc": "7", + "indirect-first-instance": "8", + }, + }; + var JsValStore = { + values: {}, + next_id: 1, + add: function (js_val) { + var id; + do { + id = JsValStore.next_id++; + if (JsValStore.next_id > 2147483647) JsValStore.next_id = 1; + } while (id in JsValStore.values); + JsValStore.values[id] = js_val; + return id; + }, + remove: function (id) { + assert(id in JsValStore.values); + delete JsValStore.values[id]; + }, + get: function (id) { + assert(id === 0 || id in JsValStore.values); + return JsValStore.values[id]; + }, + }; + function _emscripten_webgpu_export_bind_group_layout(handle) { + return JsValStore.add(WebGPU.mgrBindGroupLayout.get(handle)); + } + function _emscripten_webgpu_export_device(handle) { + return JsValStore.add(WebGPU.mgrDevice.get(handle)); + } + function _emscripten_webgpu_export_sampler(handle) { + return JsValStore.add(WebGPU.mgrSampler.get(handle)); + } + function _emscripten_webgpu_export_texture(handle) { + return JsValStore.add(WebGPU.mgrTexture.get(handle)); + } + function _emscripten_webgpu_get_device() { + assert(Module["preinitializedWebGPUDevice"]); + if (WebGPU.preinitializedDeviceId === undefined) { + var device = Module["preinitializedWebGPUDevice"]; + var deviceWrapper = { queueId: WebGPU.mgrQueue.create(device["queue"]) }; + WebGPU.preinitializedDeviceId = WebGPU.mgrDevice.create(device, deviceWrapper); + } + WebGPU.mgrDevice.reference(WebGPU.preinitializedDeviceId); + return WebGPU.preinitializedDeviceId; + } + function _emscripten_webgpu_import_bind_group(handle) { + return WebGPU.mgrBindGroup.create(JsValStore.get(handle)); + } + function _emscripten_webgpu_import_texture(handle) { + return WebGPU.mgrTexture.create(JsValStore.get(handle)); + } + function _emscripten_webgpu_release_js_handle(id) { + JsValStore.remove(id); + } + var ENV = {}; + function getExecutableName() { + return thisProgram || "./this.program"; + } + function getEnvStrings() { + if (!getEnvStrings.strings) { + var lang = + ( + (typeof navigator == "object" && navigator.languages && navigator.languages[0]) || + "C" + ).replace("-", "_") + ".UTF-8"; + var env = { + USER: "web_user", + LOGNAME: "web_user", + PATH: "/", + PWD: "/", + HOME: "/home/web_user", + LANG: lang, + _: getExecutableName(), + }; + for (var x in ENV) { + if (ENV[x] === undefined) delete env[x]; + else env[x] = ENV[x]; + } + var strings = []; + for (var x in env) { + strings.push(x + "=" + env[x]); + } + getEnvStrings.strings = strings; + } + return getEnvStrings.strings; + } + function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; ++i) { + assert(str.charCodeAt(i) === (str.charCodeAt(i) & 255)); + HEAP8[buffer++ >> 0] = str.charCodeAt(i); + } + if (!dontAddNull) HEAP8[buffer >> 0] = 0; + } + function _environ_get(__environ, environ_buf) { + var bufSize = 0; + getEnvStrings().forEach(function (string, i) { + var ptr = environ_buf + bufSize; + HEAPU32[(__environ + i * 4) >> 2] = ptr; + writeAsciiToMemory(string, ptr); + bufSize += string.length + 1; + }); + return 0; + } + function _environ_sizes_get(penviron_count, penviron_buf_size) { + var strings = getEnvStrings(); + HEAPU32[penviron_count >> 2] = strings.length; + var bufSize = 0; + strings.forEach(function (string) { + bufSize += string.length + 1; + }); + HEAPU32[penviron_buf_size >> 2] = bufSize; + return 0; + } + function _fd_close(fd) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + FS.close(stream); + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e instanceof FS.ErrnoError)) throw e; + return e.errno; + } + } + function doReadv(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 2]; + var len = HEAPU32[(iov + 4) >> 2]; + iov += 8; + var curr = FS.read(stream, HEAP8, ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + if (curr < len) break; + } + return ret; + } + function _fd_read(fd, iov, iovcnt, pnum) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = doReadv(stream, iov, iovcnt); + HEAPU32[pnum >> 2] = num; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e instanceof FS.ErrnoError)) throw e; + return e.errno; + } + } + function convertI32PairToI53Checked(lo, hi) { + assert(lo == lo >>> 0 || lo == (lo | 0)); + assert(hi === (hi | 0)); + return (hi + 2097152) >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN; + } + function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { + try { + var offset = convertI32PairToI53Checked(offset_low, offset_high); + if (isNaN(offset)) return 61; + var stream = SYSCALLS.getStreamFromFD(fd); + FS.llseek(stream, offset, whence); + (tempI64 = [ + stream.position >>> 0, + ((tempDouble = stream.position), + +Math.abs(tempDouble) >= 1 + ? tempDouble > 0 + ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 + : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 + : 0), + ]), + (HEAP32[newOffset >> 2] = tempI64[0]), + (HEAP32[(newOffset + 4) >> 2] = tempI64[1]); + if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e instanceof FS.ErrnoError)) throw e; + return e.errno; + } + } + function doWritev(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = HEAPU32[iov >> 2]; + var len = HEAPU32[(iov + 4) >> 2]; + iov += 8; + var curr = FS.write(stream, HEAP8, ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + } + return ret; + } + function _fd_write(fd, iov, iovcnt, pnum) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = doWritev(stream, iov, iovcnt); + HEAPU32[pnum >> 2] = num; + return 0; + } catch (e) { + if (typeof FS == "undefined" || !(e instanceof FS.ErrnoError)) throw e; + return e.errno; + } + } + function _getentropy(buffer, size) { + if (!_getentropy.randomDevice) { + _getentropy.randomDevice = getRandomDevice(); + } + for (var i = 0; i < size; i++) { + HEAP8[(buffer + i) >> 0] = _getentropy.randomDevice(); + } + return 0; + } + function _glActiveTexture(x0) { + GLctx["activeTexture"](x0); + } + function _glAttachShader(program, shader) { + GLctx.attachShader(GL.programs[program], GL.shaders[shader]); + } + function _glBindAttribLocation(program, index, name) { + GLctx.bindAttribLocation(GL.programs[program], index, UTF8ToString(name)); + } + function _glBindBuffer(target, buffer) { + if (target == 34962) { + GLctx.currentArrayBufferBinding = buffer; + } else if (target == 34963) { + GLctx.currentElementArrayBufferBinding = buffer; + } + if (target == 35051) { + GLctx.currentPixelPackBufferBinding = buffer; + } else if (target == 35052) { + GLctx.currentPixelUnpackBufferBinding = buffer; + } + GLctx.bindBuffer(target, GL.buffers[buffer]); + } + function _glBindBufferBase(target, index, buffer) { + GLctx["bindBufferBase"](target, index, GL.buffers[buffer]); + } + function _glBindFramebuffer(target, framebuffer) { + GLctx.bindFramebuffer( + target, + framebuffer ? GL.framebuffers[framebuffer] : GL.currentContext.defaultFbo, + ); + } + function _glBindTexture(target, texture) { + GLctx.bindTexture(target, GL.textures[texture]); + } + function _glBindVertexArray(vao) { + GLctx["bindVertexArray"](GL.vaos[vao]); + var ibo = GLctx.getParameter(34965); + GLctx.currentElementArrayBufferBinding = ibo ? ibo.name | 0 : 0; + } + function _glBufferData(target, size, data, usage) { + if (GL.currentContext.version >= 2) { + if (data && size) { + GLctx.bufferData(target, HEAPU8, usage, data, size); + } else { + GLctx.bufferData(target, size, usage); + } + } else { + GLctx.bufferData(target, data ? HEAPU8.subarray(data, data + size) : size, usage); + } + } + function convertI32PairToI53(lo, hi) { + assert(hi === (hi | 0)); + return (lo >>> 0) + hi * 4294967296; + } + function _glClientWaitSync(sync, flags, timeoutLo, timeoutHi) { + return GLctx.clientWaitSync(GL.syncs[sync], flags, convertI32PairToI53(timeoutLo, timeoutHi)); + } + function _glCompileShader(shader) { + GLctx.compileShader(GL.shaders[shader]); + } + function _glCreateProgram() { + var id = GL.getNewId(GL.programs); + var program = GLctx.createProgram(); + program.name = id; + program.maxUniformLength = program.maxAttributeLength = program.maxUniformBlockNameLength = 0; + program.uniformIdCounter = 1; + GL.programs[id] = program; + return id; + } + function _glCreateShader(shaderType) { + var id = GL.getNewId(GL.shaders); + GL.shaders[id] = GLctx.createShader(shaderType); + return id; + } + function _glDeleteBuffers(n, buffers) { + for (var i = 0; i < n; i++) { + var id = HEAP32[(buffers + i * 4) >> 2]; + var buffer = GL.buffers[id]; + if (!buffer) continue; + GLctx.deleteBuffer(buffer); + buffer.name = 0; + GL.buffers[id] = null; + if (id == GLctx.currentArrayBufferBinding) GLctx.currentArrayBufferBinding = 0; + if (id == GLctx.currentElementArrayBufferBinding) + GLctx.currentElementArrayBufferBinding = 0; + if (id == GLctx.currentPixelPackBufferBinding) GLctx.currentPixelPackBufferBinding = 0; + if (id == GLctx.currentPixelUnpackBufferBinding) GLctx.currentPixelUnpackBufferBinding = 0; + } + } + function _glDeleteFramebuffers(n, framebuffers) { + for (var i = 0; i < n; ++i) { + var id = HEAP32[(framebuffers + i * 4) >> 2]; + var framebuffer = GL.framebuffers[id]; + if (!framebuffer) continue; + GLctx.deleteFramebuffer(framebuffer); + framebuffer.name = 0; + GL.framebuffers[id] = null; + } + } + function _glDeleteProgram(id) { + if (!id) return; + var program = GL.programs[id]; + if (!program) { + GL.recordError(1281); + return; + } + GLctx.deleteProgram(program); + program.name = 0; + GL.programs[id] = null; + } + function _glDeleteShader(id) { + if (!id) return; + var shader = GL.shaders[id]; + if (!shader) { + GL.recordError(1281); + return; + } + GLctx.deleteShader(shader); + GL.shaders[id] = null; + } + function _glDeleteSync(id) { + if (!id) return; + var sync = GL.syncs[id]; + if (!sync) { + GL.recordError(1281); + return; + } + GLctx.deleteSync(sync); + sync.name = 0; + GL.syncs[id] = null; + } + function _glDeleteTextures(n, textures) { + for (var i = 0; i < n; i++) { + var id = HEAP32[(textures + i * 4) >> 2]; + var texture = GL.textures[id]; + if (!texture) continue; + GLctx.deleteTexture(texture); + texture.name = 0; + GL.textures[id] = null; + } + } + function _glDeleteVertexArrays(n, vaos) { + for (var i = 0; i < n; i++) { + var id = HEAP32[(vaos + i * 4) >> 2]; + GLctx["deleteVertexArray"](GL.vaos[id]); + GL.vaos[id] = null; + } + } + function _glDisable(x0) { + GLctx["disable"](x0); + } + function _glDisableVertexAttribArray(index) { + var cb = GL.currentContext.clientBuffers[index]; + cb.enabled = false; + GLctx.disableVertexAttribArray(index); + } + function _glDrawArrays(mode, first, count) { + GL.preDrawHandleClientVertexAttribBindings(first + count); + GLctx.drawArrays(mode, first, count); + GL.postDrawHandleClientVertexAttribBindings(); + } + var tempFixedLengthArray = []; + function _glDrawBuffers(n, bufs) { + var bufArray = tempFixedLengthArray[n]; + for (var i = 0; i < n; i++) { + bufArray[i] = HEAP32[(bufs + i * 4) >> 2]; + } + GLctx["drawBuffers"](bufArray); + } + function _glEnableVertexAttribArray(index) { + var cb = GL.currentContext.clientBuffers[index]; + cb.enabled = true; + GLctx.enableVertexAttribArray(index); + } + function _glFenceSync(condition, flags) { + var sync = GLctx.fenceSync(condition, flags); + if (sync) { + var id = GL.getNewId(GL.syncs); + sync.name = id; + GL.syncs[id] = sync; + return id; + } + return 0; + } + function _glFinish() { + GLctx["finish"](); + } + function _glFlush() { + GLctx["flush"](); + } + function _glFramebufferTexture2D(target, attachment, textarget, texture, level) { + GLctx.framebufferTexture2D(target, attachment, textarget, GL.textures[texture], level); + } + function _glFramebufferTextureLayer(target, attachment, texture, level, layer) { + GLctx.framebufferTextureLayer(target, attachment, GL.textures[texture], level, layer); + } + function __glGenObject(n, buffers, createFunction, objectTable) { + for (var i = 0; i < n; i++) { + var buffer = GLctx[createFunction](); + var id = buffer && GL.getNewId(objectTable); + if (buffer) { + buffer.name = id; + objectTable[id] = buffer; + } else { + GL.recordError(1282); + } + HEAP32[(buffers + i * 4) >> 2] = id; + } + } + function _glGenBuffers(n, buffers) { + __glGenObject(n, buffers, "createBuffer", GL.buffers); + } + function _glGenFramebuffers(n, ids) { + __glGenObject(n, ids, "createFramebuffer", GL.framebuffers); + } + function _glGenTextures(n, textures) { + __glGenObject(n, textures, "createTexture", GL.textures); + } + function _glGenVertexArrays(n, arrays) { + __glGenObject(n, arrays, "createVertexArray", GL.vaos); + } + function _glGetAttribLocation(program, name) { + return GLctx.getAttribLocation(GL.programs[program], UTF8ToString(name)); + } + function _glGetError() { + var error = GLctx.getError() || GL.lastError; + GL.lastError = 0; + return error; + } + function readI53FromU64(ptr) { + return HEAPU32[ptr >> 2] + HEAPU32[(ptr + 4) >> 2] * 4294967296; + } + function writeI53ToI64(ptr, num) { + HEAPU32[ptr >> 2] = num; + HEAPU32[(ptr + 4) >> 2] = (num - HEAPU32[ptr >> 2]) / 4294967296; + var deserialized = num >= 0 ? readI53FromU64(ptr) : readI53FromI64(ptr); + if (deserialized != num) + warnOnce( + "writeI53ToI64() out of range: serialized JS Number " + + num + + " to Wasm heap as bytes lo=" + + ptrToString(HEAPU32[ptr >> 2]) + + ", hi=" + + ptrToString(HEAPU32[(ptr + 4) >> 2]) + + ", which deserializes back to " + + deserialized + + " instead!", + ); + } + function emscriptenWebGLGet(name_, p, type) { + if (!p) { + GL.recordError(1281); + return; + } + var ret = undefined; + switch (name_) { + case 36346: + ret = 1; + break; + case 36344: + if (type != 0 && type != 1) { + GL.recordError(1280); + } + return; + case 34814: + case 36345: + ret = 0; + break; + case 34466: { + var formats = GLctx.getParameter(34467); + ret = formats ? formats.length : 0; + break; + } + case 33309: { + if (GL.currentContext.version < 2) { + GL.recordError(1282); + return; + } + var exts = GLctx.getSupportedExtensions() || []; + ret = 2 * exts.length; + break; + } + case 33307: + case 33308: + if (GL.currentContext.version < 2) { + GL.recordError(1280); + return; + } + ret = name_ == 33307 ? 3 : 0; + break; + } + if (ret === undefined) { + var result = GLctx.getParameter(name_); + switch (typeof result) { + case "number": + ret = result; + break; + case "boolean": + ret = result ? 1 : 0; + break; + case "string": + GL.recordError(1280); + return; + case "object": + if (result === null) { + switch (name_) { + case 34964: + case 35725: + case 34965: + case 36006: + case 36007: + case 32873: + case 34229: + case 36662: + case 36663: + case 35053: + case 35055: + case 36010: + case 35097: + case 35869: + case 32874: + case 36389: + case 35983: + case 35368: + case 34068: { + ret = 0; + break; + } + default: { + GL.recordError(1280); + return; + } + } + } else if ( + result instanceof Float32Array || + result instanceof Uint32Array || + result instanceof Int32Array || + result instanceof Array + ) { + for (var i = 0; i < result.length; ++i) { + switch (type) { + case 0: + HEAP32[(p + i * 4) >> 2] = result[i]; + break; + case 2: + HEAPF32[(p + i * 4) >> 2] = result[i]; + break; + case 4: + HEAP8[(p + i) >> 0] = result[i] ? 1 : 0; + break; + } + } + return; + } else { + try { + ret = result.name | 0; + } catch (e) { + GL.recordError(1280); + err( + "GL_INVALID_ENUM in glGet" + + type + + "v: Unknown object returned from WebGL getParameter(" + + name_ + + ")! (error: " + + e + + ")", + ); + return; + } + } + break; + default: + GL.recordError(1280); + err( + "GL_INVALID_ENUM in glGet" + + type + + "v: Native code calling glGet" + + type + + "v(" + + name_ + + ") and it returns " + + result + + " of type " + + typeof result + + "!", + ); + return; + } + } + switch (type) { + case 1: + writeI53ToI64(p, ret); + break; + case 0: + HEAP32[p >> 2] = ret; + break; + case 2: + HEAPF32[p >> 2] = ret; + break; + case 4: + HEAP8[p >> 0] = ret ? 1 : 0; + break; + } + } + function _glGetIntegerv(name_, p) { + emscriptenWebGLGet(name_, p, 0); + } + function _glGetProgramiv(program, pname, p) { + if (!p) { + GL.recordError(1281); + return; + } + if (program >= GL.counter) { + GL.recordError(1281); + return; + } + program = GL.programs[program]; + if (pname == 35716) { + var log = GLctx.getProgramInfoLog(program); + if (log === null) log = "(unknown error)"; + HEAP32[p >> 2] = log.length + 1; + } else if (pname == 35719) { + if (!program.maxUniformLength) { + for (var i = 0; i < GLctx.getProgramParameter(program, 35718); ++i) { + program.maxUniformLength = Math.max( + program.maxUniformLength, + GLctx.getActiveUniform(program, i).name.length + 1, + ); + } + } + HEAP32[p >> 2] = program.maxUniformLength; + } else if (pname == 35722) { + if (!program.maxAttributeLength) { + for (var i = 0; i < GLctx.getProgramParameter(program, 35721); ++i) { + program.maxAttributeLength = Math.max( + program.maxAttributeLength, + GLctx.getActiveAttrib(program, i).name.length + 1, + ); + } + } + HEAP32[p >> 2] = program.maxAttributeLength; + } else if (pname == 35381) { + if (!program.maxUniformBlockNameLength) { + for (var i = 0; i < GLctx.getProgramParameter(program, 35382); ++i) { + program.maxUniformBlockNameLength = Math.max( + program.maxUniformBlockNameLength, + GLctx.getActiveUniformBlockName(program, i).length + 1, + ); + } + } + HEAP32[p >> 2] = program.maxUniformBlockNameLength; + } else { + HEAP32[p >> 2] = GLctx.getProgramParameter(program, pname); + } + } + function _glGetShaderInfoLog(shader, maxLength, length, infoLog) { + var log = GLctx.getShaderInfoLog(GL.shaders[shader]); + if (log === null) log = "(unknown error)"; + var numBytesWrittenExclNull = + maxLength > 0 && infoLog ? stringToUTF8(log, infoLog, maxLength) : 0; + if (length) HEAP32[length >> 2] = numBytesWrittenExclNull; + } + function _glGetShaderiv(shader, pname, p) { + if (!p) { + GL.recordError(1281); + return; + } + if (pname == 35716) { + var log = GLctx.getShaderInfoLog(GL.shaders[shader]); + if (log === null) log = "(unknown error)"; + var logLength = log ? log.length + 1 : 0; + HEAP32[p >> 2] = logLength; + } else if (pname == 35720) { + var source = GLctx.getShaderSource(GL.shaders[shader]); + var sourceLength = source ? source.length + 1 : 0; + HEAP32[p >> 2] = sourceLength; + } else { + HEAP32[p >> 2] = GLctx.getShaderParameter(GL.shaders[shader], pname); + } + } + function stringToNewUTF8(jsString) { + var length = lengthBytesUTF8(jsString) + 1; + var cString = _malloc(length); + stringToUTF8(jsString, cString, length); + return cString; + } + function _glGetString(name_) { + var ret = GL.stringCache[name_]; + if (!ret) { + switch (name_) { + case 7939: { + var exts = GLctx.getSupportedExtensions() || []; + exts = exts.concat( + exts.map(function (e) { + return "GL_" + e; + }), + ); + ret = stringToNewUTF8(exts.join(" ")); + break; + } + case 7936: + case 7937: + case 37445: + case 37446: { + var s = GLctx.getParameter(name_); + if (!s) { + GL.recordError(1280); + } + ret = s && stringToNewUTF8(s); + break; + } + case 7938: { + var glVersion = GLctx.getParameter(7938); + if (GL.currentContext.version >= 2) glVersion = "OpenGL ES 3.0 (" + glVersion + ")"; + else { + glVersion = "OpenGL ES 2.0 (" + glVersion + ")"; + } + ret = stringToNewUTF8(glVersion); + break; + } + case 35724: { + var glslVersion = GLctx.getParameter(35724); + var ver_re = /^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/; + var ver_num = glslVersion.match(ver_re); + if (ver_num !== null) { + if (ver_num[1].length == 3) ver_num[1] = ver_num[1] + "0"; + glslVersion = "OpenGL ES GLSL ES " + ver_num[1] + " (" + glslVersion + ")"; + } + ret = stringToNewUTF8(glslVersion); + break; + } + default: + GL.recordError(1280); + } + GL.stringCache[name_] = ret; + } + return ret; + } + function _glGetUniformBlockIndex(program, uniformBlockName) { + return GLctx["getUniformBlockIndex"](GL.programs[program], UTF8ToString(uniformBlockName)); + } + function jstoi_q(str) { + return parseInt(str); + } + function webglGetLeftBracePos(name) { + return name.slice(-1) == "]" && name.lastIndexOf("["); + } + function webglPrepareUniformLocationsBeforeFirstUse(program) { + var uniformLocsById = program.uniformLocsById, + uniformSizeAndIdsByName = program.uniformSizeAndIdsByName, + i, + j; + if (!uniformLocsById) { + program.uniformLocsById = uniformLocsById = {}; + program.uniformArrayNamesById = {}; + for (i = 0; i < GLctx.getProgramParameter(program, 35718); ++i) { + var u = GLctx.getActiveUniform(program, i); + var nm = u.name; + var sz = u.size; + var lb = webglGetLeftBracePos(nm); + var arrayName = lb > 0 ? nm.slice(0, lb) : nm; + var id = program.uniformIdCounter; + program.uniformIdCounter += sz; + uniformSizeAndIdsByName[arrayName] = [sz, id]; + for (j = 0; j < sz; ++j) { + uniformLocsById[id] = j; + program.uniformArrayNamesById[id++] = arrayName; + } + } + } + } + function _glGetUniformLocation(program, name) { + name = UTF8ToString(name); + if ((program = GL.programs[program])) { + webglPrepareUniformLocationsBeforeFirstUse(program); + var uniformLocsById = program.uniformLocsById; + var arrayIndex = 0; + var uniformBaseName = name; + var leftBrace = webglGetLeftBracePos(name); + if (leftBrace > 0) { + arrayIndex = jstoi_q(name.slice(leftBrace + 1)) >>> 0; + uniformBaseName = name.slice(0, leftBrace); + } + var sizeAndId = program.uniformSizeAndIdsByName[uniformBaseName]; + if (sizeAndId && arrayIndex < sizeAndId[0]) { + arrayIndex += sizeAndId[1]; + if ( + (uniformLocsById[arrayIndex] = + uniformLocsById[arrayIndex] || GLctx.getUniformLocation(program, name)) + ) { + return arrayIndex; + } + } + } else { + GL.recordError(1281); + } + return -1; + } + function _glLinkProgram(program) { + program = GL.programs[program]; + GLctx.linkProgram(program); + program.uniformLocsById = 0; + program.uniformSizeAndIdsByName = {}; + } + function _glPixelStorei(pname, param) { + if (pname == 3317) { + GL.unpackAlignment = param; + } + GLctx.pixelStorei(pname, param); + } + function computeUnpackAlignedImageSize(width, height, sizePerPixel, alignment) { + function roundedToNextMultipleOf(x, y) { + return (x + y - 1) & -y; + } + var plainRowSize = width * sizePerPixel; + var alignedRowSize = roundedToNextMultipleOf(plainRowSize, alignment); + return height * alignedRowSize; + } + function __colorChannelsInGlTextureFormat(format) { + var colorChannels = { + 5: 3, + 6: 4, + 8: 2, + 29502: 3, + 29504: 4, + 26917: 2, + 26918: 2, + 29846: 3, + 29847: 4, + }; + return colorChannels[format - 6402] || 1; + } + function heapObjectForWebGLType(type) { + type -= 5120; + if (type == 0) return HEAP8; + if (type == 1) return HEAPU8; + if (type == 2) return HEAP16; + if (type == 4) return HEAP32; + if (type == 6) return HEAPF32; + if (type == 5 || type == 28922 || type == 28520 || type == 30779 || type == 30782) + return HEAPU32; + return HEAPU16; + } + function heapAccessShiftForWebGLHeap(heap) { + return 31 - Math.clz32(heap.BYTES_PER_ELEMENT); + } + function emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, internalFormat) { + var heap = heapObjectForWebGLType(type); + var shift = heapAccessShiftForWebGLHeap(heap); + var byteSize = 1 << shift; + var sizePerPixel = __colorChannelsInGlTextureFormat(format) * byteSize; + var bytes = computeUnpackAlignedImageSize(width, height, sizePerPixel, GL.unpackAlignment); + return heap.subarray(pixels >> shift, (pixels + bytes) >> shift); + } + function _glReadPixels(x, y, width, height, format, type, pixels) { + if (GL.currentContext.version >= 2) { + if (GLctx.currentPixelPackBufferBinding) { + GLctx.readPixels(x, y, width, height, format, type, pixels); + } else { + var heap = heapObjectForWebGLType(type); + GLctx.readPixels( + x, + y, + width, + height, + format, + type, + heap, + pixels >> heapAccessShiftForWebGLHeap(heap), + ); + } + return; + } + var pixelData = emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, format); + if (!pixelData) { + GL.recordError(1280); + return; + } + GLctx.readPixels(x, y, width, height, format, type, pixelData); + } + function _glShaderSource(shader, count, string, length) { + var source = GL.getSource(shader, count, string, length); + GLctx.shaderSource(GL.shaders[shader], source); + } + function _glTexImage2D( + target, + level, + internalFormat, + width, + height, + border, + format, + type, + pixels, + ) { + if (GL.currentContext.version >= 2) { + if (GLctx.currentPixelUnpackBufferBinding) { + GLctx.texImage2D( + target, + level, + internalFormat, + width, + height, + border, + format, + type, + pixels, + ); + } else if (pixels) { + var heap = heapObjectForWebGLType(type); + GLctx.texImage2D( + target, + level, + internalFormat, + width, + height, + border, + format, + type, + heap, + pixels >> heapAccessShiftForWebGLHeap(heap), + ); + } else { + GLctx.texImage2D( + target, + level, + internalFormat, + width, + height, + border, + format, + type, + null, + ); + } + return; + } + GLctx.texImage2D( + target, + level, + internalFormat, + width, + height, + border, + format, + type, + pixels + ? emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, internalFormat) + : null, + ); + } + function _glTexParameterfv(target, pname, params) { + var param = HEAPF32[params >> 2]; + GLctx.texParameterf(target, pname, param); + } + function _glTexParameteri(x0, x1, x2) { + GLctx["texParameteri"](x0, x1, x2); + } + function _glTexStorage2D(x0, x1, x2, x3, x4) { + GLctx["texStorage2D"](x0, x1, x2, x3, x4); + } + function _glTexStorage3D(x0, x1, x2, x3, x4, x5) { + GLctx["texStorage3D"](x0, x1, x2, x3, x4, x5); + } + function _glTexSubImage2D( + target, + level, + xoffset, + yoffset, + width, + height, + format, + type, + pixels, + ) { + if (GL.currentContext.version >= 2) { + if (GLctx.currentPixelUnpackBufferBinding) { + GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels); + } else if (pixels) { + var heap = heapObjectForWebGLType(type); + GLctx.texSubImage2D( + target, + level, + xoffset, + yoffset, + width, + height, + format, + type, + heap, + pixels >> heapAccessShiftForWebGLHeap(heap), + ); + } else { + GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, null); + } + return; + } + var pixelData = null; + if (pixels) + pixelData = emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, 0); + GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixelData); + } + function _glTexSubImage3D( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + pixels, + ) { + if (GLctx.currentPixelUnpackBufferBinding) { + GLctx["texSubImage3D"]( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + pixels, + ); + } else if (pixels) { + var heap = heapObjectForWebGLType(type); + GLctx["texSubImage3D"]( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + heap, + pixels >> heapAccessShiftForWebGLHeap(heap), + ); + } else { + GLctx["texSubImage3D"]( + target, + level, + xoffset, + yoffset, + zoffset, + width, + height, + depth, + format, + type, + null, + ); + } + } + function webglGetUniformLocation(location) { + var p = GLctx.currentProgram; + if (p) { + var webglLoc = p.uniformLocsById[location]; + if (typeof webglLoc == "number") { + p.uniformLocsById[location] = webglLoc = GLctx.getUniformLocation( + p, + p.uniformArrayNamesById[location] + (webglLoc > 0 ? "[" + webglLoc + "]" : ""), + ); + } + return webglLoc; + } else { + GL.recordError(1282); + } + } + function _glUniform1f(location, v0) { + GLctx.uniform1f(webglGetUniformLocation(location), v0); + } + function _glUniform1i(location, v0) { + GLctx.uniform1i(webglGetUniformLocation(location), v0); + } + var miniTempWebGLFloatBuffers = []; + function _glUniform2fv(location, count, value) { + if (GL.currentContext.version >= 2) { + count && + GLctx.uniform2fv(webglGetUniformLocation(location), HEAPF32, value >> 2, count * 2); + return; + } + if (count <= 144) { + var view = miniTempWebGLFloatBuffers[2 * count - 1]; + for (var i = 0; i < 2 * count; i += 2) { + view[i] = HEAPF32[(value + 4 * i) >> 2]; + view[i + 1] = HEAPF32[(value + (4 * i + 4)) >> 2]; + } + } else { + var view = HEAPF32.subarray(value >> 2, (value + count * 8) >> 2); + } + GLctx.uniform2fv(webglGetUniformLocation(location), view); + } + function _glUniform4fv(location, count, value) { + if (GL.currentContext.version >= 2) { + count && + GLctx.uniform4fv(webglGetUniformLocation(location), HEAPF32, value >> 2, count * 4); + return; + } + if (count <= 72) { + var view = miniTempWebGLFloatBuffers[4 * count - 1]; + var heap = HEAPF32; + value >>= 2; + for (var i = 0; i < 4 * count; i += 4) { + var dst = value + i; + view[i] = heap[dst]; + view[i + 1] = heap[dst + 1]; + view[i + 2] = heap[dst + 2]; + view[i + 3] = heap[dst + 3]; + } + } else { + var view = HEAPF32.subarray(value >> 2, (value + count * 16) >> 2); + } + GLctx.uniform4fv(webglGetUniformLocation(location), view); + } + var __miniTempWebGLIntBuffers = []; + function _glUniform4iv(location, count, value) { + if (GL.currentContext.version >= 2) { + count && GLctx.uniform4iv(webglGetUniformLocation(location), HEAP32, value >> 2, count * 4); + return; + } + if (count <= 72) { + var view = __miniTempWebGLIntBuffers[4 * count - 1]; + for (var i = 0; i < 4 * count; i += 4) { + view[i] = HEAP32[(value + 4 * i) >> 2]; + view[i + 1] = HEAP32[(value + (4 * i + 4)) >> 2]; + view[i + 2] = HEAP32[(value + (4 * i + 8)) >> 2]; + view[i + 3] = HEAP32[(value + (4 * i + 12)) >> 2]; + } + } else { + var view = HEAP32.subarray(value >> 2, (value + count * 16) >> 2); + } + GLctx.uniform4iv(webglGetUniformLocation(location), view); + } + function _glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding) { + program = GL.programs[program]; + GLctx["uniformBlockBinding"](program, uniformBlockIndex, uniformBlockBinding); + } + function _glUniformMatrix4fv(location, count, transpose, value) { + if (GL.currentContext.version >= 2) { + count && + GLctx.uniformMatrix4fv( + webglGetUniformLocation(location), + !!transpose, + HEAPF32, + value >> 2, + count * 16, + ); + return; + } + if (count <= 18) { + var view = miniTempWebGLFloatBuffers[16 * count - 1]; + var heap = HEAPF32; + value >>= 2; + for (var i = 0; i < 16 * count; i += 16) { + var dst = value + i; + view[i] = heap[dst]; + view[i + 1] = heap[dst + 1]; + view[i + 2] = heap[dst + 2]; + view[i + 3] = heap[dst + 3]; + view[i + 4] = heap[dst + 4]; + view[i + 5] = heap[dst + 5]; + view[i + 6] = heap[dst + 6]; + view[i + 7] = heap[dst + 7]; + view[i + 8] = heap[dst + 8]; + view[i + 9] = heap[dst + 9]; + view[i + 10] = heap[dst + 10]; + view[i + 11] = heap[dst + 11]; + view[i + 12] = heap[dst + 12]; + view[i + 13] = heap[dst + 13]; + view[i + 14] = heap[dst + 14]; + view[i + 15] = heap[dst + 15]; + } + } else { + var view = HEAPF32.subarray(value >> 2, (value + count * 64) >> 2); + } + GLctx.uniformMatrix4fv(webglGetUniformLocation(location), !!transpose, view); + } + function _glUseProgram(program) { + program = GL.programs[program]; + GLctx.useProgram(program); + GLctx.currentProgram = program; + } + function _glVertexAttribPointer(index, size, type, normalized, stride, ptr) { + var cb = GL.currentContext.clientBuffers[index]; + if (!GLctx.currentArrayBufferBinding) { + cb.size = size; + cb.type = type; + cb.normalized = normalized; + cb.stride = stride; + cb.ptr = ptr; + cb.clientside = true; + cb.vertexAttribPointerAdaptor = function (index, size, type, normalized, stride, ptr) { + this.vertexAttribPointer(index, size, type, normalized, stride, ptr); + }; + return; + } + cb.clientside = false; + GLctx.vertexAttribPointer(index, size, type, !!normalized, stride, ptr); + } + function _glViewport(x0, x1, x2, x3) { + GLctx["viewport"](x0, x1, x2, x3); + } + function _mediapipe_find_canvas_event_target(canvasSelector) { + return Emval.toHandle(findCanvasEventTarget(canvasSelector)); + } + function _mediapipe_webgl_tex_image_drawable(drawableHandle) { + const drawable = Emval.toValue(drawableHandle); + GLctx.texImage2D(GLctx.TEXTURE_2D, 0, GLctx.RGBA, GLctx.RGBA, GLctx.UNSIGNED_BYTE, drawable); + } + function __arraySum(array, index) { + var sum = 0; + for (var i = 0; i <= index; sum += array[i++]) {} + return sum; + } + var __MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + var __MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + function __addDays(date, days) { + var newDate = new Date(date.getTime()); + while (days > 0) { + var leap = __isLeapYear(newDate.getFullYear()); + var currentMonth = newDate.getMonth(); + var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth]; + if (days > daysInCurrentMonth - newDate.getDate()) { + days -= daysInCurrentMonth - newDate.getDate() + 1; + newDate.setDate(1); + if (currentMonth < 11) { + newDate.setMonth(currentMonth + 1); + } else { + newDate.setMonth(0); + newDate.setFullYear(newDate.getFullYear() + 1); + } + } else { + newDate.setDate(newDate.getDate() + days); + return newDate; + } + } + return newDate; + } + function writeArrayToMemory(array, buffer) { + assert( + array.length >= 0, + "writeArrayToMemory array must have a length (should be an array or typed array)", + ); + HEAP8.set(array, buffer); + } + function _strftime(s, maxsize, format, tm) { + var tm_zone = HEAP32[(tm + 40) >> 2]; + var date = { + tm_sec: HEAP32[tm >> 2], + tm_min: HEAP32[(tm + 4) >> 2], + tm_hour: HEAP32[(tm + 8) >> 2], + tm_mday: HEAP32[(tm + 12) >> 2], + tm_mon: HEAP32[(tm + 16) >> 2], + tm_year: HEAP32[(tm + 20) >> 2], + tm_wday: HEAP32[(tm + 24) >> 2], + tm_yday: HEAP32[(tm + 28) >> 2], + tm_isdst: HEAP32[(tm + 32) >> 2], + tm_gmtoff: HEAP32[(tm + 36) >> 2], + tm_zone: tm_zone ? UTF8ToString(tm_zone) : "", + }; + var pattern = UTF8ToString(format); + var EXPANSION_RULES_1 = { + "%c": "%a %b %d %H:%M:%S %Y", + "%D": "%m/%d/%y", + "%F": "%Y-%m-%d", + "%h": "%b", + "%r": "%I:%M:%S %p", + "%R": "%H:%M", + "%T": "%H:%M:%S", + "%x": "%m/%d/%y", + "%X": "%H:%M:%S", + "%Ec": "%c", + "%EC": "%C", + "%Ex": "%m/%d/%y", + "%EX": "%H:%M:%S", + "%Ey": "%y", + "%EY": "%Y", + "%Od": "%d", + "%Oe": "%e", + "%OH": "%H", + "%OI": "%I", + "%Om": "%m", + "%OM": "%M", + "%OS": "%S", + "%Ou": "%u", + "%OU": "%U", + "%OV": "%V", + "%Ow": "%w", + "%OW": "%W", + "%Oy": "%y", + }; + for (var rule in EXPANSION_RULES_1) { + pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_1[rule]); + } + var WEEKDAYS = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; + var MONTHS = [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December", + ]; + function leadingSomething(value, digits, character) { + var str = typeof value == "number" ? value.toString() : value || ""; + while (str.length < digits) { + str = character[0] + str; + } + return str; + } + function leadingNulls(value, digits) { + return leadingSomething(value, digits, "0"); + } + function compareByDay(date1, date2) { + function sgn(value) { + return value < 0 ? -1 : value > 0 ? 1 : 0; + } + var compare; + if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) { + if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) { + compare = sgn(date1.getDate() - date2.getDate()); + } + } + return compare; + } + function getFirstWeekStartDate(janFourth) { + switch (janFourth.getDay()) { + case 0: + return new Date(janFourth.getFullYear() - 1, 11, 29); + case 1: + return janFourth; + case 2: + return new Date(janFourth.getFullYear(), 0, 3); + case 3: + return new Date(janFourth.getFullYear(), 0, 2); + case 4: + return new Date(janFourth.getFullYear(), 0, 1); + case 5: + return new Date(janFourth.getFullYear() - 1, 11, 31); + case 6: + return new Date(janFourth.getFullYear() - 1, 11, 30); + } + } + function getWeekBasedYear(date) { + var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday); + var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4); + var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4); + var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear); + var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear); + if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) { + if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) { + return thisDate.getFullYear() + 1; + } + return thisDate.getFullYear(); + } + return thisDate.getFullYear() - 1; + } + var EXPANSION_RULES_2 = { + "%a": function (date) { + return WEEKDAYS[date.tm_wday].substring(0, 3); + }, + "%A": function (date) { + return WEEKDAYS[date.tm_wday]; + }, + "%b": function (date) { + return MONTHS[date.tm_mon].substring(0, 3); + }, + "%B": function (date) { + return MONTHS[date.tm_mon]; + }, + "%C": function (date) { + var year = date.tm_year + 1900; + return leadingNulls((year / 100) | 0, 2); + }, + "%d": function (date) { + return leadingNulls(date.tm_mday, 2); + }, + "%e": function (date) { + return leadingSomething(date.tm_mday, 2, " "); + }, + "%g": function (date) { + return getWeekBasedYear(date).toString().substring(2); + }, + "%G": function (date) { + return getWeekBasedYear(date); + }, + "%H": function (date) { + return leadingNulls(date.tm_hour, 2); + }, + "%I": function (date) { + var twelveHour = date.tm_hour; + if (twelveHour == 0) twelveHour = 12; + else if (twelveHour > 12) twelveHour -= 12; + return leadingNulls(twelveHour, 2); + }, + "%j": function (date) { + return leadingNulls( + date.tm_mday + + __arraySum( + __isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, + date.tm_mon - 1, + ), + 3, + ); + }, + "%m": function (date) { + return leadingNulls(date.tm_mon + 1, 2); + }, + "%M": function (date) { + return leadingNulls(date.tm_min, 2); + }, + "%n": function () { + return "\n"; + }, + "%p": function (date) { + if (date.tm_hour >= 0 && date.tm_hour < 12) { + return "AM"; + } + return "PM"; + }, + "%S": function (date) { + return leadingNulls(date.tm_sec, 2); + }, + "%t": function () { + return "\t"; + }, + "%u": function (date) { + return date.tm_wday || 7; + }, + "%U": function (date) { + var days = date.tm_yday + 7 - date.tm_wday; + return leadingNulls(Math.floor(days / 7), 2); + }, + "%V": function (date) { + var val = Math.floor((date.tm_yday + 7 - ((date.tm_wday + 6) % 7)) / 7); + if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) { + val++; + } + if (!val) { + val = 52; + var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7; + if (dec31 == 4 || (dec31 == 5 && __isLeapYear((date.tm_year % 400) - 1))) { + val++; + } + } else if (val == 53) { + var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7; + if (jan1 != 4 && (jan1 != 3 || !__isLeapYear(date.tm_year))) val = 1; + } + return leadingNulls(val, 2); + }, + "%w": function (date) { + return date.tm_wday; + }, + "%W": function (date) { + var days = date.tm_yday + 7 - ((date.tm_wday + 6) % 7); + return leadingNulls(Math.floor(days / 7), 2); + }, + "%y": function (date) { + return (date.tm_year + 1900).toString().substring(2); + }, + "%Y": function (date) { + return date.tm_year + 1900; + }, + "%z": function (date) { + var off = date.tm_gmtoff; + var ahead = off >= 0; + off = Math.abs(off) / 60; + off = (off / 60) * 100 + (off % 60); + return (ahead ? "+" : "-") + String("0000" + off).slice(-4); + }, + "%Z": function (date) { + return date.tm_zone; + }, + "%%": function () { + return "%"; + }, + }; + pattern = pattern.replace(/%%/g, "\0\0"); + for (var rule in EXPANSION_RULES_2) { + if (pattern.includes(rule)) { + pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_2[rule](date)); + } + } + pattern = pattern.replace(/\0\0/g, "%"); + var bytes = intArrayFromString(pattern, false); + if (bytes.length > maxsize) { + return 0; + } + writeArrayToMemory(bytes, s); + return bytes.length - 1; + } + function _strftime_l(s, maxsize, format, tm, loc) { + return _strftime(s, maxsize, format, tm); + } + function _wgpuBindGroupLayoutRelease(id) { + WebGPU.mgrBindGroupLayout.release(id); + } + function _wgpuBindGroupRelease(id) { + WebGPU.mgrBindGroup.release(id); + } + function _wgpuBufferGetMappedRange(bufferId, offset, size) { + var bufferWrapper = WebGPU.mgrBuffer.objects[bufferId]; + assert(typeof bufferWrapper != "undefined"); + if (size === 0) warnOnce("getMappedRange size=0 no longer means WGPU_WHOLE_MAP_SIZE"); + size = size >>> 0; + if (size === 4294967295) size = undefined; + if (bufferWrapper.mapMode !== 2) { + abort("GetMappedRange called, but buffer not mapped for writing"); + return 0; + } + var mapped; + try { + mapped = bufferWrapper.object["getMappedRange"](offset, size); + } catch (ex) { + err("wgpuBufferGetMappedRange(" + offset + ", " + size + ") failed: " + ex); + return 0; + } + var data = _malloc(mapped.byteLength); + HEAPU8.fill(0, data, mapped.byteLength); + bufferWrapper.onUnmap.push(function () { + new Uint8Array(mapped).set(HEAPU8.subarray(data, data + mapped.byteLength)); + _free(data); + }); + return data; + } + function _wgpuBufferReference(id) { + WebGPU.mgrBuffer.reference(id); + } + function _wgpuBufferRelease(id) { + WebGPU.mgrBuffer.release(id); + } + function _wgpuBufferUnmap(bufferId) { + var bufferWrapper = WebGPU.mgrBuffer.objects[bufferId]; + assert(typeof bufferWrapper != "undefined"); + if (!bufferWrapper.onUnmap) { + return; + } + for (var i = 0; i < bufferWrapper.onUnmap.length; ++i) { + bufferWrapper.onUnmap[i](); + } + bufferWrapper.onUnmap = undefined; + bufferWrapper.object["unmap"](); + } + function _wgpuCommandBufferRelease(id) { + WebGPU.mgrCommandBuffer.release(id); + } + function _wgpuCommandEncoderBeginComputePass(encoderId, descriptor) { + var desc; + function makeComputePassTimestampWrite(twPtr) { + return { + querySet: WebGPU.mgrQuerySet.get(HEAPU32[twPtr >> 2]), + queryIndex: HEAPU32[(twPtr + 4) >> 2], + location: WebGPU.ComputePassTimestampLocation[HEAPU32[(twPtr + 8) >> 2]], + }; + } + function makeComputePassTimestampWrites(count, twPtr) { + var timestampWrites = []; + for (var i = 0; i < count; ++i) { + timestampWrites.push(makeComputePassTimestampWrite(twPtr + 12 * i)); + } + return timestampWrites; + } + if (descriptor) { + assert(descriptor); + assert(HEAPU32[descriptor >> 2] === 0); + desc = {}; + var labelPtr = HEAPU32[(descriptor + 4) >> 2]; + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + var timestampWriteCount = HEAPU32[(descriptor + 8) >> 2]; + if (timestampWriteCount) { + desc["timestampWrites"] = makeComputePassTimestampWrites( + timestampWriteCount, + HEAPU32[(descriptor + 12) >> 2], + ); + } + } + var commandEncoder = WebGPU.mgrCommandEncoder.get(encoderId); + return WebGPU.mgrComputePassEncoder.create(commandEncoder["beginComputePass"](desc)); + } + function _wgpuCommandEncoderBeginRenderPass(encoderId, descriptor) { + assert(descriptor); + function makeColorAttachment(caPtr) { + var viewPtr = HEAPU32[caPtr >> 2]; + if (viewPtr === 0) { + return undefined; + } + var loadOpInt = HEAPU32[(caPtr + 8) >> 2]; + assert(loadOpInt !== 0); + var storeOpInt = HEAPU32[(caPtr + 12) >> 2]; + assert(storeOpInt !== 0); + var clearValue = WebGPU.makeColor(caPtr + 16); + return { + view: WebGPU.mgrTextureView.get(viewPtr), + resolveTarget: WebGPU.mgrTextureView.get(HEAPU32[(caPtr + 4) >> 2]), + clearValue: clearValue, + loadOp: WebGPU.LoadOp[loadOpInt], + storeOp: WebGPU.StoreOp[storeOpInt], + }; + } + function makeColorAttachments(count, caPtr) { + var attachments = []; + for (var i = 0; i < count; ++i) { + attachments.push(makeColorAttachment(caPtr + 48 * i)); + } + return attachments; + } + function makeDepthStencilAttachment(dsaPtr) { + if (dsaPtr === 0) return undefined; + return { + view: WebGPU.mgrTextureView.get(HEAPU32[dsaPtr >> 2]), + depthClearValue: HEAPF32[(dsaPtr + 12) >> 2], + depthLoadOp: WebGPU.LoadOp[HEAPU32[(dsaPtr + 4) >> 2]], + depthStoreOp: WebGPU.StoreOp[HEAPU32[(dsaPtr + 8) >> 2]], + depthReadOnly: HEAP8[(dsaPtr + 16) >> 0] !== 0, + stencilClearValue: HEAPU32[(dsaPtr + 28) >> 2], + stencilLoadOp: WebGPU.LoadOp[HEAPU32[(dsaPtr + 20) >> 2]], + stencilStoreOp: WebGPU.StoreOp[HEAPU32[(dsaPtr + 24) >> 2]], + stencilReadOnly: HEAP8[(dsaPtr + 32) >> 0] !== 0, + }; + } + function makeRenderPassTimestampWrite(twPtr) { + return { + querySet: WebGPU.mgrQuerySet.get(HEAPU32[twPtr >> 2]), + queryIndex: HEAPU32[(twPtr + 4) >> 2], + location: WebGPU.RenderPassTimestampLocation[HEAPU32[(twPtr + 8) >> 2]], + }; + } + function makeRenderPassTimestampWrites(count, twPtr) { + var timestampWrites = []; + for (var i = 0; i < count; ++i) { + timestampWrites.push(makeRenderPassTimestampWrite(twPtr + 12 * i)); + } + return timestampWrites; + } + function makeRenderPassDescriptor(descriptor) { + assert(descriptor); + var nextInChainPtr = HEAPU32[descriptor >> 2]; + var maxDrawCount = undefined; + if (nextInChainPtr !== 0) { + var sType = HEAPU32[(nextInChainPtr + 4) >> 2]; + assert(sType === 15); + assert(0 === HEAPU32[nextInChainPtr >> 2]); + var renderPassDescriptorMaxDrawCount = nextInChainPtr; + assert(renderPassDescriptorMaxDrawCount); + assert(HEAPU32[renderPassDescriptorMaxDrawCount >> 2] === 0); + maxDrawCount = + HEAPU32[(renderPassDescriptorMaxDrawCount + 4 + 8) >> 2] * 4294967296 + + HEAPU32[(renderPassDescriptorMaxDrawCount + 8) >> 2]; + } + var desc = { + label: undefined, + colorAttachments: makeColorAttachments( + HEAPU32[(descriptor + 8) >> 2], + HEAPU32[(descriptor + 12) >> 2], + ), + depthStencilAttachment: makeDepthStencilAttachment(HEAPU32[(descriptor + 16) >> 2]), + occlusionQuerySet: WebGPU.mgrQuerySet.get(HEAPU32[(descriptor + 20) >> 2]), + maxDrawCount: maxDrawCount, + }; + var labelPtr = HEAPU32[(descriptor + 4) >> 2]; + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + var timestampWriteCount = HEAPU32[(descriptor + 24) >> 2]; + if (timestampWriteCount) { + desc["timestampWrites"] = makeRenderPassTimestampWrites( + timestampWriteCount, + HEAPU32[(descriptor + 28) >> 2], + ); + } + return desc; + } + var desc = makeRenderPassDescriptor(descriptor); + var commandEncoder = WebGPU.mgrCommandEncoder.get(encoderId); + return WebGPU.mgrRenderPassEncoder.create(commandEncoder["beginRenderPass"](desc)); + } + function _wgpuCommandEncoderCopyBufferToTexture(encoderId, srcPtr, dstPtr, copySizePtr) { + var commandEncoder = WebGPU.mgrCommandEncoder.get(encoderId); + var copySize = WebGPU.makeExtent3D(copySizePtr); + commandEncoder["copyBufferToTexture"]( + WebGPU.makeImageCopyBuffer(srcPtr), + WebGPU.makeImageCopyTexture(dstPtr), + copySize, + ); + } + function _wgpuCommandEncoderCopyTextureToTexture(encoderId, srcPtr, dstPtr, copySizePtr) { + var commandEncoder = WebGPU.mgrCommandEncoder.get(encoderId); + var copySize = WebGPU.makeExtent3D(copySizePtr); + commandEncoder["copyTextureToTexture"]( + WebGPU.makeImageCopyTexture(srcPtr), + WebGPU.makeImageCopyTexture(dstPtr), + copySize, + ); + } + function _wgpuCommandEncoderFinish(encoderId) { + var commandEncoder = WebGPU.mgrCommandEncoder.get(encoderId); + return WebGPU.mgrCommandBuffer.create(commandEncoder["finish"]()); + } + function _wgpuCommandEncoderRelease(id) { + WebGPU.mgrCommandEncoder.release(id); + } + function _wgpuComputePassEncoderDispatchWorkgroups(passId, x, y, z) { + var pass = WebGPU.mgrComputePassEncoder.get(passId); + if (pass["dispatchWorkgroups"]) { + pass["dispatchWorkgroups"](x, y, z); + } else { + pass["dispatch"](x, y, z); + } + } + function _wgpuComputePassEncoderEnd(passId) { + var pass = WebGPU.mgrComputePassEncoder.get(passId); + pass["end"](); + } + function _wgpuComputePassEncoderRelease(id) { + WebGPU.mgrComputePassEncoder.release(id); + } + function _wgpuComputePassEncoderSetBindGroup( + passId, + groupIndex, + groupId, + dynamicOffsetCount, + dynamicOffsetsPtr, + ) { + var pass = WebGPU.mgrComputePassEncoder.get(passId); + var group = WebGPU.mgrBindGroup.get(groupId); + if (dynamicOffsetCount == 0) { + pass["setBindGroup"](groupIndex, group); + } else { + var offsets = []; + for (var i = 0; i < dynamicOffsetCount; i++, dynamicOffsetsPtr += 4) { + offsets.push(HEAPU32[dynamicOffsetsPtr >> 2]); + } + pass["setBindGroup"](groupIndex, group, offsets); + } + } + function _wgpuComputePassEncoderSetPipeline(passId, pipelineId) { + var pass = WebGPU.mgrComputePassEncoder.get(passId); + var pipeline = WebGPU.mgrComputePipeline.get(pipelineId); + pass["setPipeline"](pipeline); + } + function _wgpuComputePipelineGetBindGroupLayout(pipelineId, groupIndex) { + var pipeline = WebGPU.mgrComputePipeline.get(pipelineId); + return WebGPU.mgrBindGroupLayout.create(pipeline["getBindGroupLayout"](groupIndex)); + } + function _wgpuComputePipelineRelease(id) { + WebGPU.mgrComputePipeline.release(id); + } + function _wgpuDeviceCreateBindGroup(deviceId, descriptor) { + assert(descriptor); + assert(HEAPU32[descriptor >> 2] === 0); + function makeEntry(entryPtr) { + assert(entryPtr); + var bufferId = HEAPU32[(entryPtr + 8) >> 2]; + var samplerId = HEAPU32[(entryPtr + 32) >> 2]; + var textureViewId = HEAPU32[(entryPtr + 36) >> 2]; + assert((bufferId !== 0) + (samplerId !== 0) + (textureViewId !== 0) === 1); + var binding = HEAPU32[(entryPtr + 4) >> 2]; + if (bufferId) { + var size_low = HEAPU32[(entryPtr + 24) >> 2]; + var size_high = HEAPU32[(entryPtr + 28) >> 2]; + var size = + size_high === -1 && size_low === -1 + ? undefined + : (assert(size_high < 2097152), size_high * 4294967296 + size_low); + return { + binding: binding, + resource: { + buffer: WebGPU.mgrBuffer.get(bufferId), + offset: + HEAPU32[(entryPtr + 4 + 16) >> 2] * 4294967296 + HEAPU32[(entryPtr + 16) >> 2], + size: size, + }, + }; + } else if (samplerId) { + return { binding: binding, resource: WebGPU.mgrSampler.get(samplerId) }; + } else { + return { binding: binding, resource: WebGPU.mgrTextureView.get(textureViewId) }; + } + } + function makeEntries(count, entriesPtrs) { + var entries = []; + for (var i = 0; i < count; ++i) { + entries.push(makeEntry(entriesPtrs + 40 * i)); + } + return entries; + } + var desc = { + label: undefined, + layout: WebGPU.mgrBindGroupLayout.get(HEAPU32[(descriptor + 8) >> 2]), + entries: makeEntries(HEAPU32[(descriptor + 12) >> 2], HEAPU32[(descriptor + 16) >> 2]), + }; + var labelPtr = HEAPU32[(descriptor + 4) >> 2]; + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + var device = WebGPU.mgrDevice.get(deviceId); + return WebGPU.mgrBindGroup.create(device["createBindGroup"](desc)); + } + function _wgpuDeviceCreateBuffer(deviceId, descriptor) { + assert(descriptor); + assert(HEAPU32[descriptor >> 2] === 0); + var mappedAtCreation = HEAP8[(descriptor + 24) >> 0] !== 0; + var desc = { + label: undefined, + usage: HEAPU32[(descriptor + 8) >> 2], + size: HEAPU32[(descriptor + 4 + 16) >> 2] * 4294967296 + HEAPU32[(descriptor + 16) >> 2], + mappedAtCreation: mappedAtCreation, + }; + var labelPtr = HEAPU32[(descriptor + 4) >> 2]; + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + var device = WebGPU.mgrDevice.get(deviceId); + var bufferWrapper = {}; + var id = WebGPU.mgrBuffer.create(device["createBuffer"](desc), bufferWrapper); + if (mappedAtCreation) { + bufferWrapper.mapMode = 2; + bufferWrapper.onUnmap = []; + } + return id; + } + function _wgpuDeviceCreateCommandEncoder(deviceId, descriptor) { + var desc; + if (descriptor) { + assert(descriptor); + assert(HEAPU32[descriptor >> 2] === 0); + desc = { label: undefined }; + var labelPtr = HEAPU32[(descriptor + 4) >> 2]; + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + } + var device = WebGPU.mgrDevice.get(deviceId); + return WebGPU.mgrCommandEncoder.create(device["createCommandEncoder"](desc)); + } + function _wgpuDeviceCreateComputePipeline(deviceId, descriptor) { + assert(descriptor); + assert(HEAPU32[descriptor >> 2] === 0); + var desc = { + label: undefined, + layout: WebGPU.mgrPipelineLayout.get(HEAPU32[(descriptor + 8) >> 2]), + compute: WebGPU.makeProgrammableStageDescriptor(descriptor + 12), + }; + var labelPtr = HEAPU32[(descriptor + 4) >> 2]; + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + var device = WebGPU.mgrDevice.get(deviceId); + return WebGPU.mgrComputePipeline.create(device["createComputePipeline"](desc)); + } + function _wgpuDeviceCreateRenderPipeline(deviceId, descriptor) { + assert(descriptor); + assert(HEAPU32[descriptor >> 2] === 0); + function makePrimitiveState(rsPtr) { + if (!rsPtr) return undefined; + assert(rsPtr); + assert(HEAPU32[rsPtr >> 2] === 0); + return { + topology: WebGPU.PrimitiveTopology[HEAPU32[(rsPtr + 4) >> 2]], + stripIndexFormat: WebGPU.IndexFormat[HEAPU32[(rsPtr + 8) >> 2]], + frontFace: WebGPU.FrontFace[HEAPU32[(rsPtr + 12) >> 2]], + cullMode: WebGPU.CullMode[HEAPU32[(rsPtr + 16) >> 2]], + }; + } + function makeBlendComponent(bdPtr) { + if (!bdPtr) return undefined; + return { + operation: WebGPU.BlendOperation[HEAPU32[bdPtr >> 2]], + srcFactor: WebGPU.BlendFactor[HEAPU32[(bdPtr + 4) >> 2]], + dstFactor: WebGPU.BlendFactor[HEAPU32[(bdPtr + 8) >> 2]], + }; + } + function makeBlendState(bsPtr) { + if (!bsPtr) return undefined; + assert(bsPtr); + assert(HEAPU32[bsPtr >> 2] === 0); + return { alpha: makeBlendComponent(bsPtr + 12), color: makeBlendComponent(bsPtr + 0) }; + } + function makeColorState(csPtr) { + assert(csPtr); + assert(HEAPU32[csPtr >> 2] === 0); + var formatInt = HEAPU32[(csPtr + 4) >> 2]; + return formatInt === 0 + ? undefined + : { + format: WebGPU.TextureFormat[formatInt], + blend: makeBlendState(HEAPU32[(csPtr + 8) >> 2]), + writeMask: HEAPU32[(csPtr + 12) >> 2], + }; + } + function makeColorStates(count, csArrayPtr) { + var states = []; + for (var i = 0; i < count; ++i) { + states.push(makeColorState(csArrayPtr + 16 * i)); + } + return states; + } + function makeStencilStateFace(ssfPtr) { + assert(ssfPtr); + return { + compare: WebGPU.CompareFunction[HEAPU32[ssfPtr >> 2]], + failOp: WebGPU.StencilOperation[HEAPU32[(ssfPtr + 4) >> 2]], + depthFailOp: WebGPU.StencilOperation[HEAPU32[(ssfPtr + 8) >> 2]], + passOp: WebGPU.StencilOperation[HEAPU32[(ssfPtr + 12) >> 2]], + }; + } + function makeDepthStencilState(dssPtr) { + if (!dssPtr) return undefined; + assert(dssPtr); + return { + format: WebGPU.TextureFormat[HEAPU32[(dssPtr + 4) >> 2]], + depthWriteEnabled: HEAP8[(dssPtr + 8) >> 0] !== 0, + depthCompare: WebGPU.CompareFunction[HEAPU32[(dssPtr + 12) >> 2]], + stencilFront: makeStencilStateFace(dssPtr + 16), + stencilBack: makeStencilStateFace(dssPtr + 32), + stencilReadMask: HEAPU32[(dssPtr + 48) >> 2], + stencilWriteMask: HEAPU32[(dssPtr + 52) >> 2], + depthBias: HEAPU32[(dssPtr + 56) >> 2], + depthBiasSlopeScale: HEAPF32[(dssPtr + 60) >> 2], + depthBiasClamp: HEAPF32[(dssPtr + 64) >> 2], + }; + } + function makeVertexAttribute(vaPtr) { + assert(vaPtr); + return { + format: WebGPU.VertexFormat[HEAPU32[vaPtr >> 2]], + offset: HEAPU32[(vaPtr + 4 + 8) >> 2] * 4294967296 + HEAPU32[(vaPtr + 8) >> 2], + shaderLocation: HEAPU32[(vaPtr + 16) >> 2], + }; + } + function makeVertexAttributes(count, vaArrayPtr) { + var vas = []; + for (var i = 0; i < count; ++i) { + vas.push(makeVertexAttribute(vaArrayPtr + i * 24)); + } + return vas; + } + function makeVertexBuffer(vbPtr) { + if (!vbPtr) return undefined; + var stepModeInt = HEAPU32[(vbPtr + 8) >> 2]; + return stepModeInt === 2 + ? null + : { + arrayStride: HEAPU32[(vbPtr + 4) >> 2] * 4294967296 + HEAPU32[vbPtr >> 2], + stepMode: WebGPU.VertexStepMode[stepModeInt], + attributes: makeVertexAttributes( + HEAPU32[(vbPtr + 12) >> 2], + HEAPU32[(vbPtr + 16) >> 2], + ), + }; + } + function makeVertexBuffers(count, vbArrayPtr) { + if (!count) return undefined; + var vbs = []; + for (var i = 0; i < count; ++i) { + vbs.push(makeVertexBuffer(vbArrayPtr + i * 24)); + } + return vbs; + } + function makeVertexState(viPtr) { + if (!viPtr) return undefined; + assert(viPtr); + assert(HEAPU32[viPtr >> 2] === 0); + return { + module: WebGPU.mgrShaderModule.get(HEAPU32[(viPtr + 4) >> 2]), + entryPoint: UTF8ToString(HEAPU32[(viPtr + 8) >> 2]), + constants: WebGPU.makePipelineConstants( + HEAPU32[(viPtr + 12) >> 2], + HEAPU32[(viPtr + 16) >> 2], + ), + buffers: makeVertexBuffers(HEAPU32[(viPtr + 20) >> 2], HEAPU32[(viPtr + 24) >> 2]), + }; + } + function makeMultisampleState(msPtr) { + if (!msPtr) return undefined; + assert(msPtr); + assert(HEAPU32[msPtr >> 2] === 0); + return { + count: HEAPU32[(msPtr + 4) >> 2], + mask: HEAPU32[(msPtr + 8) >> 2], + alphaToCoverageEnabled: HEAP8[(msPtr + 12) >> 0] !== 0, + }; + } + function makeFragmentState(fsPtr) { + if (!fsPtr) return undefined; + assert(fsPtr); + assert(HEAPU32[fsPtr >> 2] === 0); + return { + module: WebGPU.mgrShaderModule.get(HEAPU32[(fsPtr + 4) >> 2]), + entryPoint: UTF8ToString(HEAPU32[(fsPtr + 8) >> 2]), + constants: WebGPU.makePipelineConstants( + HEAPU32[(fsPtr + 12) >> 2], + HEAPU32[(fsPtr + 16) >> 2], + ), + targets: makeColorStates(HEAPU32[(fsPtr + 20) >> 2], HEAPU32[(fsPtr + 24) >> 2]), + }; + } + var desc = { + label: undefined, + layout: WebGPU.mgrPipelineLayout.get(HEAPU32[(descriptor + 8) >> 2]), + vertex: makeVertexState(descriptor + 12), + primitive: makePrimitiveState(descriptor + 40), + depthStencil: makeDepthStencilState(HEAPU32[(descriptor + 60) >> 2]), + multisample: makeMultisampleState(descriptor + 64), + fragment: makeFragmentState(HEAPU32[(descriptor + 80) >> 2]), + }; + var labelPtr = HEAPU32[(descriptor + 4) >> 2]; + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + var device = WebGPU.mgrDevice.get(deviceId); + return WebGPU.mgrRenderPipeline.create(device["createRenderPipeline"](desc)); + } + function _wgpuDeviceCreateSampler(deviceId, descriptor) { + assert(descriptor); + assert(HEAPU32[descriptor >> 2] === 0); + var desc = { + label: undefined, + addressModeU: WebGPU.AddressMode[HEAPU32[(descriptor + 8) >> 2]], + addressModeV: WebGPU.AddressMode[HEAPU32[(descriptor + 12) >> 2]], + addressModeW: WebGPU.AddressMode[HEAPU32[(descriptor + 16) >> 2]], + magFilter: WebGPU.FilterMode[HEAPU32[(descriptor + 20) >> 2]], + minFilter: WebGPU.FilterMode[HEAPU32[(descriptor + 24) >> 2]], + mipmapFilter: WebGPU.FilterMode[HEAPU32[(descriptor + 28) >> 2]], + lodMinClamp: HEAPF32[(descriptor + 32) >> 2], + lodMaxClamp: HEAPF32[(descriptor + 36) >> 2], + compare: WebGPU.CompareFunction[HEAPU32[(descriptor + 40) >> 2]], + }; + var labelPtr = HEAPU32[(descriptor + 4) >> 2]; + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + var device = WebGPU.mgrDevice.get(deviceId); + return WebGPU.mgrSampler.create(device["createSampler"](desc)); + } + function _wgpuDeviceCreateShaderModule(deviceId, descriptor) { + assert(descriptor); + var nextInChainPtr = HEAPU32[descriptor >> 2]; + assert(nextInChainPtr !== 0); + var sType = HEAPU32[(nextInChainPtr + 4) >> 2]; + var desc = { label: undefined, code: "" }; + var labelPtr = HEAPU32[(descriptor + 4) >> 2]; + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + switch (sType) { + case 5: { + var count = HEAPU32[(nextInChainPtr + 8) >> 2]; + var start = HEAPU32[(nextInChainPtr + 12) >> 2]; + desc["code"] = HEAPU32.subarray(start >> 2, (start >> 2) + count); + break; + } + case 6: { + var sourcePtr = HEAPU32[(nextInChainPtr + 8) >> 2]; + if (sourcePtr) { + desc["code"] = UTF8ToString(sourcePtr); + } + break; + } + default: + abort("unrecognized ShaderModule sType"); + } + var device = WebGPU.mgrDevice.get(deviceId); + return WebGPU.mgrShaderModule.create(device["createShaderModule"](desc)); + } + function _wgpuDeviceCreateTexture(deviceId, descriptor) { + assert(descriptor); + assert(HEAPU32[descriptor >> 2] === 0); + var desc = { + label: undefined, + size: WebGPU.makeExtent3D(descriptor + 16), + mipLevelCount: HEAPU32[(descriptor + 32) >> 2], + sampleCount: HEAPU32[(descriptor + 36) >> 2], + dimension: WebGPU.TextureDimension[HEAPU32[(descriptor + 12) >> 2]], + format: WebGPU.TextureFormat[HEAPU32[(descriptor + 28) >> 2]], + usage: HEAPU32[(descriptor + 8) >> 2], + }; + var labelPtr = HEAPU32[(descriptor + 4) >> 2]; + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + var viewFormatCount = HEAPU32[(descriptor + 40) >> 2]; + if (viewFormatCount) { + var viewFormatsPtr = HEAPU32[(descriptor + 44) >> 2]; + desc["viewFormats"] = Array.from( + HEAP32.subarray(viewFormatsPtr >> 2, (viewFormatsPtr >> 2) + viewFormatCount), + function (format) { + return WebGPU.TextureFormat[format]; + }, + ); + } + var device = WebGPU.mgrDevice.get(deviceId); + return WebGPU.mgrTexture.create(device["createTexture"](desc)); + } + function _wgpuDeviceGetQueue(deviceId) { + var queueId = WebGPU.mgrDevice.objects[deviceId].queueId; + assert(queueId, "wgpuDeviceGetQueue: queue was missing or null"); + WebGPU.mgrQueue.reference(queueId); + return queueId; + } + function _wgpuDeviceReference(id) { + WebGPU.mgrDevice.reference(id); + } + function _wgpuDeviceRelease(id) { + WebGPU.mgrDevice.release(id); + } + function _wgpuPipelineLayoutRelease(id) { + WebGPU.mgrPipelineLayout.release(id); + } + function _wgpuQuerySetRelease(id) { + WebGPU.mgrQuerySet.release(id); + } + function _wgpuQueueRelease(id) { + WebGPU.mgrQueue.release(id); + } + function _wgpuQueueSubmit(queueId, commandCount, commands) { + assert(commands % 4 === 0); + var queue = WebGPU.mgrQueue.get(queueId); + var cmds = Array.from( + HEAP32.subarray(commands >> 2, (commands >> 2) + commandCount), + function (id) { + return WebGPU.mgrCommandBuffer.get(id); + }, + ); + queue["submit"](cmds); + } + function _wgpuQueueWriteBuffer( + queueId, + bufferId, + bufferOffset_low, + bufferOffset_high, + data, + size, + ) { + var queue = WebGPU.mgrQueue.get(queueId); + var buffer = WebGPU.mgrBuffer.get(bufferId); + var bufferOffset = + (assert(bufferOffset_high < 2097152), bufferOffset_high * 4294967296 + bufferOffset_low); + var subarray = HEAPU8.subarray(data, data + size); + queue["writeBuffer"](buffer, bufferOffset, subarray, 0, size); + } + function _wgpuRenderPassEncoderDraw( + passId, + vertexCount, + instanceCount, + firstVertex, + firstInstance, + ) { + var pass = WebGPU.mgrRenderPassEncoder.get(passId); + pass["draw"](vertexCount, instanceCount, firstVertex, firstInstance); + } + function _wgpuRenderPassEncoderEnd(passId) { + var pass = WebGPU.mgrRenderPassEncoder.get(passId); + pass["end"](); + } + function _wgpuRenderPassEncoderRelease(id) { + WebGPU.mgrRenderPassEncoder.release(id); + } + function _wgpuRenderPassEncoderSetBindGroup( + passId, + groupIndex, + groupId, + dynamicOffsetCount, + dynamicOffsetsPtr, + ) { + var pass = WebGPU.mgrRenderPassEncoder.get(passId); + var group = WebGPU.mgrBindGroup.get(groupId); + if (dynamicOffsetCount == 0) { + pass["setBindGroup"](groupIndex, group); + } else { + var offsets = []; + for (var i = 0; i < dynamicOffsetCount; i++, dynamicOffsetsPtr += 4) { + offsets.push(HEAPU32[dynamicOffsetsPtr >> 2]); + } + pass["setBindGroup"](groupIndex, group, offsets); + } + } + function _wgpuRenderPassEncoderSetPipeline(passId, pipelineId) { + var pass = WebGPU.mgrRenderPassEncoder.get(passId); + var pipeline = WebGPU.mgrRenderPipeline.get(pipelineId); + pass["setPipeline"](pipeline); + } + function _wgpuRenderPipelineGetBindGroupLayout(pipelineId, groupIndex) { + var pipeline = WebGPU.mgrRenderPipeline.get(pipelineId); + return WebGPU.mgrBindGroupLayout.create(pipeline["getBindGroupLayout"](groupIndex)); + } + function _wgpuRenderPipelineRelease(id) { + WebGPU.mgrRenderPipeline.release(id); + } + function _wgpuSamplerReference(id) { + WebGPU.mgrSampler.reference(id); + } + function _wgpuSamplerRelease(id) { + WebGPU.mgrSampler.release(id); + } + function _wgpuShaderModuleReference(id) { + WebGPU.mgrShaderModule.reference(id); + } + function _wgpuShaderModuleRelease(id) { + WebGPU.mgrShaderModule.release(id); + } + function _wgpuTextureCreateView(textureId, descriptor) { + var desc; + if (descriptor) { + assert(descriptor); + assert(HEAPU32[descriptor >> 2] === 0); + var mipLevelCount = HEAPU32[(descriptor + 20) >> 2]; + var arrayLayerCount = HEAPU32[(descriptor + 28) >> 2]; + desc = { + format: WebGPU.TextureFormat[HEAPU32[(descriptor + 8) >> 2]], + dimension: WebGPU.TextureViewDimension[HEAPU32[(descriptor + 12) >> 2]], + baseMipLevel: HEAPU32[(descriptor + 16) >> 2], + mipLevelCount: mipLevelCount === 4294967295 ? undefined : mipLevelCount, + baseArrayLayer: HEAPU32[(descriptor + 24) >> 2], + arrayLayerCount: arrayLayerCount === 4294967295 ? undefined : arrayLayerCount, + aspect: WebGPU.TextureAspect[HEAPU32[(descriptor + 32) >> 2]], + }; + var labelPtr = HEAPU32[(descriptor + 4) >> 2]; + if (labelPtr) desc["label"] = UTF8ToString(labelPtr); + } + var texture = WebGPU.mgrTexture.get(textureId); + return WebGPU.mgrTextureView.create(texture["createView"](desc)); + } + function _wgpuTextureDestroy(textureId) { + WebGPU.mgrTexture.get(textureId)["destroy"](); + } + function _wgpuTextureReference(id) { + WebGPU.mgrTexture.reference(id); + } + function _wgpuTextureRelease(id) { + WebGPU.mgrTexture.release(id); + } + function _wgpuTextureViewReference(id) { + WebGPU.mgrTextureView.reference(id); + } + function _wgpuTextureViewRelease(id) { + WebGPU.mgrTextureView.release(id); + } + Module["requestFullscreen"] = function Module_requestFullscreen(lockPointer, resizeCanvas) { + Browser.requestFullscreen(lockPointer, resizeCanvas); + }; + Module["requestFullScreen"] = function Module_requestFullScreen() { + Browser.requestFullScreen(); + }; + Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { + Browser.requestAnimationFrame(func); + }; + Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { + Browser.setCanvasSize(width, height, noUpdates); + }; + Module["pauseMainLoop"] = function Module_pauseMainLoop() { + Browser.mainLoop.pause(); + }; + Module["resumeMainLoop"] = function Module_resumeMainLoop() { + Browser.mainLoop.resume(); + }; + Module["getUserMedia"] = function Module_getUserMedia() { + Browser.getUserMedia(); + }; + Module["createContext"] = function Module_createContext( + canvas, + useWebGL, + setInModule, + webGLContextAttributes, + ) { + return Browser.createContext(canvas, useWebGL, setInModule, webGLContextAttributes); + }; + var preloadedImages = {}; + var preloadedAudios = {}; + var FSNode = function (parent, name, mode, rdev) { + if (!parent) { + parent = this; + } + this.parent = parent; + this.mount = parent.mount; + this.mounted = null; + this.id = FS.nextInode++; + this.name = name; + this.mode = mode; + this.node_ops = {}; + this.stream_ops = {}; + this.rdev = rdev; + }; + var readMode = 292 | 73; + var writeMode = 146; + Object.defineProperties(FSNode.prototype, { + read: { + get: function () { + return (this.mode & readMode) === readMode; + }, + set: function (val) { + val ? (this.mode |= readMode) : (this.mode &= ~readMode); + }, + }, + write: { + get: function () { + return (this.mode & writeMode) === writeMode; + }, + set: function (val) { + val ? (this.mode |= writeMode) : (this.mode &= ~writeMode); + }, + }, + isFolder: { + get: function () { + return FS.isDir(this.mode); + }, + }, + isDevice: { + get: function () { + return FS.isChrdev(this.mode); + }, + }, + }); + FS.FSNode = FSNode; + FS.staticInit(); + Module["FS_createPath"] = FS.createPath; + Module["FS_createDataFile"] = FS.createDataFile; + Module["FS_createPreloadedFile"] = FS.createPreloadedFile; + Module["FS_unlink"] = FS.unlink; + Module["FS_createLazyFile"] = FS.createLazyFile; + Module["FS_createDevice"] = FS.createDevice; + ERRNO_CODES = { + EPERM: 63, + ENOENT: 44, + ESRCH: 71, + EINTR: 27, + EIO: 29, + ENXIO: 60, + E2BIG: 1, + ENOEXEC: 45, + EBADF: 8, + ECHILD: 12, + EAGAIN: 6, + EWOULDBLOCK: 6, + ENOMEM: 48, + EACCES: 2, + EFAULT: 21, + ENOTBLK: 105, + EBUSY: 10, + EEXIST: 20, + EXDEV: 75, + ENODEV: 43, + ENOTDIR: 54, + EISDIR: 31, + EINVAL: 28, + ENFILE: 41, + EMFILE: 33, + ENOTTY: 59, + ETXTBSY: 74, + EFBIG: 22, + ENOSPC: 51, + ESPIPE: 70, + EROFS: 69, + EMLINK: 34, + EPIPE: 64, + EDOM: 18, + ERANGE: 68, + ENOMSG: 49, + EIDRM: 24, + ECHRNG: 106, + EL2NSYNC: 156, + EL3HLT: 107, + EL3RST: 108, + ELNRNG: 109, + EUNATCH: 110, + ENOCSI: 111, + EL2HLT: 112, + EDEADLK: 16, + ENOLCK: 46, + EBADE: 113, + EBADR: 114, + EXFULL: 115, + ENOANO: 104, + EBADRQC: 103, + EBADSLT: 102, + EDEADLOCK: 16, + EBFONT: 101, + ENOSTR: 100, + ENODATA: 116, + ETIME: 117, + ENOSR: 118, + ENONET: 119, + ENOPKG: 120, + EREMOTE: 121, + ENOLINK: 47, + EADV: 122, + ESRMNT: 123, + ECOMM: 124, + EPROTO: 65, + EMULTIHOP: 36, + EDOTDOT: 125, + EBADMSG: 9, + ENOTUNIQ: 126, + EBADFD: 127, + EREMCHG: 128, + ELIBACC: 129, + ELIBBAD: 130, + ELIBSCN: 131, + ELIBMAX: 132, + ELIBEXEC: 133, + ENOSYS: 52, + ENOTEMPTY: 55, + ENAMETOOLONG: 37, + ELOOP: 32, + EOPNOTSUPP: 138, + EPFNOSUPPORT: 139, + ECONNRESET: 15, + ENOBUFS: 42, + EAFNOSUPPORT: 5, + EPROTOTYPE: 67, + ENOTSOCK: 57, + ENOPROTOOPT: 50, + ESHUTDOWN: 140, + ECONNREFUSED: 14, + EADDRINUSE: 3, + ECONNABORTED: 13, + ENETUNREACH: 40, + ENETDOWN: 38, + ETIMEDOUT: 73, + EHOSTDOWN: 142, + EHOSTUNREACH: 23, + EINPROGRESS: 26, + EALREADY: 7, + EDESTADDRREQ: 17, + EMSGSIZE: 35, + EPROTONOSUPPORT: 66, + ESOCKTNOSUPPORT: 137, + EADDRNOTAVAIL: 4, + ENETRESET: 39, + EISCONN: 30, + ENOTCONN: 53, + ETOOMANYREFS: 141, + EUSERS: 136, + EDQUOT: 19, + ESTALE: 72, + ENOTSUP: 138, + ENOMEDIUM: 148, + EILSEQ: 25, + EOVERFLOW: 61, + ECANCELED: 11, + ENOTRECOVERABLE: 56, + EOWNERDEAD: 62, + ESTRPIPE: 135, + }; + BindingError = Module["BindingError"] = extendError(Error, "BindingError"); + init_emval(); + PureVirtualError = Module["PureVirtualError"] = extendError(Error, "PureVirtualError"); + embind_init_charCodes(); + init_embind(); + InternalError = Module["InternalError"] = extendError(Error, "InternalError"); + init_ClassHandle(); + init_RegisteredPointer(); + UnboundTypeError = Module["UnboundTypeError"] = extendError(Error, "UnboundTypeError"); + var GLctx; + WebGPU.initManagers(); + for (var i = 0; i < 32; ++i) tempFixedLengthArray.push(new Array(i)); + var miniTempWebGLFloatBuffersStorage = new Float32Array(288); + for (var i = 0; i < 288; ++i) { + miniTempWebGLFloatBuffers[i] = miniTempWebGLFloatBuffersStorage.subarray(0, i + 1); + } + var __miniTempWebGLIntBuffersStorage = new Int32Array(288); + for (var i = 0; i < 288; ++i) { + __miniTempWebGLIntBuffers[i] = __miniTempWebGLIntBuffersStorage.subarray(0, i + 1); + } + var decodeBase64 = + typeof atob == "function" + ? atob + : function (input) { + var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var output = ""; + var chr1, chr2, chr3; + var enc1, enc2, enc3, enc4; + var i = 0; + input = input.replace(/[^A-Za-z0-9+/=]/g, ""); + do { + enc1 = keyStr.indexOf(input.charAt(i++)); + enc2 = keyStr.indexOf(input.charAt(i++)); + enc3 = keyStr.indexOf(input.charAt(i++)); + enc4 = keyStr.indexOf(input.charAt(i++)); + chr1 = (enc1 << 2) | (enc2 >> 4); + chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); + chr3 = ((enc3 & 3) << 6) | enc4; + output = output + String.fromCharCode(chr1); + if (enc3 !== 64) { + output = output + String.fromCharCode(chr2); + } + if (enc4 !== 64) { + output = output + String.fromCharCode(chr3); + } + } while (i < input.length); + return output; + }; + function intArrayFromBase64(s) { + if (typeof ENVIRONMENT_IS_NODE == "boolean" && ENVIRONMENT_IS_NODE) { + var buf = Buffer.from(s, "base64"); + return new Uint8Array(buf["buffer"], buf["byteOffset"], buf["byteLength"]); + } + try { + var decoded = decodeBase64(s); + var bytes = new Uint8Array(decoded.length); + for (var i = 0; i < decoded.length; ++i) { + bytes[i] = decoded.charCodeAt(i); + } + return bytes; + } catch (_) { + throw new Error("Converting base64 string to bytes failed."); + } + } + function checkIncomingModuleAPI() { + ignoredModuleProp("fetchSettings"); + } + var asmLibraryArg = { + HaveOffsetConverter: HaveOffsetConverter, + __assert_fail: ___assert_fail, + __cxa_allocate_exception: ___cxa_allocate_exception, + __cxa_throw: ___cxa_throw, + __syscall_dup: ___syscall_dup, + __syscall_fcntl64: ___syscall_fcntl64, + __syscall_fstat64: ___syscall_fstat64, + __syscall_ioctl: ___syscall_ioctl, + __syscall_lstat64: ___syscall_lstat64, + __syscall_newfstatat: ___syscall_newfstatat, + __syscall_openat: ___syscall_openat, + __syscall_stat64: ___syscall_stat64, + _dlinit: __dlinit, + _dlopen_js: __dlopen_js, + _dlsym_js: __dlsym_js, + _embind_create_inheriting_constructor: __embind_create_inheriting_constructor, + _embind_finalize_value_object: __embind_finalize_value_object, + _embind_register_bigint: __embind_register_bigint, + _embind_register_bool: __embind_register_bool, + _embind_register_class: __embind_register_class, + _embind_register_class_class_function: __embind_register_class_class_function, + _embind_register_class_constructor: __embind_register_class_constructor, + _embind_register_class_function: __embind_register_class_function, + _embind_register_class_property: __embind_register_class_property, + _embind_register_emval: __embind_register_emval, + _embind_register_float: __embind_register_float, + _embind_register_function: __embind_register_function, + _embind_register_integer: __embind_register_integer, + _embind_register_memory_view: __embind_register_memory_view, + _embind_register_std_string: __embind_register_std_string, + _embind_register_std_wstring: __embind_register_std_wstring, + _embind_register_value_object: __embind_register_value_object, + _embind_register_value_object_field: __embind_register_value_object_field, + _embind_register_void: __embind_register_void, + _emscripten_get_now_is_monotonic: __emscripten_get_now_is_monotonic, + _emval_as: __emval_as, + _emval_call_void_method: __emval_call_void_method, + _emval_decref: __emval_decref, + _emval_get_global: __emval_get_global, + _emval_get_method_caller: __emval_get_method_caller, + _emval_get_property: __emval_get_property, + _emval_incref: __emval_incref, + _emval_instanceof: __emval_instanceof, + _emval_new_cstring: __emval_new_cstring, + _emval_run_destructors: __emval_run_destructors, + _emval_set_property: __emval_set_property, + _emval_take_value: __emval_take_value, + _emval_typeof: __emval_typeof, + _gmtime_js: __gmtime_js, + _localtime_js: __localtime_js, + _mktime_js: __mktime_js, + _mmap_js: __mmap_js, + _munmap_js: __munmap_js, + _tzset_js: __tzset_js, + abort: _abort, + emscripten_asm_const_int: _emscripten_asm_const_int, + emscripten_date_now: _emscripten_date_now, + emscripten_get_heap_max: _emscripten_get_heap_max, + emscripten_get_now: _emscripten_get_now, + emscripten_memcpy_big: _emscripten_memcpy_big, + emscripten_pc_get_function: _emscripten_pc_get_function, + emscripten_resize_heap: _emscripten_resize_heap, + emscripten_stack_snapshot: _emscripten_stack_snapshot, + emscripten_stack_unwind_buffer: _emscripten_stack_unwind_buffer, + emscripten_webgl_create_context: _emscripten_webgl_create_context, + emscripten_webgl_destroy_context: _emscripten_webgl_destroy_context, + emscripten_webgl_get_context_attributes: _emscripten_webgl_get_context_attributes, + emscripten_webgl_get_current_context: _emscripten_webgl_get_current_context, + emscripten_webgl_init_context_attributes: _emscripten_webgl_init_context_attributes, + emscripten_webgl_make_context_current: _emscripten_webgl_make_context_current, + emscripten_webgpu_export_bind_group_layout: _emscripten_webgpu_export_bind_group_layout, + emscripten_webgpu_export_device: _emscripten_webgpu_export_device, + emscripten_webgpu_export_sampler: _emscripten_webgpu_export_sampler, + emscripten_webgpu_export_texture: _emscripten_webgpu_export_texture, + emscripten_webgpu_get_device: _emscripten_webgpu_get_device, + emscripten_webgpu_import_bind_group: _emscripten_webgpu_import_bind_group, + emscripten_webgpu_import_texture: _emscripten_webgpu_import_texture, + emscripten_webgpu_release_js_handle: _emscripten_webgpu_release_js_handle, + environ_get: _environ_get, + environ_sizes_get: _environ_sizes_get, + exit: _exit, + fd_close: _fd_close, + fd_read: _fd_read, + fd_seek: _fd_seek, + fd_write: _fd_write, + getentropy: _getentropy, + glActiveTexture: _glActiveTexture, + glAttachShader: _glAttachShader, + glBindAttribLocation: _glBindAttribLocation, + glBindBuffer: _glBindBuffer, + glBindBufferBase: _glBindBufferBase, + glBindFramebuffer: _glBindFramebuffer, + glBindTexture: _glBindTexture, + glBindVertexArray: _glBindVertexArray, + glBufferData: _glBufferData, + glClientWaitSync: _glClientWaitSync, + glCompileShader: _glCompileShader, + glCreateProgram: _glCreateProgram, + glCreateShader: _glCreateShader, + glDeleteBuffers: _glDeleteBuffers, + glDeleteFramebuffers: _glDeleteFramebuffers, + glDeleteProgram: _glDeleteProgram, + glDeleteShader: _glDeleteShader, + glDeleteSync: _glDeleteSync, + glDeleteTextures: _glDeleteTextures, + glDeleteVertexArrays: _glDeleteVertexArrays, + glDisable: _glDisable, + glDisableVertexAttribArray: _glDisableVertexAttribArray, + glDrawArrays: _glDrawArrays, + glDrawBuffers: _glDrawBuffers, + glEnableVertexAttribArray: _glEnableVertexAttribArray, + glFenceSync: _glFenceSync, + glFinish: _glFinish, + glFlush: _glFlush, + glFramebufferTexture2D: _glFramebufferTexture2D, + glFramebufferTextureLayer: _glFramebufferTextureLayer, + glGenBuffers: _glGenBuffers, + glGenFramebuffers: _glGenFramebuffers, + glGenTextures: _glGenTextures, + glGenVertexArrays: _glGenVertexArrays, + glGetAttribLocation: _glGetAttribLocation, + glGetError: _glGetError, + glGetIntegerv: _glGetIntegerv, + glGetProgramiv: _glGetProgramiv, + glGetShaderInfoLog: _glGetShaderInfoLog, + glGetShaderiv: _glGetShaderiv, + glGetString: _glGetString, + glGetUniformBlockIndex: _glGetUniformBlockIndex, + glGetUniformLocation: _glGetUniformLocation, + glLinkProgram: _glLinkProgram, + glPixelStorei: _glPixelStorei, + glReadPixels: _glReadPixels, + glShaderSource: _glShaderSource, + glTexImage2D: _glTexImage2D, + glTexParameterfv: _glTexParameterfv, + glTexParameteri: _glTexParameteri, + glTexStorage2D: _glTexStorage2D, + glTexStorage3D: _glTexStorage3D, + glTexSubImage2D: _glTexSubImage2D, + glTexSubImage3D: _glTexSubImage3D, + glUniform1f: _glUniform1f, + glUniform1i: _glUniform1i, + glUniform2fv: _glUniform2fv, + glUniform4fv: _glUniform4fv, + glUniform4iv: _glUniform4iv, + glUniformBlockBinding: _glUniformBlockBinding, + glUniformMatrix4fv: _glUniformMatrix4fv, + glUseProgram: _glUseProgram, + glVertexAttribPointer: _glVertexAttribPointer, + glViewport: _glViewport, + mediapipe_create_utility_canvas2d: mediapipe_create_utility_canvas2d, + mediapipe_find_canvas_event_target: _mediapipe_find_canvas_event_target, + mediapipe_import_external_texture: mediapipe_import_external_texture, + mediapipe_webgl_tex_image_drawable: _mediapipe_webgl_tex_image_drawable, + proc_exit: _proc_exit, + strftime: _strftime, + strftime_l: _strftime_l, + wgpuBindGroupLayoutRelease: _wgpuBindGroupLayoutRelease, + wgpuBindGroupRelease: _wgpuBindGroupRelease, + wgpuBufferGetMappedRange: _wgpuBufferGetMappedRange, + wgpuBufferReference: _wgpuBufferReference, + wgpuBufferRelease: _wgpuBufferRelease, + wgpuBufferUnmap: _wgpuBufferUnmap, + wgpuCommandBufferRelease: _wgpuCommandBufferRelease, + wgpuCommandEncoderBeginComputePass: _wgpuCommandEncoderBeginComputePass, + wgpuCommandEncoderBeginRenderPass: _wgpuCommandEncoderBeginRenderPass, + wgpuCommandEncoderCopyBufferToTexture: _wgpuCommandEncoderCopyBufferToTexture, + wgpuCommandEncoderCopyTextureToTexture: _wgpuCommandEncoderCopyTextureToTexture, + wgpuCommandEncoderFinish: _wgpuCommandEncoderFinish, + wgpuCommandEncoderRelease: _wgpuCommandEncoderRelease, + wgpuComputePassEncoderDispatchWorkgroups: _wgpuComputePassEncoderDispatchWorkgroups, + wgpuComputePassEncoderEnd: _wgpuComputePassEncoderEnd, + wgpuComputePassEncoderRelease: _wgpuComputePassEncoderRelease, + wgpuComputePassEncoderSetBindGroup: _wgpuComputePassEncoderSetBindGroup, + wgpuComputePassEncoderSetPipeline: _wgpuComputePassEncoderSetPipeline, + wgpuComputePipelineGetBindGroupLayout: _wgpuComputePipelineGetBindGroupLayout, + wgpuComputePipelineRelease: _wgpuComputePipelineRelease, + wgpuDeviceCreateBindGroup: _wgpuDeviceCreateBindGroup, + wgpuDeviceCreateBuffer: _wgpuDeviceCreateBuffer, + wgpuDeviceCreateCommandEncoder: _wgpuDeviceCreateCommandEncoder, + wgpuDeviceCreateComputePipeline: _wgpuDeviceCreateComputePipeline, + wgpuDeviceCreateRenderPipeline: _wgpuDeviceCreateRenderPipeline, + wgpuDeviceCreateSampler: _wgpuDeviceCreateSampler, + wgpuDeviceCreateShaderModule: _wgpuDeviceCreateShaderModule, + wgpuDeviceCreateTexture: _wgpuDeviceCreateTexture, + wgpuDeviceGetQueue: _wgpuDeviceGetQueue, + wgpuDeviceReference: _wgpuDeviceReference, + wgpuDeviceRelease: _wgpuDeviceRelease, + wgpuPipelineLayoutRelease: _wgpuPipelineLayoutRelease, + wgpuQuerySetRelease: _wgpuQuerySetRelease, + wgpuQueueRelease: _wgpuQueueRelease, + wgpuQueueSubmit: _wgpuQueueSubmit, + wgpuQueueWriteBuffer: _wgpuQueueWriteBuffer, + wgpuRenderPassEncoderDraw: _wgpuRenderPassEncoderDraw, + wgpuRenderPassEncoderEnd: _wgpuRenderPassEncoderEnd, + wgpuRenderPassEncoderRelease: _wgpuRenderPassEncoderRelease, + wgpuRenderPassEncoderSetBindGroup: _wgpuRenderPassEncoderSetBindGroup, + wgpuRenderPassEncoderSetPipeline: _wgpuRenderPassEncoderSetPipeline, + wgpuRenderPipelineGetBindGroupLayout: _wgpuRenderPipelineGetBindGroupLayout, + wgpuRenderPipelineRelease: _wgpuRenderPipelineRelease, + wgpuSamplerReference: _wgpuSamplerReference, + wgpuSamplerRelease: _wgpuSamplerRelease, + wgpuShaderModuleReference: _wgpuShaderModuleReference, + wgpuShaderModuleRelease: _wgpuShaderModuleRelease, + wgpuTextureCreateView: _wgpuTextureCreateView, + wgpuTextureDestroy: _wgpuTextureDestroy, + wgpuTextureReference: _wgpuTextureReference, + wgpuTextureRelease: _wgpuTextureRelease, + wgpuTextureViewReference: _wgpuTextureViewReference, + wgpuTextureViewRelease: _wgpuTextureViewRelease, + }; + var asm = createWasm(); + var ___wasm_call_ctors = (Module["___wasm_call_ctors"] = + createExportWrapper("__wasm_call_ctors")); + var _malloc = (Module["_malloc"] = createExportWrapper("malloc")); + var _free = (Module["_free"] = createExportWrapper("free")); + var ___errno_location = (Module["___errno_location"] = createExportWrapper("__errno_location")); + var _fflush = (Module["_fflush"] = createExportWrapper("fflush")); + var ___getTypeName = (Module["___getTypeName"] = createExportWrapper("__getTypeName")); + var __embind_initialize_bindings = (Module["__embind_initialize_bindings"] = + createExportWrapper("_embind_initialize_bindings")); + var ___dl_seterr = (Module["___dl_seterr"] = createExportWrapper("__dl_seterr")); + var _emscripten_builtin_memalign = (Module["_emscripten_builtin_memalign"] = + createExportWrapper("emscripten_builtin_memalign")); + var _emscripten_stack_init = (Module["_emscripten_stack_init"] = function () { + return (_emscripten_stack_init = Module["_emscripten_stack_init"] = + Module["asm"]["emscripten_stack_init"]).apply(null, arguments); + }); + var _emscripten_stack_get_free = (Module["_emscripten_stack_get_free"] = function () { + return (_emscripten_stack_get_free = Module["_emscripten_stack_get_free"] = + Module["asm"]["emscripten_stack_get_free"]).apply(null, arguments); + }); + var _emscripten_stack_get_base = (Module["_emscripten_stack_get_base"] = function () { + return (_emscripten_stack_get_base = Module["_emscripten_stack_get_base"] = + Module["asm"]["emscripten_stack_get_base"]).apply(null, arguments); + }); + var _emscripten_stack_get_end = (Module["_emscripten_stack_get_end"] = function () { + return (_emscripten_stack_get_end = Module["_emscripten_stack_get_end"] = + Module["asm"]["emscripten_stack_get_end"]).apply(null, arguments); + }); + var stackSave = (Module["stackSave"] = createExportWrapper("stackSave")); + var stackRestore = (Module["stackRestore"] = createExportWrapper("stackRestore")); + var stackAlloc = (Module["stackAlloc"] = createExportWrapper("stackAlloc")); + var _emscripten_stack_get_current = (Module["_emscripten_stack_get_current"] = function () { + return (_emscripten_stack_get_current = Module["_emscripten_stack_get_current"] = + Module["asm"]["emscripten_stack_get_current"]).apply(null, arguments); + }); + var ___cxa_is_pointer_type = (Module["___cxa_is_pointer_type"] = + createExportWrapper("__cxa_is_pointer_type")); + var dynCall_jii = (Module["dynCall_jii"] = createExportWrapper("dynCall_jii")); + var dynCall_iiiijij = (Module["dynCall_iiiijij"] = createExportWrapper("dynCall_iiiijij")); + var dynCall_ji = (Module["dynCall_ji"] = createExportWrapper("dynCall_ji")); + var dynCall_viji = (Module["dynCall_viji"] = createExportWrapper("dynCall_viji")); + var dynCall_jjj = (Module["dynCall_jjj"] = createExportWrapper("dynCall_jjj")); + var dynCall_jiii = (Module["dynCall_jiii"] = createExportWrapper("dynCall_jiii")); + var dynCall_iiiijj = (Module["dynCall_iiiijj"] = createExportWrapper("dynCall_iiiijj")); + var dynCall_viijj = (Module["dynCall_viijj"] = createExportWrapper("dynCall_viijj")); + var dynCall_viiijjj = (Module["dynCall_viiijjj"] = createExportWrapper("dynCall_viiijjj")); + var dynCall_vij = (Module["dynCall_vij"] = createExportWrapper("dynCall_vij")); + var dynCall_viijii = (Module["dynCall_viijii"] = createExportWrapper("dynCall_viijii")); + var dynCall_vijjj = (Module["dynCall_vijjj"] = createExportWrapper("dynCall_vijjj")); + var dynCall_vj = (Module["dynCall_vj"] = createExportWrapper("dynCall_vj")); + var dynCall_viij = (Module["dynCall_viij"] = createExportWrapper("dynCall_viij")); + var dynCall_viiiiij = (Module["dynCall_viiiiij"] = createExportWrapper("dynCall_viiiiij")); + var dynCall_iijjiiii = (Module["dynCall_iijjiiii"] = createExportWrapper("dynCall_iijjiiii")); + var dynCall_jiji = (Module["dynCall_jiji"] = createExportWrapper("dynCall_jiji")); + var dynCall_iiiiij = (Module["dynCall_iiiiij"] = createExportWrapper("dynCall_iiiiij")); + var dynCall_iiiiijj = (Module["dynCall_iiiiijj"] = createExportWrapper("dynCall_iiiiijj")); + var dynCall_iiiiiijj = (Module["dynCall_iiiiiijj"] = createExportWrapper("dynCall_iiiiiijj")); + var ___start_em_js = (Module["___start_em_js"] = 514739); + var ___stop_em_js = (Module["___stop_em_js"] = 515259); + Module["addRunDependency"] = addRunDependency; + Module["removeRunDependency"] = removeRunDependency; + Module["FS_createPath"] = FS.createPath; + Module["FS_createDataFile"] = FS.createDataFile; + Module["FS_createPreloadedFile"] = FS.createPreloadedFile; + Module["FS_createLazyFile"] = FS.createLazyFile; + Module["FS_createDevice"] = FS.createDevice; + Module["FS_unlink"] = FS.unlink; + Module["GL"] = GL; + var unexportedRuntimeSymbols = [ + "run", + "UTF8ArrayToString", + "UTF8ToString", + "stringToUTF8Array", + "stringToUTF8", + "lengthBytesUTF8", + "addOnPreRun", + "addOnInit", + "addOnPreMain", + "addOnExit", + "addOnPostRun", + "FS_createFolder", + "FS_createLink", + "getLEB", + "getFunctionTables", + "alignFunctionTables", + "registerFunctions", + "prettyPrint", + "getCompilerSetting", + "out", + "err", + "callMain", + "abort", + "keepRuntimeAlive", + "wasmMemory", + "stackAlloc", + "stackSave", + "stackRestore", + "getTempRet0", + "setTempRet0", + "writeStackCookie", + "checkStackCookie", + "ptrToString", + "zeroMemory", + "stringToNewUTF8", + "exitJS", + "getHeapMax", + "emscripten_realloc_buffer", + "ENV", + "ERRNO_CODES", + "ERRNO_MESSAGES", + "setErrNo", + "inetPton4", + "inetNtop4", + "inetPton6", + "inetNtop6", + "readSockaddr", + "writeSockaddr", + "DNS", + "getHostByName", + "Protocols", + "Sockets", + "getRandomDevice", + "warnOnce", + "traverseStack", + "UNWIND_CACHE", + "convertPCtoSourceLocation", + "readEmAsmArgsArray", + "readEmAsmArgs", + "runEmAsmFunction", + "runMainThreadEmAsm", + "jstoi_q", + "jstoi_s", + "getExecutableName", + "listenOnce", + "autoResumeAudioContext", + "dynCallLegacy", + "getDynCaller", + "dynCall", + "handleException", + "runtimeKeepalivePush", + "runtimeKeepalivePop", + "callUserCallback", + "maybeExit", + "safeSetTimeout", + "asmjsMangle", + "asyncLoad", + "alignMemory", + "mmapAlloc", + "writeI53ToI64", + "writeI53ToI64Clamped", + "writeI53ToI64Signaling", + "writeI53ToU64Clamped", + "writeI53ToU64Signaling", + "readI53FromI64", + "readI53FromU64", + "convertI32PairToI53", + "convertI32PairToI53Checked", + "convertU32PairToI53", + "getCFunc", + "ccall", + "cwrap", + "uleb128Encode", + "sigToWasmTypes", + "generateFuncType", + "convertJsFunctionToWasm", + "freeTableIndexes", + "functionsInTableMap", + "getEmptyTableSlot", + "updateTableMap", + "addFunction", + "removeFunction", + "reallyNegative", + "unSign", + "strLen", + "reSign", + "formatString", + "setValue", + "getValue", + "PATH", + "PATH_FS", + "intArrayFromString", + "intArrayToString", + "AsciiToString", + "stringToAscii", + "UTF16Decoder", + "UTF16ToString", + "stringToUTF16", + "lengthBytesUTF16", + "UTF32ToString", + "stringToUTF32", + "lengthBytesUTF32", + "allocateUTF8", + "allocateUTF8OnStack", + "writeStringToMemory", + "writeArrayToMemory", + "writeAsciiToMemory", + "SYSCALLS", + "getSocketFromFD", + "getSocketAddress", + "JSEvents", + "registerKeyEventCallback", + "specialHTMLTargets", + "findEventTarget", + "findCanvasEventTarget", + "getBoundingClientRect", + "fillMouseEventData", + "registerMouseEventCallback", + "registerWheelEventCallback", + "registerUiEventCallback", + "registerFocusEventCallback", + "fillDeviceOrientationEventData", + "registerDeviceOrientationEventCallback", + "fillDeviceMotionEventData", + "registerDeviceMotionEventCallback", + "screenOrientation", + "fillOrientationChangeEventData", + "registerOrientationChangeEventCallback", + "fillFullscreenChangeEventData", + "registerFullscreenChangeEventCallback", + "JSEvents_requestFullscreen", + "JSEvents_resizeCanvasForFullscreen", + "registerRestoreOldStyle", + "hideEverythingExceptGivenElement", + "restoreHiddenElements", + "setLetterbox", + "currentFullscreenStrategy", + "restoreOldWindowedStyle", + "softFullscreenResizeWebGLRenderTarget", + "doRequestFullscreen", + "fillPointerlockChangeEventData", + "registerPointerlockChangeEventCallback", + "registerPointerlockErrorEventCallback", + "requestPointerLock", + "fillVisibilityChangeEventData", + "registerVisibilityChangeEventCallback", + "registerTouchEventCallback", + "fillGamepadEventData", + "registerGamepadEventCallback", + "registerBeforeUnloadEventCallback", + "fillBatteryEventData", + "battery", + "registerBatteryEventCallback", + "setCanvasElementSize", + "getCanvasElementSize", + "demangle", + "demangleAll", + "jsStackTrace", + "stackTrace", + "ExitStatus", + "getEnvStrings", + "checkWasiClock", + "doReadv", + "doWritev", + "dlopenMissingError", + "createDyncallWrapper", + "setImmediateWrapped", + "clearImmediateWrapped", + "polyfillSetImmediate", + "uncaughtExceptionCount", + "exceptionLast", + "exceptionCaught", + "ExceptionInfo", + "exception_addRef", + "exception_decRef", + "Browser", + "setMainLoop", + "wget", + "FS", + "MEMFS", + "TTY", + "PIPEFS", + "SOCKFS", + "_setNetworkCallback", + "tempFixedLengthArray", + "miniTempWebGLFloatBuffers", + "heapObjectForWebGLType", + "heapAccessShiftForWebGLHeap", + "emscriptenWebGLGet", + "computeUnpackAlignedImageSize", + "emscriptenWebGLGetTexPixelData", + "emscriptenWebGLGetUniform", + "webglGetUniformLocation", + "webglPrepareUniformLocationsBeforeFirstUse", + "webglGetLeftBracePos", + "emscriptenWebGLGetVertexAttrib", + "emscriptenWebGLGetBufferBinding", + "emscriptenWebGLValidateMapBufferTarget", + "writeGLArray", + "AL", + "SDL_unicode", + "SDL_ttfContext", + "SDL_audio", + "SDL", + "SDL_gfx", + "GLUT", + "EGL", + "GLFW_Window", + "GLFW", + "GLEW", + "IDBStore", + "runAndAbortIfError", + "emscriptenWebGLGetIndexed", + "WebGPU", + "JsValStore", + "ALLOC_NORMAL", + "ALLOC_STACK", + "allocate", + "InternalError", + "BindingError", + "UnboundTypeError", + "PureVirtualError", + "init_embind", + "throwInternalError", + "throwBindingError", + "throwUnboundTypeError", + "ensureOverloadTable", + "exposePublicSymbol", + "replacePublicSymbol", + "extendError", + "createNamedFunction", + "embindRepr", + "registeredInstances", + "getBasestPointer", + "registerInheritedInstance", + "unregisterInheritedInstance", + "getInheritedInstance", + "getInheritedInstanceCount", + "getLiveInheritedInstances", + "registeredTypes", + "awaitingDependencies", + "typeDependencies", + "registeredPointers", + "registerType", + "whenDependentTypesAreResolved", + "embind_charCodes", + "embind_init_charCodes", + "readLatin1String", + "getTypeName", + "heap32VectorToArray", + "requireRegisteredType", + "getShiftFromSize", + "integerReadValueFromPointer", + "enumReadValueFromPointer", + "floatReadValueFromPointer", + "simpleReadValueFromPointer", + "runDestructors", + "new_", + "craftInvokerFunction", + "embind__requireFunction", + "tupleRegistrations", + "structRegistrations", + "genericPointerToWireType", + "constNoSmartPtrRawPointerToWireType", + "nonConstNoSmartPtrRawPointerToWireType", + "init_RegisteredPointer", + "RegisteredPointer", + "RegisteredPointer_getPointee", + "RegisteredPointer_destructor", + "RegisteredPointer_deleteObject", + "RegisteredPointer_fromWireType", + "runDestructor", + "releaseClassHandle", + "finalizationRegistry", + "detachFinalizer_deps", + "detachFinalizer", + "attachFinalizer", + "makeClassHandle", + "init_ClassHandle", + "ClassHandle", + "ClassHandle_isAliasOf", + "throwInstanceAlreadyDeleted", + "ClassHandle_clone", + "ClassHandle_delete", + "deletionQueue", + "ClassHandle_isDeleted", + "ClassHandle_deleteLater", + "flushPendingDeletes", + "delayFunction", + "setDelayFunction", + "RegisteredClass", + "shallowCopyInternalPointer", + "downcastPointer", + "upcastPointer", + "validateThis", + "char_0", + "char_9", + "makeLegalFunctionName", + "emval_handle_array", + "emval_free_list", + "emval_symbols", + "init_emval", + "count_emval_handles", + "get_first_emval", + "getStringOrSymbol", + "Emval", + "emval_newers", + "craftEmvalAllocator", + "emval_get_global", + "emval_lookupTypes", + "emval_allocateDestructors", + "emval_methodCallers", + "emval_addMethodCaller", + "emval_registeredMethods", + ]; + unexportedRuntimeSymbols.forEach(unexportedRuntimeSymbol); + var missingLibrarySymbols = [ + "inetPton4", + "inetNtop4", + "inetPton6", + "inetNtop6", + "readSockaddr", + "writeSockaddr", + "getHostByName", + "traverseStack", + "convertPCtoSourceLocation", + "runMainThreadEmAsm", + "jstoi_s", + "listenOnce", + "autoResumeAudioContext", + "runtimeKeepalivePush", + "runtimeKeepalivePop", + "asmjsMangle", + "writeI53ToI64Clamped", + "writeI53ToI64Signaling", + "writeI53ToU64Clamped", + "writeI53ToU64Signaling", + "convertU32PairToI53", + "getCFunc", + "ccall", + "cwrap", + "uleb128Encode", + "sigToWasmTypes", + "generateFuncType", + "convertJsFunctionToWasm", + "getEmptyTableSlot", + "updateTableMap", + "addFunction", + "removeFunction", + "reallyNegative", + "unSign", + "strLen", + "reSign", + "formatString", + "intArrayToString", + "AsciiToString", + "stringToAscii", + "allocateUTF8OnStack", + "writeStringToMemory", + "getSocketFromFD", + "getSocketAddress", + "registerKeyEventCallback", + "getBoundingClientRect", + "fillMouseEventData", + "registerMouseEventCallback", + "registerWheelEventCallback", + "registerUiEventCallback", + "registerFocusEventCallback", + "fillDeviceOrientationEventData", + "registerDeviceOrientationEventCallback", + "fillDeviceMotionEventData", + "registerDeviceMotionEventCallback", + "screenOrientation", + "fillOrientationChangeEventData", + "registerOrientationChangeEventCallback", + "fillFullscreenChangeEventData", + "registerFullscreenChangeEventCallback", + "JSEvents_requestFullscreen", + "JSEvents_resizeCanvasForFullscreen", + "registerRestoreOldStyle", + "hideEverythingExceptGivenElement", + "restoreHiddenElements", + "setLetterbox", + "softFullscreenResizeWebGLRenderTarget", + "doRequestFullscreen", + "fillPointerlockChangeEventData", + "registerPointerlockChangeEventCallback", + "registerPointerlockErrorEventCallback", + "requestPointerLock", + "fillVisibilityChangeEventData", + "registerVisibilityChangeEventCallback", + "registerTouchEventCallback", + "fillGamepadEventData", + "registerGamepadEventCallback", + "registerBeforeUnloadEventCallback", + "fillBatteryEventData", + "battery", + "registerBatteryEventCallback", + "setCanvasElementSize", + "getCanvasElementSize", + "stackTrace", + "checkWasiClock", + "createDyncallWrapper", + "setImmediateWrapped", + "clearImmediateWrapped", + "polyfillSetImmediate", + "exception_addRef", + "exception_decRef", + "_setNetworkCallback", + "emscriptenWebGLGetUniform", + "emscriptenWebGLGetVertexAttrib", + "emscriptenWebGLGetBufferBinding", + "emscriptenWebGLValidateMapBufferTarget", + "writeGLArray", + "SDL_unicode", + "SDL_ttfContext", + "SDL_audio", + "GLFW_Window", + "runAndAbortIfError", + "emscriptenWebGLGetIndexed", + "ALLOC_NORMAL", + "ALLOC_STACK", + "allocate", + "enumReadValueFromPointer", + "craftEmvalAllocator", + ]; + missingLibrarySymbols.forEach(missingLibrarySymbol); + var calledRun; + dependenciesFulfilled = function runCaller() { + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; + }; + function stackCheckInit() { + _emscripten_stack_init(); + writeStackCookie(); + } + function run(args) { + args = args || arguments_; + if (runDependencies > 0) { + return; + } + stackCheckInit(); + preRun(); + if (runDependencies > 0) { + return; + } + function doRun() { + if (calledRun) return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) return; + initRuntime(); + readyPromiseResolve(Module); + if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); + assert( + !Module["_main"], + 'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]', + ); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function () { + setTimeout(function () { + Module["setStatus"](""); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } + checkStackCookie(); + } + function checkUnflushedContent() { + var oldOut = out; + var oldErr = err; + var has = false; + out = err = (x) => { + has = true; + }; + try { + _fflush(0); + ["stdout", "stderr"].forEach(function (name) { + var info = FS.analyzePath("/dev/" + name); + if (!info) return; + var stream = info.object; + var rdev = stream.rdev; + var tty = TTY.ttys[rdev]; + if (tty && tty.output && tty.output.length) { + has = true; + } + }); + } catch (e) {} + out = oldOut; + err = oldErr; + if (has) { + warnOnce( + "stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.", + ); + } + } + if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } + } + run(); + + return createMediapipeSolutionsWasm.ready; + }; +})(); +if (typeof exports === "object" && typeof module === "object") + module.exports = createMediapipeSolutionsWasm; +else if (typeof define === "function" && define["amd"]) + define([], function () { + return createMediapipeSolutionsWasm; + }); +else if (typeof exports === "object") + exports["createMediapipeSolutionsWasm"] = createMediapipeSolutionsWasm; diff --git a/public/mediapipe/selfie_segmentation/selfie_segmentation_solution_simd_wasm_bin.wasm b/public/mediapipe/selfie_segmentation/selfie_segmentation_solution_simd_wasm_bin.wasm new file mode 100644 index 0000000000000000000000000000000000000000..c5437a8f3a80818a75b82ea48fe6a381822a41c4 GIT binary patch literal 5694839 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%0A``7(Rw_oD2h2u= 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 z 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

O3kQgQ_mE^*wWE=+E2qeQVII`G_ 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

3710*0XwCsD*@<3^_+I;6-?4EwCbJr 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

TLHsmE|eMMe! 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
) : null} +
{ts("layout.webcamBackground")}
+
+ {CAMERA_BACKGROUND_MODES.map((mode) => { + const isActive = settings.webcamBackgroundMode === mode.value; + return ( + + ); + })} +
+ {settings.webcamBackgroundMode === "blur" ? ( +
+
+
+ {ts("layout.webcamBlurIntensity")} + {Math.round(settings.webcamBlurIntensity * 100)}% +
+ { + const next = Number(e.target.value) / 100; + setLive({ webcamBlurIntensity: next }); + }} + onMouseUp={() => void commit()} + onTouchEnd={() => void commit()} + onKeyUp={() => void commit()} + /> +
+
+ ) : null} + {settings.webcamBackgroundMode === "custom" ? ( +
+ void set({ webcamWallpaper: url })} + onLiveChange={(url) => setLive({ webcamWallpaper: url })} + onCommit={commit} + updateNativeBackground={false} + /> +
+ ) : null}
{ts("layout.webcamFraming")}
{ rerender(); expect(container.querySelector("video")).toBeTruthy(); }); + + it("renders background container when custom or blur background mode is active", () => { + const doc = makeDocument(); + doc.legacyEditor = { + wallpaper: "#000000", + shadowIntensity: 0, + borderRadius: 0, + padding: 0, + showBlur: false, + motionBlurAmount: 0, + webcamSizePreset: 25, + webcamMaskShape: "rectangle", + webcamLayoutPreset: "picture-in-picture", + webcamMirrored: false, + webcamReactiveZoom: false, + webcamBackgroundMode: "custom", + webcamWallpaper: "#ff0080", + webcamBlurIntensity: 0.5, + cursorShow: false, + cursorSize: 1, + cursorSmoothing: 0, + cursorMotionBlur: 0, + cursorClickBounce: 0, + cursorTheme: "default", + cursorClipToBounds: false, + }; + useProjectStore.setState({ + projectId: "proj_test", + document: doc, + revision: 1, + status: "ready", + error: null, + sourceDurationSec: 0, + currentTimeSec: 2, + dirty: false, + lastSavedAt: new Date(), + }); + + const { container } = render(); + const video = container.querySelector("video"); + expect(video).toBeTruthy(); + const bg = container.querySelector("[aria-hidden='true']"); + expect(bg).toBeTruthy(); + expect((bg as HTMLElement)?.style.backgroundColor).toBe("rgb(255, 0, 128)"); + }); }); diff --git a/src/components/ai-edition/WebcamOverlay.tsx b/src/components/ai-edition/WebcamOverlay.tsx index d194421af..6c7640c64 100644 --- a/src/components/ai-edition/WebcamOverlay.tsx +++ b/src/components/ai-edition/WebcamOverlay.tsx @@ -16,7 +16,11 @@ import { useEffect, useMemo, useRef, useState } from "react"; import { toFileUrl } from "@/components/video-editor/projectPersistence"; -import type { WebcamLayoutPreset, WebcamMaskShape } from "@/components/video-editor/types"; +import type { + WebcamBackgroundMode, + WebcamLayoutPreset, + WebcamMaskShape, +} from "@/components/video-editor/types"; import type { AxcutClip } from "@/lib/ai-edition/schema"; import { useProjectStore } from "@/lib/ai-edition/store/projectStore"; import { useEditorSettings } from "@/lib/ai-edition/store/useEditorSettings"; @@ -27,6 +31,8 @@ import { resolveCameraSyncTarget, } from "@/lib/ai-edition/timeline/playback-clock"; import { locateVirtualPosition } from "@/lib/ai-edition/timeline/virtual-preview"; +import { renderSegmentedWebcam } from "@/lib/ai-edition/webcamSegmentation"; +import { classifyWallpaper, resolveImageWallpaperUrl } from "@/lib/wallpaper"; import { getCssClipPath } from "@/lib/webcamMaskShapes"; import { setWebcamNativeSize } from "@/native/webcamSizeCache"; import styles from "./NewEditorShell.module.css"; @@ -156,60 +162,183 @@ export function WebcamOverlay(props: WebcamOverlayProps) { } }, [videoEl, props.isPlaying, props.clockRef]); + const canvasRef = useRef(null); + + // Neural segmentation render loop when background effect is active + useEffect(() => { + if (!videoEl || settings.webcamBackgroundMode === "none") return; + const canvas = canvasRef.current; + if (!canvas) return; + + let isDestroyed = false; + let isProcessing = false; + let raf = 0; + + const processFrame = async () => { + if (isDestroyed) return; + if (!isProcessing && videoEl.readyState >= 2 && !videoEl.paused) { + isProcessing = true; + try { + await renderSegmentedWebcam(videoEl, canvas, { + mode: settings.webcamBackgroundMode, + blurIntensity: settings.webcamBlurIntensity, + wallpaper: settings.webcamWallpaper, + }); + } catch (err) { + console.error("[WebcamOverlay] Segmentation error:", err); + } finally { + isProcessing = false; + } + } + raf = window.requestAnimationFrame(processFrame); + }; + + const renderOnce = () => { + if (videoEl.readyState >= 2) { + void renderSegmentedWebcam(videoEl, canvas, { + mode: settings.webcamBackgroundMode, + blurIntensity: settings.webcamBlurIntensity, + wallpaper: settings.webcamWallpaper, + }); + } + }; + + renderOnce(); + videoEl.addEventListener("seeked", renderOnce); + videoEl.addEventListener("loadeddata", renderOnce); + raf = window.requestAnimationFrame(processFrame); + + return () => { + isDestroyed = true; + window.cancelAnimationFrame(raf); + videoEl.removeEventListener("seeked", renderOnce); + videoEl.removeEventListener("loadeddata", renderOnce); + }; + }, [ + videoEl, + settings.webcamBackgroundMode, + settings.webcamBlurIntensity, + settings.webcamWallpaper, + ]); + if (!cameraTrack?.sourcePath || !cameraTrack.visible) { return null; } - const showError = hasError; - // ponytail: the layout computes the final borderRadius (preset fraction - // for dual-frame/overlay, 0 for stack, half-circle for circle PiP, etc.). - // Push it onto the
+ ); } + +function buildWebcamBackgroundStyle( + mode: WebcamBackgroundMode, + wallpaper: string, + borderRadius: number, + maskShape: WebcamMaskShape, +): React.CSSProperties | null { + if (mode === "none") return null; + const base: React.CSSProperties = { + position: "absolute", + inset: 0, + zIndex: 0, + borderRadius: `${borderRadius}px`, + clipPath: getCssClipPath(maskShape) ?? undefined, + overflow: "hidden", + }; + if (mode === "transparent") { + return { ...base, backgroundColor: "transparent" }; + } + if (mode === "blur") { + return { + ...base, + backdropFilter: "blur(12px)", + backgroundColor: "rgba(0, 0, 0, 0.2)", + }; + } + if (mode === "custom") { + const w = classifyWallpaper(wallpaper); + if (w.kind === "color") return { ...base, backgroundColor: w.value }; + if (w.kind === "gradient") + return { ...base, backgroundImage: w.value, backgroundSize: "cover" }; + const url = resolveImageWallpaperUrl(w.path); + if (!url) return base; + return { + ...base, + backgroundImage: `url(${url})`, + backgroundSize: "cover", + backgroundPosition: "center", + backgroundRepeat: "no-repeat", + }; + } + return null; +} diff --git a/src/components/video-editor/types.ts b/src/components/video-editor/types.ts index 10ab528e4..b00ca5367 100644 --- a/src/components/video-editor/types.ts +++ b/src/components/video-editor/types.ts @@ -22,6 +22,13 @@ export const DEFAULT_WEBCAM_MASK_SHAPE: WebcamMaskShape = "rectangle"; export const DEFAULT_WEBCAM_MIRRORED = false; +/** Background mode for the webcam feed (none, transparent AI cutout, blurred background, custom background). */ +export type WebcamBackgroundMode = "none" | "transparent" | "blur" | "custom"; + +export const DEFAULT_WEBCAM_BACKGROUND_MODE: WebcamBackgroundMode = "none"; + +export const DEFAULT_WEBCAM_BLUR_INTENSITY = 0.5; + /** When true, the picture-in-picture webcam scales inversely with zoom (shrinks as you zoom in). */ export const DEFAULT_WEBCAM_REACTIVE_ZOOM = true; diff --git a/src/i18n/locales/ar/settings.json b/src/i18n/locales/ar/settings.json index 2e025e9bd..5fc1ac58c 100644 --- a/src/i18n/locales/ar/settings.json +++ b/src/i18n/locales/ar/settings.json @@ -63,6 +63,14 @@ "circle": "دائرة", "square": "مربع", "rounded": "زوايا مستديرة" + }, + "webcamBackground": "خلفية الكاميرا", + "webcamBlurIntensity": "شدة الضبابية", + "bgModes": { + "none": "الأصلي", + "transparent": "تفريغ", + "blur": "تمويه", + "custom": "مخصص" } }, "effects": { diff --git a/src/i18n/locales/en/settings.json b/src/i18n/locales/en/settings.json index f6149858d..b291460d7 100644 --- a/src/i18n/locales/en/settings.json +++ b/src/i18n/locales/en/settings.json @@ -63,6 +63,14 @@ "circle": "Circle", "square": "Square", "rounded": "Rounded" + }, + "webcamBackground": "Camera Background", + "webcamBlurIntensity": "Blur Intensity", + "bgModes": { + "none": "Original", + "transparent": "Cutout", + "blur": "Blur", + "custom": "Custom" } }, "audio": { diff --git a/src/i18n/locales/es/settings.json b/src/i18n/locales/es/settings.json index 4628154f6..bb9ee27a2 100644 --- a/src/i18n/locales/es/settings.json +++ b/src/i18n/locales/es/settings.json @@ -63,6 +63,14 @@ "circle": "Círculo", "square": "Cuadrado", "rounded": "Redondeado" + }, + "webcamBackground": "Fondo de la cámara", + "webcamBlurIntensity": "Intensidad del desenfoque", + "bgModes": { + "none": "Original", + "transparent": "Recortado", + "blur": "Desenfocado", + "custom": "Personalizado" } }, "effects": { diff --git a/src/i18n/locales/fr/settings.json b/src/i18n/locales/fr/settings.json index e9521d9d2..23dd573f0 100644 --- a/src/i18n/locales/fr/settings.json +++ b/src/i18n/locales/fr/settings.json @@ -63,6 +63,14 @@ "circle": "Cercle", "square": "Carré", "rounded": "Arrondi" + }, + "webcamBackground": "Arrière-plan de la caméra", + "webcamBlurIntensity": "Intensité du flou", + "bgModes": { + "none": "Original", + "transparent": "Détouré", + "blur": "Flouté", + "custom": "Personnalisé" } }, "effects": { diff --git a/src/i18n/locales/it/settings.json b/src/i18n/locales/it/settings.json index ff13f7495..e10828765 100644 --- a/src/i18n/locales/it/settings.json +++ b/src/i18n/locales/it/settings.json @@ -63,6 +63,14 @@ "circle": "Cerchio", "square": "Quadrato", "rounded": "Arrotondato" + }, + "webcamBackground": "Sfondo della fotocamera", + "webcamBlurIntensity": "Intensità sfocatura", + "bgModes": { + "none": "Originale", + "transparent": "Scontornato", + "blur": "Sfocato", + "custom": "Personalizzato" } }, "effects": { diff --git a/src/i18n/locales/ja-JP/settings.json b/src/i18n/locales/ja-JP/settings.json index 30a9d0875..ead358d48 100644 --- a/src/i18n/locales/ja-JP/settings.json +++ b/src/i18n/locales/ja-JP/settings.json @@ -63,6 +63,14 @@ "circle": "円", "square": "正方形", "rounded": "角丸" + }, + "webcamBackground": "カメラ背景", + "webcamBlurIntensity": "ぼかしの強さ", + "bgModes": { + "none": "オリジナル", + "transparent": "切り抜き", + "blur": "ぼかし", + "custom": "カスタム" } }, "effects": { diff --git a/src/i18n/locales/ko-KR/settings.json b/src/i18n/locales/ko-KR/settings.json index 676fe6959..631189192 100644 --- a/src/i18n/locales/ko-KR/settings.json +++ b/src/i18n/locales/ko-KR/settings.json @@ -63,6 +63,14 @@ "circle": "원형", "square": "정사각형", "rounded": "둥근 모서리" + }, + "webcamBackground": "카메라 배경", + "webcamBlurIntensity": "블러 강도", + "bgModes": { + "none": "원본", + "transparent": "누끼", + "blur": "블러", + "custom": "사용자 지정" } }, "effects": { diff --git a/src/i18n/locales/pt-BR/settings.json b/src/i18n/locales/pt-BR/settings.json index b6d4a78c4..de22724be 100644 --- a/src/i18n/locales/pt-BR/settings.json +++ b/src/i18n/locales/pt-BR/settings.json @@ -63,6 +63,14 @@ "circle": "Círculo", "square": "Quadrado", "rounded": "Arredondado" + }, + "webcamBackground": "Plano de fundo da câmera", + "webcamBlurIntensity": "Intensidade do desfoque", + "bgModes": { + "none": "Original", + "transparent": "Recorte", + "blur": "Desfocado", + "custom": "Personalizado" } }, "effects": { diff --git a/src/i18n/locales/ru/settings.json b/src/i18n/locales/ru/settings.json index d9c06b71c..ca193c6d8 100644 --- a/src/i18n/locales/ru/settings.json +++ b/src/i18n/locales/ru/settings.json @@ -63,6 +63,14 @@ "circle": "Круг", "square": "Квадрат", "rounded": "Скруглённый" + }, + "webcamBackground": "Фон камеры", + "webcamBlurIntensity": "Интенсивность размытия", + "bgModes": { + "none": "Оригинал", + "transparent": "Вырезка", + "blur": "Размытие", + "custom": "Пользовательский" } }, "effects": { diff --git a/src/i18n/locales/tr/settings.json b/src/i18n/locales/tr/settings.json index c593e4db7..485666d42 100644 --- a/src/i18n/locales/tr/settings.json +++ b/src/i18n/locales/tr/settings.json @@ -63,6 +63,14 @@ "circle": "Daire", "square": "Kare", "rounded": "Yuvarlatılmış" + }, + "webcamBackground": "Kamera Arka Planı", + "webcamBlurIntensity": "Bulanıklık Yoğunluğu", + "bgModes": { + "none": "Orijinal", + "transparent": "Kesme", + "blur": "Bulanık", + "custom": "Özel" } }, "effects": { diff --git a/src/i18n/locales/vi/settings.json b/src/i18n/locales/vi/settings.json index 176f13eb6..a2af00397 100644 --- a/src/i18n/locales/vi/settings.json +++ b/src/i18n/locales/vi/settings.json @@ -63,6 +63,14 @@ "circle": "Tròn", "square": "Vuông", "rounded": "Bo góc" + }, + "webcamBackground": "Nền máy ảnh", + "webcamBlurIntensity": "Độ mờ", + "bgModes": { + "none": "Gốc", + "transparent": "Tách nền", + "blur": "Làm mờ", + "custom": "Tùy chỉnh" } }, "effects": { diff --git a/src/i18n/locales/zh-CN/settings.json b/src/i18n/locales/zh-CN/settings.json index 19f231703..bd13392a1 100644 --- a/src/i18n/locales/zh-CN/settings.json +++ b/src/i18n/locales/zh-CN/settings.json @@ -63,6 +63,14 @@ "circle": "圆形", "square": "正方形", "rounded": "圆角" + }, + "webcamBackground": "摄像头背景", + "webcamBlurIntensity": "模糊强度", + "bgModes": { + "none": "原画", + "transparent": "抠图", + "blur": "模糊", + "custom": "自定义" } }, "effects": { diff --git a/src/i18n/locales/zh-TW/settings.json b/src/i18n/locales/zh-TW/settings.json index e2bc412e9..f9328155d 100644 --- a/src/i18n/locales/zh-TW/settings.json +++ b/src/i18n/locales/zh-TW/settings.json @@ -64,6 +64,14 @@ "circle": "圓形", "square": "正方形", "rounded": "圓角" + }, + "webcamBackground": "攝影機背景", + "webcamBlurIntensity": "模糊強度", + "bgModes": { + "none": "原畫", + "transparent": "去背", + "blur": "模糊", + "custom": "自訂" } }, "effects": { diff --git a/src/lib/ai-edition/store/editorSettings.test.ts b/src/lib/ai-edition/store/editorSettings.test.ts index 07982f47a..b43145d93 100644 --- a/src/lib/ai-edition/store/editorSettings.test.ts +++ b/src/lib/ai-edition/store/editorSettings.test.ts @@ -239,4 +239,16 @@ describe("patchEditorSettings", () => { expect(snap.webcamCropRegion.x).toBeCloseTo(0.375); expect(snap.webcamCropRegion.y).toBeCloseTo(0.45); }); + + it("round-trips webcam background settings through legacyEditor", () => { + const patched = patchEditorSettings(baseDoc, { + webcamBackgroundMode: "custom", + webcamWallpaper: "#ff0080", + webcamBlurIntensity: 0.8, + }); + const snap = getEditorSettings(patched); + expect(snap.webcamBackgroundMode).toBe("custom"); + expect(snap.webcamWallpaper).toBe("#ff0080"); + expect(snap.webcamBlurIntensity).toBe(0.8); + }); }); diff --git a/src/lib/ai-edition/store/editorSettings.ts b/src/lib/ai-edition/store/editorSettings.ts index 47f532dcb..455f013ff 100644 --- a/src/lib/ai-edition/store/editorSettings.ts +++ b/src/lib/ai-edition/store/editorSettings.ts @@ -17,12 +17,15 @@ import { DEFAULT_CURSOR_MOTION_BLUR, DEFAULT_CURSOR_SIZE, DEFAULT_CURSOR_SMOOTHING, + DEFAULT_WEBCAM_BACKGROUND_MODE, + DEFAULT_WEBCAM_BLUR_INTENSITY, DEFAULT_WEBCAM_LAYOUT_PRESET, DEFAULT_WEBCAM_MASK_SHAPE, DEFAULT_WEBCAM_MIRRORED, DEFAULT_WEBCAM_POSITION, DEFAULT_WEBCAM_REACTIVE_ZOOM, DEFAULT_WEBCAM_SIZE_PRESET, + type WebcamBackgroundMode, type WebcamLayoutPreset, type WebcamMaskShape, type WebcamPosition, @@ -98,6 +101,9 @@ export interface EditorSettingsSnapshot { * Authoritative: `webcamCropRegion.x/y` are rebuilt from it on read. */ webcamCropPan: CropPan; audioGainDb: number; + webcamBackgroundMode: WebcamBackgroundMode; + webcamWallpaper: string; + webcamBlurIntensity: number; cursor: CursorVisualSettings; cursorShow: boolean; cursorTheme: string; @@ -127,6 +133,9 @@ export const DEFAULT_EDITOR_SETTINGS: EditorSettingsSnapshot = { webcamCropRegion: DEFAULT_CROP_REGION, webcamCropPan: DEFAULT_CROP_PAN, audioGainDb: 0, + webcamBackgroundMode: DEFAULT_WEBCAM_BACKGROUND_MODE, + webcamWallpaper: DEFAULT_WALLPAPER, + webcamBlurIntensity: DEFAULT_WEBCAM_BLUR_INTENSITY, cursor: { size: DEFAULT_CURSOR_SIZE, smoothing: DEFAULT_CURSOR_SMOOTHING, @@ -157,6 +166,9 @@ interface LegacyShape { webcamCropRegion?: CropRegion; webcamCropPan?: CropPan; audioGainDb?: number; + webcamBackgroundMode?: WebcamBackgroundMode; + webcamWallpaper?: string; + webcamBlurIntensity?: number; cursorSize?: number; cursorSmoothing?: number; cursorMotionBlur?: number; @@ -233,6 +245,13 @@ export function getEditorSettings(doc: AxcutDocument | null | undefined): Editor AUDIO_GAIN_DB_LIMIT, Math.max(-AUDIO_GAIN_DB_LIMIT, num(legacy?.audioGainDb, 0)), ), + webcamBackgroundMode: + legacy?.webcamBackgroundMode ?? DEFAULT_EDITOR_SETTINGS.webcamBackgroundMode, + webcamWallpaper: str(legacy?.webcamWallpaper, DEFAULT_EDITOR_SETTINGS.webcamWallpaper), + webcamBlurIntensity: num( + legacy?.webcamBlurIntensity, + DEFAULT_EDITOR_SETTINGS.webcamBlurIntensity, + ), cursor, cursorShow: bool(legacy?.cursorShow, DEFAULT_EDITOR_SETTINGS.cursorShow), cursorTheme: str(legacy?.cursorTheme, DEFAULT_EDITOR_SETTINGS.cursorTheme), @@ -257,6 +276,9 @@ export interface EditorSettingsPatch { webcamCropRegion?: CropRegion; webcamCropPan?: CropPan; audioGainDb?: number; + webcamBackgroundMode?: WebcamBackgroundMode; + webcamWallpaper?: string; + webcamBlurIntensity?: number; cursor?: Partial & { theme?: string; show?: boolean }; autoFocusAll?: boolean; } diff --git a/src/lib/ai-edition/webcamSegmentation.ts b/src/lib/ai-edition/webcamSegmentation.ts new file mode 100644 index 000000000..397f2ff71 --- /dev/null +++ b/src/lib/ai-edition/webcamSegmentation.ts @@ -0,0 +1,248 @@ +// Neural background segmentation for webcam feed using Google MediaPipe SelfieSegmentation. +// Runs locally via WebGL/WASM in real-time. + +import { SelfieSegmentation } from "@mediapipe/selfie_segmentation"; +import type { WebcamBackgroundMode } from "@/components/video-editor/types"; + +let segmenterInstance: SelfieSegmentation | null = null; +let initPromise: Promise | null = null; + +export function getSelfieSegmenter(): Promise { + if (segmenterInstance) return Promise.resolve(segmenterInstance); + if (initPromise) return initPromise; + + initPromise = new Promise((resolve, reject) => { + try { + const segmenter = new SelfieSegmentation({ + locateFile: (file) => { + // In Vite dev & Electron build, assets are in /mediapipe/selfie_segmentation/ + return `/mediapipe/selfie_segmentation/${file}`; + }, + }); + + segmenter.setOptions({ + modelSelection: 1, // 1 = landscape model (144x256), optimized for 16:9 webcam + selfieMode: false, + }); + + segmenter + .initialize() + .then(() => { + segmenterInstance = segmenter; + resolve(segmenter); + }) + .catch((err) => { + console.error("[WebcamSegmentation] Failed to initialize MediaPipe:", err); + reject(err); + }); + } catch (e) { + console.error("[WebcamSegmentation] Error creating SelfieSegmentation:", e); + reject(e); + } + }); + + return initPromise; +} + +export interface SegmentationRenderOptions { + mode: WebcamBackgroundMode; + blurIntensity: number; + threshold?: number; + feather?: number; + wallpaper?: string; +} + +let tempCanvas: HTMLCanvasElement | null = null; +let tempCtx: CanvasRenderingContext2D | null = null; + +function getTempCanvas( + width: number, + height: number, +): { canvas: HTMLCanvasElement; ctx: CanvasRenderingContext2D } { + if (!tempCanvas) { + tempCanvas = document.createElement("canvas"); + tempCtx = tempCanvas.getContext("2d", { willReadFrequently: false }); + } + if (tempCanvas.width !== width || tempCanvas.height !== height) { + tempCanvas.width = width; + tempCanvas.height = height; + } + return { canvas: tempCanvas, ctx: tempCtx! }; +} + +/** + * Applies neural segmentation on the given video frame and renders into outputCanvas. + */ +export async function renderSegmentedWebcam( + video: HTMLVideoElement, + outputCanvas: HTMLCanvasElement, + options: SegmentationRenderOptions, +): Promise { + if (video.videoWidth === 0 || video.videoHeight === 0) return; + + const segmenter = await getSelfieSegmenter(); + const outCtx = outputCanvas.getContext("2d"); + if (!outCtx) return; + + const w = video.videoWidth; + const h = video.videoHeight; + + if (outputCanvas.width !== w || outputCanvas.height !== h) { + outputCanvas.width = w; + outputCanvas.height = h; + } + + return new Promise((resolve) => { + segmenter.onResults((results) => { + const { canvas: maskCanvas, ctx: maskCtx } = getTempCanvas(w, h); + + outCtx.save(); + outCtx.clearRect(0, 0, w, h); + + if (options.mode === "transparent") { + // 1. Draw segmentation mask to temp canvas + maskCtx.save(); + maskCtx.clearRect(0, 0, w, h); + maskCtx.drawImage(results.segmentationMask, 0, 0, w, h); + // 2. Composite video on top of mask + maskCtx.globalCompositeOperation = "source-in"; + maskCtx.drawImage(results.image, 0, 0, w, h); + maskCtx.restore(); + + // 3. Draw cut out person to output + outCtx.drawImage(maskCanvas, 0, 0, w, h); + } else if (options.mode === "blur") { + // 1. Draw blurred background + const intensity = typeof options.blurIntensity === "number" ? options.blurIntensity : 0.5; + const blurPx = Math.round(intensity * 25); + if (blurPx > 0) { + outCtx.filter = `blur(${blurPx}px)`; + } + outCtx.drawImage(results.image, 0, 0, w, h); + outCtx.filter = "none"; + + // 2. Mask the sharp person + maskCtx.save(); + maskCtx.clearRect(0, 0, w, h); + maskCtx.drawImage(results.segmentationMask, 0, 0, w, h); + maskCtx.globalCompositeOperation = "source-in"; + maskCtx.drawImage(results.image, 0, 0, w, h); + maskCtx.restore(); + + // 3. Composite person over blurred background + outCtx.drawImage(maskCanvas, 0, 0, w, h); + } else if (options.mode === "custom") { + // 1. Draw custom background behind the person + if (options.wallpaper) { + if (options.wallpaper.startsWith("#") || options.wallpaper.startsWith("rgb")) { + outCtx.fillStyle = options.wallpaper; + outCtx.fillRect(0, 0, w, h); + } + } + + // 2. Draw person cut out to temp canvas + maskCtx.save(); + maskCtx.clearRect(0, 0, w, h); + maskCtx.drawImage(results.segmentationMask, 0, 0, w, h); + maskCtx.globalCompositeOperation = "source-in"; + maskCtx.drawImage(results.image, 0, 0, w, h); + maskCtx.restore(); + + // 3. Draw cut out person over the custom background + outCtx.drawImage(maskCanvas, 0, 0, w, h); + } + + outCtx.restore(); + resolve(); + }); + + segmenter.send({ image: video }).catch((err) => { + console.warn("[WebcamSegmentation] segmenter.send failed:", err); + resolve(); + }); + }); +} + +import { BufferTarget, CanvasSource, Mp4OutputFormat, Output, WebMOutputFormat } from "mediabunny"; +import { toFileUrl } from "@/components/video-editor/projectPersistence"; + +/** + * Pre-renders and encodes the full webcam video track using MediaPipe neural segmentation + * so that native export (MP4 / GIF) has 100% pixel-parity with live preview (SSOT). + */ +export async function prepareSegmentedWebcamTrack( + webcamSourcePath: string, + options: SegmentationRenderOptions, + onProgress?: (progress: number) => void, +): Promise { + await getSelfieSegmenter(); + + const video = document.createElement("video"); + video.src = toFileUrl(webcamSourcePath); + video.muted = true; + video.playsInline = true; + video.crossOrigin = "anonymous"; + + await new Promise((resolve, reject) => { + video.onloadedmetadata = () => resolve(); + video.onerror = () => reject(new Error("Failed to load webcam video metadata")); + }); + + const width = video.videoWidth || 1280; + const height = video.videoHeight || 720; + const duration = video.duration || 1; + const fps = 30; + const totalFrames = Math.max(1, Math.round(duration * fps)); + + const canvas = document.createElement("canvas"); + canvas.width = width; + canvas.height = height; + + const isTransparent = options.mode === "transparent"; + const target = new BufferTarget(); + const output = new Output({ + format: isTransparent ? new WebMOutputFormat() : new Mp4OutputFormat(), + target, + }); + + const videoSource = new CanvasSource(canvas, { + codec: isTransparent ? "vp9" : "avc", + bitrate: 4_000_000, + width, + height, + ...(isTransparent ? { alpha: "keep" as const } : {}), + }); + + output.addTrack(videoSource); + await output.start(); + + for (let i = 0; i < totalFrames; i++) { + const time = i / fps; + video.currentTime = time; + await new Promise((resolve) => { + video.onseeked = () => resolve(); + }); + + await renderSegmentedWebcam(video, canvas, options); + await videoSource.add(time, 1 / fps); + onProgress?.((i + 1) / totalFrames); + } + + videoSource.close(); + await output.finalize(); + + const buffer = target.buffer; + if (!buffer) { + throw new Error("Failed to encode segmented webcam video buffer"); + } + + const ext = isTransparent ? "webm" : "mp4"; + const fileName = `webcam-segmented-${Date.now()}.${ext}`; + const res = (await window.electronAPI?.storeRecordedVideo?.(buffer, fileName)) as + | { success?: boolean; path?: string } + | undefined; + if (res && typeof res === "object" && typeof res.path === "string") { + return res.path; + } + return fileName; +} diff --git a/src/native/sceneDescription.test.ts b/src/native/sceneDescription.test.ts index 570ae71ee..63d86d4a0 100644 --- a/src/native/sceneDescription.test.ts +++ b/src/native/sceneDescription.test.ts @@ -177,6 +177,54 @@ describe("buildSceneDescription.background", () => { }); }); +describe("buildSceneDescription.webcamEffect", () => { + it("serializes default webcamEffect (none mode)", () => { + const doc = makeDoc(); + expect(buildSceneDescription(doc).webcamEffect).toEqual({ + mode: "none", + blurIntensity: 0.5, + background: { kind: "image", path: "/wallpapers/wallpaper1.jpg" }, + }); + }); + + it("serializes transparent cutout mode", () => { + const doc = makeDoc({ + legacyEditor: { + webcamBackgroundMode: "transparent", + }, + }); + expect(buildSceneDescription(doc).webcamEffect?.mode).toBe("transparent"); + }); + + it("serializes blur mode with custom blur intensity", () => { + const doc = makeDoc({ + legacyEditor: { + webcamBackgroundMode: "blur", + webcamBlurIntensity: 0.85, + }, + }); + expect(buildSceneDescription(doc).webcamEffect).toEqual({ + mode: "blur", + blurIntensity: 0.85, + background: { kind: "image", path: "/wallpapers/wallpaper1.jpg" }, + }); + }); + + it("serializes custom background mode with color or gradient", () => { + const doc = makeDoc({ + legacyEditor: { + webcamBackgroundMode: "custom", + webcamWallpaper: "#34b27b", + }, + }); + expect(buildSceneDescription(doc).webcamEffect).toEqual({ + mode: "custom", + blurIntensity: 0.5, + background: { kind: "color", color: "#34b27b" }, + }); + }); +}); + // --- clips ----------------------------------------------------------------- describe("buildSceneDescription.clips", () => { diff --git a/src/native/sceneDescription.ts b/src/native/sceneDescription.ts index 38408631c..142d70717 100644 --- a/src/native/sceneDescription.ts +++ b/src/native/sceneDescription.ts @@ -401,6 +401,20 @@ export interface SceneDescription { cropByClip: Array<{ x: number; y: number; width: number; height: number } | null>; /** Output frame. `fps` null = use the first clip's source fps. */ output: { width: number; height: number; fps: number | null }; + /** Webcam background / AI cutout effects. */ + webcamEffect?: SceneWebcamEffect; +} + +/** Webcam background / AI cutout effects. */ +export interface SceneWebcamEffect { + /** "none" | "transparent" | "blur" | "custom" | "presegmented" */ + mode: "none" | "transparent" | "blur" | "custom" | "presegmented"; + /** 0..1 blur intensity when mode is "blur". */ + blurIntensity: number; + /** Background behind the subject when mode is "custom" (parsed like settings.wallpaper). */ + background?: SceneBackground; + /** Optional pre-computed alpha matte video path. */ + maskPath?: string; } /** Parse the settings wallpaper string into the discriminated SceneBackground union. */ @@ -913,5 +927,10 @@ export function buildSceneDescription( })), cropByClip, output: { ...pickOutputDims(document, settings.aspectRatio), fps: null }, + webcamEffect: { + mode: settings.webcamBackgroundMode, + blurIntensity: settings.webcamBlurIntensity, + background: parseWallpaper(settings.webcamWallpaper), + }, }; } From f02af18032d6ddeb9ace31cde77a9e76d55f6691 Mon Sep 17 00:00:00 2001 From: EtienneLescot Date: Mon, 24 Aug 2026 12:49:05 +0200 Subject: [PATCH 02/15] fix(ci): update npmDepsHash in nix package and fix TypeScript types in ExportDialog and webcamSegmentation --- nix/package.nix | 2 +- src/components/ai-edition/ExportDialog.tsx | 1 + src/lib/ai-edition/webcamSegmentation.ts | 4 +--- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/nix/package.nix b/nix/package.nix index 9e5dd1e23..cb83d4b42 100644 --- a/nix/package.nix +++ b/nix/package.nix @@ -51,7 +51,7 @@ buildNpmPackage { ); }; - npmDepsHash = "sha256-Vr6Sw/WKmX22eT4a22+Xr3/miMzZr2uAwiYx12toU/E="; + npmDepsHash = "sha256-tQBojNjUAH7ok0HXoTX1My2lzxhp5oNRVFz9hi4IoC4="; env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1"; diff --git a/src/components/ai-edition/ExportDialog.tsx b/src/components/ai-edition/ExportDialog.tsx index 13e4fc113..8f1cf39e6 100644 --- a/src/components/ai-edition/ExportDialog.tsx +++ b/src/components/ai-edition/ExportDialog.tsx @@ -18,6 +18,7 @@ import { pickExtremeDims, resolveAspectRatioValue, } from "@/lib/ai-edition/document/outputFormat"; +import type { AxcutDocument } from "@/lib/ai-edition/schema"; import { getEditorSettings } from "@/lib/ai-edition/store/editorSettings"; import { assetCameraSource } from "@/lib/ai-edition/timeline/camera"; import { resolveClipSourceEndSec } from "@/lib/ai-edition/timeline/clipDuration"; diff --git a/src/lib/ai-edition/webcamSegmentation.ts b/src/lib/ai-edition/webcamSegmentation.ts index 397f2ff71..8be27dfa0 100644 --- a/src/lib/ai-edition/webcamSegmentation.ts +++ b/src/lib/ai-edition/webcamSegmentation.ts @@ -208,12 +208,10 @@ export async function prepareSegmentedWebcamTrack( const videoSource = new CanvasSource(canvas, { codec: isTransparent ? "vp9" : "avc", bitrate: 4_000_000, - width, - height, ...(isTransparent ? { alpha: "keep" as const } : {}), }); - output.addTrack(videoSource); + output.addVideoTrack(videoSource); await output.start(); for (let i = 0; i < totalFrames; i++) { From c0d032a1afaa58dc15ae7ac1b2b9c5065d041534 Mon Sep 17 00:00:00 2001 From: EtienneLescot Date: Mon, 24 Aug 2026 12:50:57 +0200 Subject: [PATCH 03/15] fix(nix): update npmDepsHash to match package-lock.json --- nix/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix/package.nix b/nix/package.nix index cb83d4b42..02e9eb10a 100644 --- a/nix/package.nix +++ b/nix/package.nix @@ -51,7 +51,7 @@ buildNpmPackage { ); }; - npmDepsHash = "sha256-tQBojNjUAH7ok0HXoTX1My2lzxhp5oNRVFz9hi4IoC4="; + npmDepsHash = "sha256-LkKX1edTPHZq5nQRrbLAn11oVw36kb0smNQMmVRMEPA="; env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1"; From 80b423501b1c34fae8c2ea2ddc64a4dff81c434a Mon Sep 17 00:00:00 2001 From: EtienneLescot Date: Tue, 25 Aug 2026 12:21:58 +0200 Subject: [PATCH 04/15] fix(webcam): address the review findings on the AI background PR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fourteen of the fifteen review findings; the fifteenth (transparent export losing its alpha) is structural and documented instead. Correctness: - The pre-rendered track was saved through `storeRecordedVideo`, which is the recording-session finaliser, not a file-save: it reset the current session, cleared `currentProjectPath`, flushed cursor telemetry and wrote a `.session.json`. Exporting with an effect on corrupted the app's session state. Adds a `write-derived-media` IPC that only writes a file. - `locateFile` returned a root-absolute `/mediapipe/...` URL, which resolves to the filesystem root under `file://` — the feature only ever worked in the Vite dev server. Routed through `getAssetPath`, like wallpapers. - MediaPipe's `onResults` is a single callback slot and was re-registered per frame, so a `seeked` landing mid-render stranded the previous promise and the preview froze for good. One listener for the segmenter's lifetime, sends serialised through a queue, watchdog on a dropped frame. - `video.duration || 1` let `Infinity` through (MediaRecorder WebM with no Duration header), and the pre-render loop never terminated. - Custom backgrounds only filled for `#`/`rgb` strings, so gradients and image wallpapers exported as black. Now dispatched through `classifyWallpaper` and painted with the existing gradient helpers. - A failed save returned a bare filename that was then used as a source path. - The preview canvas ignored the webcam crop the native path applies. - `webcamBackgroundMode` was read unvalidated and `webcamBlurIntensity` unclamped. Dead and unrelated code: - The HLSL person-mask heuristic and the `effect_mode` plumbing were unreachable: the only draw that could reach them was gated off. `shaders.hlsl` and `scene.rs` are now byte-identical to main. The load-bearing part — the app owning the webcam layer in preview — is done in TypeScript instead, so it holds on all three backends rather than Windows only. - `webcamEffect` was written and never read, sentinel included. - `BackgroundPane` was a dead copy of a surface deliberately removed in #84. - The `OPENSCREEN_START_EDITOR` branch was unrelated and skipped the unsaved-changes guard. Reuse: - `WallpaperPicker` is now the single implementation, used by both call sites, with the `role="tab"`/`aria-selected` the copy had dropped. - The blur slider uses `SliderCell` instead of an uncontrolled copy of it. - The export pre-render is shared by both exporters. Adds `webcamSegmentation.test.ts` covering the result-channel protocol — the class of bug that has no other way of being caught. --- biome.json | 2 +- crates/compositor/src/compositor_windows.rs | 58 +-- crates/compositor/src/scene.rs | 47 -- crates/compositor/src/shaders.hlsl | 90 +--- electron/electron-env.d.ts | 9 + electron/ipc/handlers.ts | 54 ++ electron/main.ts | 5 - electron/preload.ts | 5 + src/cli/CliExportRunner.tsx | 55 +- src/components/ai-edition/ExportDialog.tsx | 52 +- .../ai-edition/NativeCompositorOverlay.tsx | 30 +- src/components/ai-edition/RightPanes.tsx | 331 ++++-------- .../ai-edition/WebcamOverlay.test.tsx | 81 +-- src/components/ai-edition/WebcamOverlay.tsx | 193 ++++--- src/components/video-editor/types.ts | 11 +- .../ai-edition/store/editorSettings.test.ts | 18 + src/lib/ai-edition/store/editorSettings.ts | 14 +- src/lib/ai-edition/webcamSegmentation.test.ts | 177 +++++++ src/lib/ai-edition/webcamSegmentation.ts | 488 ++++++++++++++---- src/native/sceneDescription.test.ts | 48 -- src/native/sceneDescription.ts | 19 - 21 files changed, 975 insertions(+), 812 deletions(-) create mode 100644 src/lib/ai-edition/webcamSegmentation.test.ts diff --git a/biome.json b/biome.json index 8690776ed..8954e61bf 100644 --- a/biome.json +++ b/biome.json @@ -3,7 +3,7 @@ "vcs": { "enabled": true, "clientKind": "git", "useIgnoreFile": true }, "files": { "ignoreUnknown": false, - "includes": ["**", "!**/*.css", "!**/design/**", "!**/.worktrees/**", "!**/public/**"] + "includes": ["**", "!**/*.css", "!**/design/**", "!**/.worktrees/**", "!**/public/mediapipe/**"] }, "formatter": { "enabled": true, diff --git a/crates/compositor/src/compositor_windows.rs b/crates/compositor/src/compositor_windows.rs index 1ae36bc2b..d22567b3e 100644 --- a/crates/compositor/src/compositor_windows.rs +++ b/crates/compositor/src/compositor_windows.rs @@ -1538,11 +1538,7 @@ impl Compositor { scene_preset.as_deref(), Some("dual-frame") | Some("vertical-stack"), ); - let is_transparent_cutout = matches!( - scene_ref.as_ref().and_then(|s| s.webcam_effect.as_ref()), - Some(e) if e.mode == "transparent" || (e.mode == "presegmented" && e.blur_intensity < -0.5) - ); - if cfg.shadow && !webcam_is_block && !is_transparent_cutout && shape_fade > 0.0 { + if cfg.shadow && !webcam_is_block && shape_fade > 0.0 { let strength = WEBCAM_SHADOW_OPACITY * shape_fade; self.draw_shadow( w_dst, @@ -1553,39 +1549,25 @@ impl Compositor { strength, ); } - let (effect_mode_val, blur_val, custom_bg_color) = match scene_ref.as_ref().and_then(|s| s.webcam_effect.as_ref()) { - Some(e) if e.mode == "transparent" => (1.0f32, 0.0f32, [0.0, 0.0, 0.0, 1.0]), - Some(e) if e.mode == "blur" => (2.0f32, e.blur_intensity, [0.0, 0.0, 0.0, 1.0]), - Some(e) if e.mode == "custom" => { - let col = match &e.background { - Some(SceneBackground::Color { color }) => parse_hex(color).unwrap_or([0.0, 0.0, 0.0, 1.0]), - _ => [0.0, 0.0, 0.0, 1.0], - }; - (3.0f32, 0.0f32, col) - } - Some(e) if e.mode == "presegmented" => (0.0f32, 0.0f32, [0.0, 0.0, 0.0, 1.0]), - _ => (0.0f32, 0.0f32, [0.0, 0.0, 0.0, 1.0]), - }; - - if effect_mode_val <= 0.5 { - self.draw_video( - &LayerCB { - dst: w_dst, - src: [u0, sv0, u1, sv1], - quad_px: w_px, - radius_px: w_radius, - mode: 0.0, - color: custom_bg_color, - fx: [0.0, 0.0, effect_mode_val, blur_val], - src_prev: [u0, sv0, u1, sv1], // src fixe (pas de zoom webcam) - dst_prev: w_dst_prev, - mb: [mb_taps, 1.0, 1.0, 0.0], - ..Default::default() - }, - &wy, - &wuv, - ); - } + // La segmentation est PRÉ-RENDUE côté app (MediaPipe) et le natif reçoit déjà la + // piste détourée/floutée : il n'y a donc aucun effet à appliquer ici, la webcam se + // dessine comme n'importe quelle autre piste. + self.draw_video( + &LayerCB { + dst: w_dst, + src: [u0, sv0, u1, sv1], + quad_px: w_px, + radius_px: w_radius, + mode: 0.0, + color: [0.0, 0.0, 0.0, 1.0], + src_prev: [u0, sv0, u1, sv1], // src fixe (pas de zoom webcam) + dst_prev: w_dst_prev, + mb: [mb_taps, 1.0, 1.0, 0.0], + ..Default::default() + }, + &wy, + &wuv, + ); } // --- annotations : calque le plus haut, comme dans le DOM de la preview (le calque y est diff --git a/crates/compositor/src/scene.rs b/crates/compositor/src/scene.rs index bde9dd519..2d20e233b 100644 --- a/crates/compositor/src/scene.rs +++ b/crates/compositor/src/scene.rs @@ -429,20 +429,6 @@ pub struct SceneOutput { pub fps: Option, } -/// Effet d'arrière-plan de la webcam (détourage IA, flou, fond personnalisé). -#[derive(Debug, Clone, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct SceneWebcamEffect { - /// "none" | "transparent" | "blur" | "custom" - pub mode: String, - #[serde(default)] - pub blur_intensity: f32, - #[serde(default)] - pub background: Option, - #[serde(default)] - pub mask_path: Option, -} - /// Tout ce dont le natif a besoin pour composer la scène, sérialisé depuis un document. #[derive(Debug, Clone, Deserialize)] #[serde(rename_all = "camelCase")] @@ -468,9 +454,6 @@ pub struct Scene { /// Crop écran par clip, dans le même ordre que `clips` (`cropByClip` côté TS). #[serde(default)] pub crop_by_clip: Vec>, - /// Effet d'arrière-plan / détourage IA de la webcam. - #[serde(default)] - pub webcam_effect: Option, /// État de rendu interne, positionné par `for_clip_window` (jamais envoyé par l'app). #[serde(skip)] pub(crate) active_clip_index: usize, @@ -618,36 +601,6 @@ mod tests { let s = Scene::from_json(json).expect("parse sans webcam_rect"); assert!(s.layout.webcam_rect.is_none()); assert_eq!(s.layout.preset, "picture-in-picture"); - assert!(s.webcam_effect.is_none()); - } - - #[test] - fn parses_webcam_effect_payload() { - let json = r##"{ - "clips": [], - "layout": {"preset":"picture-in-picture","webcamSize":0.25,"webcamShape":"circle","webcamMirror":false,"webcamPosition":null,"webcamReactiveZoom":false}, - "effects": {"padding":0,"blur":false,"shadow":0,"roundnessFrac":0,"motionBlur":0}, - "background": {"kind":"color","color":"#000000"}, - "zoomRegions": [], - "cursor": {"show":false,"size":1,"smoothing":0,"motionBlur":0,"clickBounce":0,"clipToBounds":false,"theme":"default"}, - "cropByClip": [], - "output": {"width":1920,"height":1080,"fps":null}, - "webcamEffect": { - "mode": "custom", - "blurIntensity": 0.75, - "background": {"kind":"color","color":"#ff0080"}, - "maskPath": "/path/to/mask.mp4" - } - }"##; - let s = Scene::from_json(json).expect("parse avec webcamEffect"); - let effect = s.webcam_effect.expect("webcamEffect présent"); - assert_eq!(effect.mode, "custom"); - assert_eq!(effect.blur_intensity, 0.75); - assert_eq!(effect.mask_path.as_deref(), Some("/path/to/mask.mp4")); - match effect.background { - Some(SceneBackground::Color { color }) => assert_eq!(color, "#ff0080"), - _ => panic!("expected color background"), - } } } diff --git a/crates/compositor/src/shaders.hlsl b/crates/compositor/src/shaders.hlsl index 212c9b66f..b9d438d7d 100644 --- a/crates/compositor/src/shaders.hlsl +++ b/crates/compositor/src/shaders.hlsl @@ -154,73 +154,6 @@ float3 quad_inverse_bilinear(float2 P, float2 c00, float2 c10, float2 c11, float return (r0.z > 0.5) ? r0 : r1; } -// Human skin, body prior and subject saliency detection in YCbCr: -// Y (luminance), Cb (blue difference), Cr (red difference). -float compute_person_mask(float2 uv, float2 qpx, float threshold, float feather) -{ - float y = texY.Sample(samp, uv); - float2 cbcr = texUV.Sample(samp, uv); - - // Anatomical portrait prior: Head and shoulders form a vertical rounded shape - float2 torso_p = (uv - float2(0.5, 0.72)) * float2(1.8, 1.2); - float torso_d = length(torso_p); - float2 head_p = (uv - float2(0.5, 0.45)) * float2(2.5, 2.0); - float head_d = length(head_p); - float body_prior = saturate(1.0 - min(torso_d, head_d)); - - // Skin tone probability in normalized YCbCr space: - // Cb in [0.36, 0.50], Cr in [0.54, 0.70] - float cb_d = abs(cbcr.x - 0.43); - float cr_d = abs(cbcr.y - 0.61); - float is_skin = saturate(1.0 - (cb_d * 7.5 + cr_d * 6.5)); - - // High contrast/edge energy - float2 delta = float2(1.5 / max(qpx.x, 1.0), 1.5 / max(qpx.y, 1.0)); - float y_l = texY.Sample(samp, uv - float2(delta.x, 0.0)); - float y_r = texY.Sample(samp, uv + float2(delta.x, 0.0)); - float y_u = texY.Sample(samp, uv - float2(0.0, delta.y)); - float y_d = texY.Sample(samp, uv + float2(0.0, delta.y)); - float edge = abs(y_l - y_r) + abs(y_u - y_d); - - // Top room background suppression (ceiling / top room corners are never the speaker) - float center_dist_x = abs(uv.x - 0.5) * 2.0; - float center_dist_y = uv.y; - float corner_dist = saturate((1.0 - center_dist_y) * (center_dist_x * 0.9 + 0.1)); - float subject_envelope = saturate(1.0 - corner_dist * 1.6) * saturate(center_dist_y * 2.2); - - // Combined score - float score = body_prior * 0.55 + is_skin * 0.40 + subject_envelope * 0.35 + edge * 0.20; - - // User threshold and feathering - float center_t = lerp(0.20, 0.75, saturate(threshold)); - float half_f = max(feather * 0.25, 0.02); - - float min_t = max(center_t - half_f, 0.0); - float max_t = min(center_t + half_f, 1.0); - - float mask = smoothstep(min_t, max_t, score); - return saturate(mask); -} - -float3 sample_blur_yuv(float2 uv, float intensity, float2 qpx) -{ - float radius = max(intensity * 12.0, 4.0); - float2 step = radius / max(qpx, 1.0); - float3 sum = 0.0; - float total = 0.0; - [unroll] for (int dy = -2; dy <= 2; dy++) - { - [unroll] for (int dx = -2; dx <= 2; dx++) - { - float2 offset = float2(dx, dy) * step; - float weight = 1.0 / (1.0 + length(float2(dx, dy))); - sum += sample_yuv(saturate(uv + offset)) * weight; - total += weight; - } - } - return sum / max(total, 1e-4); -} - float4 ps_main(VSOut i) : SV_Target { // mode 13 : SPRITE DE CURSEUR posé sur l'écran incliné. Même warp que le mode 8, mais @@ -477,7 +410,6 @@ float4 ps_main(VSOut i) : SV_Target } float3 rgb; - float alpha = color.a; if (mode < 0.5) { // flou de mouvement par vélocité (§8) : pour CE pixel sortie, uv à la frame @@ -503,31 +435,13 @@ float4 ps_main(VSOut i) : SV_Target } rgb = acc / (float) taps; } - - // Effet d'arrière-plan webcam : fx.z (1=cutout, 2=blur, 3=custom) - float effect_mode = fx.z; - if (effect_mode > 0.5) - { - float person = compute_person_mask(uv_now, quad_px, fx.y, fx.x); - if (effect_mode > 2.5) - { - rgb = lerp(color.rgb, rgb, person); - } - else if (effect_mode > 1.5) - { - float3 bg_blur = sample_blur_yuv(uv_now, fx.w, quad_px); - rgb = lerp(bg_blur, rgb, person); - } - else - { - alpha *= person; - } - } } else { rgb = color.rgb; } + + float alpha = color.a; if (radius_px > 0.0) { // `quad_px` est en px de SORTIE (le render target porte la géométrie de sortie) et diff --git a/electron/electron-env.d.ts b/electron/electron-env.d.ts index 4eb288e14..bfb8e535d 100644 --- a/electron/electron-env.d.ts +++ b/electron/electron-env.d.ts @@ -95,6 +95,15 @@ interface Window { message?: string; error?: string; }>; + writeDerivedMedia: ( + data: ArrayBuffer, + fileName: string, + ) => Promise<{ + success: boolean; + path?: string; + message?: string; + error?: string; + }>; storeRecordedSession: ( payload: import("../src/lib/recordingSession").StoreRecordedSessionInput, ) => Promise<{ diff --git a/electron/ipc/handlers.ts b/electron/ipc/handlers.ts index 958ef6d96..7eb3993bb 100644 --- a/electron/ipc/handlers.ts +++ b/electron/ipc/handlers.ts @@ -104,6 +104,12 @@ const ALLOWED_IMPORT_VIDEO_EXTENSIONS = new Set([ ".ts", ]); const PREVIEW_AUDIO_DIR = path.join(app.getPath("userData"), "preview-audio"); +// Derived export artifacts (pre-segmented webcam tracks, …). Deliberately NOT +// RECORDINGS_DIR: these are regenerable byproducts of one export run, not takes, +// and `get-recorded-video-path` returns the alphabetically last `.webm` in there — +// a `webcam-segmented-*.webm` would sort after `recording-*` and be handed back as +// "the latest recording". +const DERIVED_MEDIA_DIR = path.join(app.getPath("userData"), "derived-media"); const nativeMacCaptureEvents = new EventEmitter(); // Enumeration walks every display and window and grabs a thumbnail of each, so it @@ -3411,6 +3417,54 @@ export function registerIpcHandlers( } }); + // A derived export artifact, NOT a take: no recording-session state, no + // `.session.json` manifest, no media links, no cursor-telemetry flush. + // `store-recorded-video` does all of that (it is the session finaliser) and is + // the wrong door for a file an export regenerates every run. + ipcMain.handle("write-derived-media", async (_, data: ArrayBuffer, fileName: string) => { + try { + const trimmed = typeof fileName === "string" ? fileName.trim() : ""; + if (!trimmed) { + return { success: false, message: "Invalid derived media file name" }; + } + // `base` differs from the input for `a/b`, `a\b` and absolute paths — but NOT + // for "." or "..", which `path.join` would then resolve back out of the + // directory. `resolveRecordingOutputPath` rejects those explicitly; so does this. + const parsedName = path.parse(trimmed); + if ( + parsedName.base !== trimmed || + path.isAbsolute(trimmed) || + trimmed === "." || + trimmed === ".." + ) { + return { + success: false, + message: "Derived media file name must not contain path segments", + }; + } + + await fs.mkdir(DERIVED_MEDIA_DIR, { recursive: true }); + const outputPath = path.join(DERIVED_MEDIA_DIR, parsedName.base); + await fs.writeFile(outputPath, Buffer.from(data)); + // The file lives outside RECORDINGS_DIR, so the read gate would refuse it. + // We just wrote it, so it is approved by construction. + approveFilePath(outputPath); + + return { + success: true, + path: outputPath, + message: "Derived media written successfully", + }; + } catch (error) { + console.error("Failed to write derived media:", error); + return { + success: false, + message: "Failed to write derived media", + error: String(error), + }; + } + }); + ipcMain.handle("get-recorded-video-path", async () => { try { if (currentRecordingSession?.screenVideoPath) { diff --git a/electron/main.ts b/electron/main.ts index a27e038ef..a85629bf3 100644 --- a/electron/main.ts +++ b/electron/main.ts @@ -140,11 +140,6 @@ function createWindow() { return; } - if (process.env.OPENSCREEN_START_EDITOR === "1" || process.env.OPENSCREEN_EDITOR === "1") { - mainWindow = createEditorWindow(); - return; - } - mainWindow = createHudOverlayWindow(); } diff --git a/electron/preload.ts b/electron/preload.ts index 6aff16407..37da9590c 100644 --- a/electron/preload.ts +++ b/electron/preload.ts @@ -159,6 +159,11 @@ contextBridge.exposeInMainWorld("electronAPI", { storeRecordedVideo: (videoData: ArrayBuffer, fileName: string) => { return ipcRenderer.invoke("store-recorded-video", videoData, fileName); }, + /** Derived export artifact (pre-segmented webcam track, …) → userData/derived-media. + * Unlike storeRecordedVideo this touches no recording-session state. */ + writeDerivedMedia: (data: ArrayBuffer, fileName: string) => { + return ipcRenderer.invoke("write-derived-media", data, fileName); + }, storeRecordedSession: (payload: StoreRecordedSessionInput) => { return ipcRenderer.invoke("store-recorded-session", payload); }, diff --git a/src/cli/CliExportRunner.tsx b/src/cli/CliExportRunner.tsx index 6193175df..9aa47d46d 100644 --- a/src/cli/CliExportRunner.tsx +++ b/src/cli/CliExportRunner.tsx @@ -27,7 +27,7 @@ import { assetCameraSource } from "@/lib/ai-edition/timeline/camera"; import { resolveClipSourceEndSec } from "@/lib/ai-edition/timeline/clipDuration"; import { DEFAULT_ZOOM_DEPTH, ZOOM_DEPTH_SCALES } from "@/lib/ai-edition/timeline/zoom-scale"; import { buildAutoZoomSuggestions } from "@/lib/ai-edition/timeline/zoom-suggestions"; -import { prepareSegmentedWebcamTrack } from "@/lib/ai-edition/webcamSegmentation"; +import { applySegmentedWebcamTracks } from "@/lib/ai-edition/webcamSegmentation"; import type { CliDoneResult, CliExportRequest } from "@/lib/cliContracts"; import { GIF_SIZE_PRESETS, type GifSizePreset } from "@/lib/exporter"; import { calculateMp4ExportSettings } from "@/lib/exporter/mp4ExportSettings"; @@ -264,46 +264,29 @@ async function runExport(request: CliExportRequest): Promise { aspectRatioValue, }); - let clips = buildNativeClipList(axcutDocument); - if (clips.length === 0) { + const builtClips = buildNativeClipList(axcutDocument); + if (builtClips.length === 0) { throw new Error("The project's timeline has no visible clips to export"); } const sceneDesc = buildSceneDescription(axcutDocument); const settings = getEditorSettings(axcutDocument); - if (settings.webcamBackgroundMode !== "none") { - const processedMap = new Map(); - for (const clip of clips) { - if (clip.webcamPath && !processedMap.has(clip.webcamPath)) { - const processedPath = await prepareSegmentedWebcamTrack( - clip.webcamPath, - { - mode: settings.webcamBackgroundMode, - blurIntensity: settings.webcamBlurIntensity, - wallpaper: settings.webcamWallpaper, - }, - (prog) => { - window.electronAPI.cliProgress({ - percentage: Math.min(100, prog * 100), - currentFrame: Math.round(prog * 100), - totalFrames: 100, - estimatedTimeRemaining: 0, - }); - }, - ); - processedMap.set(clip.webcamPath, processedPath); - } - } - clips = clips.map((clip) => - clip.webcamPath && processedMap.has(clip.webcamPath) - ? { ...clip, webcamPath: processedMap.get(clip.webcamPath)! } - : clip, - ); - sceneDesc.webcamEffect = { - mode: "presegmented", - blurIntensity: settings.webcamBackgroundMode === "transparent" ? -1 : 0, - }; - } + const clips = await applySegmentedWebcamTracks( + builtClips, + { + mode: settings.webcamBackgroundMode, + blurIntensity: settings.webcamBlurIntensity, + wallpaper: settings.webcamWallpaper, + }, + (prog) => { + window.electronAPI.cliProgress({ + percentage: Math.min(100, prog * 100), + currentFrame: Math.round(prog * 100), + totalFrames: 100, + estimatedTimeRemaining: 0, + }); + }, + ); const sceneJson = JSON.stringify(sceneDesc); // Progress: native pushes raw encoded-frame counts; totals and pacing are diff --git a/src/components/ai-edition/ExportDialog.tsx b/src/components/ai-edition/ExportDialog.tsx index 8f1cf39e6..ad618ad13 100644 --- a/src/components/ai-edition/ExportDialog.tsx +++ b/src/components/ai-edition/ExportDialog.tsx @@ -22,7 +22,7 @@ import type { AxcutDocument } from "@/lib/ai-edition/schema"; import { getEditorSettings } from "@/lib/ai-edition/store/editorSettings"; import { assetCameraSource } from "@/lib/ai-edition/timeline/camera"; import { resolveClipSourceEndSec } from "@/lib/ai-edition/timeline/clipDuration"; -import { prepareSegmentedWebcamTrack } from "@/lib/ai-edition/webcamSegmentation"; +import { applySegmentedWebcamTracks } from "@/lib/ai-edition/webcamSegmentation"; import { type ExportFormat, type ExportProgress, @@ -310,43 +310,25 @@ export function ExportDialog({ open, onClose, document }: ExportDialogProps) { }); }); try { - let exportClips = clips; const sceneDesc = buildSceneDescription(document); const settings = getEditorSettings(document); - if (settings.webcamBackgroundMode !== "none") { - const processedMap = new Map(); - for (const clip of exportClips) { - if (clip.webcamPath && !processedMap.has(clip.webcamPath)) { - const processedPath = await prepareSegmentedWebcamTrack( - clip.webcamPath, - { - mode: settings.webcamBackgroundMode, - blurIntensity: settings.webcamBlurIntensity, - wallpaper: settings.webcamWallpaper, - }, - (prog) => { - setProgress({ - currentFrame: Math.round(prog * 100), - totalFrames: 100, - percentage: Math.round(prog * 100), - estimatedTimeRemaining: 0, - }); - }, - ); - processedMap.set(clip.webcamPath, processedPath); - } - } - exportClips = exportClips.map((clip) => - clip.webcamPath && processedMap.has(clip.webcamPath) - ? { ...clip, webcamPath: processedMap.get(clip.webcamPath)! } - : clip, - ); - sceneDesc.webcamEffect = { - mode: "presegmented", - blurIntensity: settings.webcamBackgroundMode === "transparent" ? -1 : 0, - }; - } + const exportClips = await applySegmentedWebcamTracks( + clips, + { + mode: settings.webcamBackgroundMode, + blurIntensity: settings.webcamBlurIntensity, + wallpaper: settings.webcamWallpaper, + }, + (prog) => { + setProgress({ + currentFrame: Math.round(prog * 100), + totalFrames: 100, + percentage: Math.round(prog * 100), + estimatedTimeRemaining: 0, + }); + }, + ); const sceneJson = JSON.stringify(sceneDesc); const outDims = tierOutputDims(quality); diff --git a/src/components/ai-edition/NativeCompositorOverlay.tsx b/src/components/ai-edition/NativeCompositorOverlay.tsx index 710e90c74..75029c1f0 100644 --- a/src/components/ai-edition/NativeCompositorOverlay.tsx +++ b/src/components/ai-edition/NativeCompositorOverlay.tsx @@ -81,6 +81,25 @@ export function NativeCompositorOverlay() { // `null` = document pas encore chargé (on attend) ; `{}` = chargé sans asset (→ fixture) ; // `{screenPath,…}` = vraies sources de l'asset primaire. + const settings = useMemo(() => getEditorSettings(document), [document]); + + // The real camera path, independent of whether NATIVE is the one drawing it: the scene + // still needs it to look up the probed webcam size, which shapes the PiP box. + const cameraPath = useMemo(() => { + if (!document) return undefined; + const primary = + document.assets.find((a) => a.id === document.project.primaryAssetId) ?? document.assets[0]; + return primary ? assetCameraSource(primary).path || undefined : undefined; + }, [document]); + + // With a background effect on, WebcamOverlay's segmentation canvas paints the camera + // (background included) over this slot. Handing the same camera to the native view too + // would draw the RAW frame underneath it — invisible behind an opaque blur/custom + // result, but plainly visible through the alpha of a transparent cut-out, which made + // cut-out mode look like it did nothing. Withholding the source is what makes the app + // the sole owner of that layer; `has_webcam` gates only the draw, never the layout. + const appOwnsWebcamLayer = settings.webcamBackgroundMode !== "none"; + const sources = useMemo(() => { if (!document) { return null; @@ -95,13 +114,13 @@ export function NativeCompositorOverlay() { // the one accessor, so it can never disagree with the scene or the export. return { screenPath: primary.originalPath, - webcamPath: assetCameraSource(primary).path || undefined, + webcamPath: appOwnsWebcamLayer ? undefined : assetCameraSource(primary).path || undefined, // sidecar convention (electron/ipc/handlers.ts readCursorRecordingFile) : la // télémétrie curseur vit à côté de la vidéo tant qu'elle n'a pas bougé. Absente → // le natif ignore juste le curseur (CursorTrack::load échoue silencieusement). cursorPath: `${primary.originalPath}.cursor.json`, }; - }, [document]); + }, [document, appOwnsWebcamLayer]); const ready = sources !== null; const { viewId, error } = useNativeCompositorView(canvasRef, { @@ -132,8 +151,10 @@ export function NativeCompositorOverlay() { return; } try { - const activeWebcamPath = sources && "webcamPath" in sources ? sources.webcamPath : undefined; - const webcamSourceSize = activeWebcamPath ? getWebcamNativeSize(activeWebcamPath) : null; + // Deliberately `cameraPath`, not `sources.webcamPath`: the latter is withheld + // while the app owns the webcam layer, and losing the probed size here would + // reshape the PiP box out from under the segmentation canvas that fills it. + const webcamSourceSize = cameraPath ? getWebcamNativeSize(cameraPath) : null; const scene = buildSceneDescription(document, webcamSourceSize); setNativeScene(JSON.stringify(scene)); } catch (error) { @@ -164,7 +185,6 @@ export function NativeCompositorOverlay() { // n'a pas d'importance. Et ca ne peut pas lutter contre un drag de slider : // `setLive` passe par `setDocument`, donc `document` a deja la NOUVELLE // valeur a chaque tick -- la meme que celle que le handler vient de pousser. - const settings = useMemo(() => getEditorSettings(document), [document]); useEffect(() => { const push = () => pushAllNativeParams(settings); push(); diff --git a/src/components/ai-edition/RightPanes.tsx b/src/components/ai-edition/RightPanes.tsx index 7bb4adeea..4efb3ef20 100644 --- a/src/components/ai-edition/RightPanes.tsx +++ b/src/components/ai-edition/RightPanes.tsx @@ -13,7 +13,6 @@ import { Layout as LayoutIcon, Loader2, MousePointerClick, - Palette, Sliders, Trash2, } from "lucide-react"; @@ -215,60 +214,22 @@ export function isSupportedBackgroundImage(type: string, fileName: string): bool return IMAGE_EXTENSIONS.some((extension) => name.endsWith(extension)); } -// Wallpaper picker — image / solid color / gradient tabs. -// -// Wallpapers round-trip through the legacyEditor envelope exactly as they did -// in the v2 editor: gradient strings stay as-is, colors as `#hex`, and image -// paths are restricted to `/wallpapers/...` or the user's own data: URLs from -// the upload custom flow. -function BackgroundSection() { +/** + * The "upload custom wallpaper" concern: a hidden `` plus the reader + * that turns the pick into a `data:` URL. + * + * A hook rather than part of `WallpaperPicker` because WHERE the input may be mounted is + * the caller's problem. `BackgroundSection` renders the picker inside a Popover, and + * opening the OS file dialog takes focus, which closes the Popover — an input mounted + * inside it would unmount mid-pick and drop the file. That caller mounts `input` outside + * the Popover; inline callers mount it next to the picker. + */ +function useWallpaperFileInput(onPicked: (dataUrl: string) => void): { + pick: () => void; + input: ReactNode; +} { const ts = useScopedT("settings"); - const { settings, set, setLive, commit, hasDocument } = useEditorSettings(); - const [pickerOpen, setPickerOpen] = useState(false); - // Seeded from what the project is actually using, so the picker opens on the tab the - // user is already in rather than always on Image. - const [tab, setTab] = useState<"image" | "color" | "gradient">( - () => classifyWallpaper(settings.wallpaper).kind, - ); - const fileInputRef = useRef(null); - const customUrls = useMemoCustomWallpapers(settings.wallpaper); - - // The custom gradient editor emits continuously while the user drags a - // color point / angle knob / brightness slider, so mirror the SliderCell - // model: preview live with setLive, then persist once the changes settle. - const gradientCommitTimer = useRef(null); - const handleGradientChange = useCallback( - (state: GradientEditorState) => { - setLive({ wallpaper: buildGradientFromEditor(state) }); - if (gradientCommitTimer.current !== null) { - window.clearTimeout(gradientCommitTimer.current); - } - gradientCommitTimer.current = window.setTimeout(() => { - gradientCommitTimer.current = null; - void commit(); - }, 400); - }, - [setLive, commit], - ); - useEffect( - () => () => { - if (gradientCommitTimer.current !== null) { - window.clearTimeout(gradientCommitTimer.current); - } - }, - [], - ); - - const isSelected = (value: string) => settings.wallpaper === value; - - const handleTabChange = (next: "image" | "color" | "gradient") => { - setTab(next); - }; - - const handlePickFile = () => { - if (!hasDocument) return; - fileInputRef.current?.click(); - }; + const ref = useRef(null); const handleFileSelected = (e: ChangeEvent) => { const file = e.target.files?.[0]; @@ -285,12 +246,40 @@ function BackgroundSection() { toast.error(ts("background.imageReadFailed")); return; } - void set({ wallpaper: dataUrl }); + onPicked(dataUrl); }; reader.onerror = () => toast.error(ts("background.imageReadFailed")); reader.readAsDataURL(file); }; + return { + pick: () => ref.current?.click(), + input: ( + + ), + }; +} + +// Wallpaper picker — image / solid color / gradient tabs. +// +// Wallpapers round-trip through the legacyEditor envelope exactly as they did +// in the v2 editor: gradient strings stay as-is, colors as `#hex`, and image +// paths are restricted to `/wallpapers/...` or the user's own data: URLs from +// the upload custom flow. +function BackgroundSection() { + const ts = useScopedT("settings"); + const { settings, set, setLive, commit, hasDocument } = useEditorSettings(); + const [pickerOpen, setPickerOpen] = useState(false); + const { pick: handlePickFile, input: fileInput } = useWallpaperFileInput((dataUrl) => + set({ wallpaper: dataUrl }), + ); + return ( <>
{ts("background.title")}
@@ -329,117 +318,21 @@ function BackgroundSection() { className="w-auto border-0 bg-transparent p-0 shadow-none" >
- {/* role="tab" + aria-selected are what make the tablist above mean - anything: without them a screen reader announces three plain - buttons and never says which one is current. */} -
- - - -
- {tab === "image" ? ( - <> - -
- {customUrls.map((url) => ( -
- - ) : tab === "color" ? ( - void set({ wallpaper: color })} - /> - ) : ( - <> -
- {GRAD_PRESETS.map((bg, i) => ( -
- {hasDocument ? : null} - - )} + void set({ wallpaper: url })} + onLiveChange={(url) => setLive({ wallpaper: url })} + onCommit={commit} + onPickFile={handlePickFile} + />
{/* Stays mounted OUTSIDE the popover: opening the OS file dialog takes focus, which closes the popover and would unmount the input mid-pick, dropping the file. It has no layout to cost us here. */} - + {fileInput} {/* Reads in the order it acts: pick a background, then blur it. Lived under "Effects" while that was a separate facet, which is how a control named "Blur BG" ended up in the tab that doesn't say background. */} @@ -613,6 +506,9 @@ export interface WallpaperPickerProps { onLiveChange?: (val: string) => void; onCommit?: () => void; updateNativeBackground?: boolean; + /** Opens the OS file dialog. The hidden `` it clicks belongs to the caller + * (see `useWallpaperFileInput`): where it may be mounted depends on the caller. */ + onPickFile: () => void; } export function WallpaperPicker({ @@ -622,10 +518,14 @@ export function WallpaperPicker({ onLiveChange, onCommit, updateNativeBackground = true, + onPickFile, }: WallpaperPickerProps) { const ts = useScopedT("settings"); - const [tab, setTab] = useState<"image" | "color" | "gradient">("image"); - const fileInputRef = useRef(null); + // Seeded from what is actually in use, so the picker opens on the tab the user is + // already in rather than always on Image. + const [tab, setTab] = useState<"image" | "color" | "gradient">( + () => classifyWallpaper(value).kind, + ); const customUrls = useMemoCustomWallpapers(value); const gradientCommitTimer = useRef(null); @@ -659,37 +559,16 @@ export function WallpaperPicker({ setTab(next); }; - const handlePickFile = () => { - if (!hasDocument) return; - fileInputRef.current?.click(); - }; - - const handleFileSelected = (e: ChangeEvent) => { - const file = e.target.files?.[0]; - e.target.value = ""; - if (!file) return; - if (!isSupportedBackgroundImage(file.type, file.name)) { - toast.error(ts("background.unsupportedImage")); - return; - } - const reader = new FileReader(); - reader.onload = () => { - const dataUrl = typeof reader.result === "string" ? reader.result : ""; - if (!dataUrl) { - toast.error(ts("background.imageReadFailed")); - return; - } - onChange(dataUrl); - }; - reader.onerror = () => toast.error(ts("background.imageReadFailed")); - reader.readAsDataURL(file); - }; - return ( <> + {/* role="tab" + aria-selected are what make the tablist mean anything: without + them a screen reader announces three plain buttons and never says which one + is current. */}
-
{customUrls.map((url) => (
{settings.webcamBackgroundMode === "blur" ? (
-
-
- {ts("layout.webcamBlurIntensity")} - {Math.round(settings.webcamBlurIntensity * 100)}% -
- { - const next = Number(e.target.value) / 100; - setLive({ webcamBlurIntensity: next }); - }} - onMouseUp={() => void commit()} - onTouchEnd={() => void commit()} - onKeyUp={() => void commit()} - /> -
+ setLive({ webcamBlurIntensity: next / 100 })} + onCommit={() => void commit()} + />
) : null} {settings.webcamBackgroundMode === "custom" ? ( @@ -2361,7 +2202,9 @@ export function LayoutPane() { onLiveChange={(url) => setLive({ webcamWallpaper: url })} onCommit={commit} updateNativeBackground={false} + onPickFile={handlePickWebcamWallpaper} /> + {webcamWallpaperInput}
) : null}
{ts("layout.webcamFraming")}
diff --git a/src/components/ai-edition/WebcamOverlay.test.tsx b/src/components/ai-edition/WebcamOverlay.test.tsx index 15c94be31..a7dd2d98c 100644 --- a/src/components/ai-edition/WebcamOverlay.test.tsx +++ b/src/components/ai-edition/WebcamOverlay.test.tsx @@ -90,6 +90,29 @@ function baseProps(currentTimeSec: number) { }; } +const baseLegacyEditor = { + wallpaper: "#000000", + shadowIntensity: 0, + borderRadius: 0, + padding: 0, + showBlur: false, + motionBlurAmount: 0, + webcamSizePreset: 25, + webcamMaskShape: "rectangle", + webcamLayoutPreset: "picture-in-picture", + webcamMirrored: false, + webcamReactiveZoom: false, + webcamWallpaper: "#ff0080", + webcamBlurIntensity: 0.5, + cursorShow: false, + cursorSize: 1, + cursorSmoothing: 0, + cursorMotionBlur: 0, + cursorClickBounce: 0, + cursorTheme: "default", + cursorClipToBounds: false, +}; + describe("WebcamOverlay (per-clip camera resolution)", () => { afterEach(() => { cleanup(); @@ -155,31 +178,13 @@ describe("WebcamOverlay (per-clip camera resolution)", () => { expect(container.querySelector("video")).toBeTruthy(); }); - it("renders background container when custom or blur background mode is active", () => { + // The background is painted INTO the segmentation canvas (colour, gradient and image + // alike), which is also what gets encoded for export — so the canvas being mounted is + // what "the effect is on" means. An extra CSS background layer used to sit behind it + // and was either invisible or a second, differently-painted copy of the same wallpaper. + it("mounts the segmentation canvas when a webcam background mode is active", () => { const doc = makeDocument(); - doc.legacyEditor = { - wallpaper: "#000000", - shadowIntensity: 0, - borderRadius: 0, - padding: 0, - showBlur: false, - motionBlurAmount: 0, - webcamSizePreset: 25, - webcamMaskShape: "rectangle", - webcamLayoutPreset: "picture-in-picture", - webcamMirrored: false, - webcamReactiveZoom: false, - webcamBackgroundMode: "custom", - webcamWallpaper: "#ff0080", - webcamBlurIntensity: 0.5, - cursorShow: false, - cursorSize: 1, - cursorSmoothing: 0, - cursorMotionBlur: 0, - cursorClickBounce: 0, - cursorTheme: "default", - cursorClipToBounds: false, - }; + doc.legacyEditor = { ...baseLegacyEditor, webcamBackgroundMode: "custom" }; useProjectStore.setState({ projectId: "proj_test", document: doc, @@ -193,10 +198,28 @@ describe("WebcamOverlay (per-clip camera resolution)", () => { }); const { container } = render(); - const video = container.querySelector("video"); - expect(video).toBeTruthy(); - const bg = container.querySelector("[aria-hidden='true']"); - expect(bg).toBeTruthy(); - expect((bg as HTMLElement)?.style.backgroundColor).toBe("rgb(255, 0, 128)"); + // The
- - ); -} - -function buildWebcamBackgroundStyle( - mode: WebcamBackgroundMode, - wallpaper: string, - borderRadius: number, - maskShape: WebcamMaskShape, -): React.CSSProperties | null { - if (mode === "none") return null; - const base: React.CSSProperties = { - position: "absolute", - inset: 0, - zIndex: 0, - borderRadius: `${borderRadius}px`, - clipPath: getCssClipPath(maskShape) ?? undefined, - overflow: "hidden", - }; - if (mode === "transparent") { - return { ...base, backgroundColor: "transparent" }; - } - if (mode === "blur") { - return { - ...base, - backdropFilter: "blur(12px)", - backgroundColor: "rgba(0, 0, 0, 0.2)", - }; - } - if (mode === "custom") { - const w = classifyWallpaper(wallpaper); - if (w.kind === "color") return { ...base, backgroundColor: w.value }; - if (w.kind === "gradient") - return { ...base, backgroundImage: w.value, backgroundSize: "cover" }; - const url = resolveImageWallpaperUrl(w.path); - if (!url) return base; - return { - ...base, - backgroundImage: `url(${url})`, - backgroundSize: "cover", - backgroundPosition: "center", - backgroundRepeat: "no-repeat", - }; - } - return null; } diff --git a/src/components/video-editor/types.ts b/src/components/video-editor/types.ts index b00ca5367..243252703 100644 --- a/src/components/video-editor/types.ts +++ b/src/components/video-editor/types.ts @@ -23,7 +23,16 @@ export const DEFAULT_WEBCAM_MASK_SHAPE: WebcamMaskShape = "rectangle"; export const DEFAULT_WEBCAM_MIRRORED = false; /** Background mode for the webcam feed (none, transparent AI cutout, blurred background, custom background). */ -export type WebcamBackgroundMode = "none" | "transparent" | "blur" | "custom"; +export const WEBCAM_BACKGROUND_MODES = ["none", "transparent", "blur", "custom"] as const; + +export type WebcamBackgroundMode = (typeof WEBCAM_BACKGROUND_MODES)[number]; + +/** A `legacyEditor` envelope is user-writable JSON: anything that is not one of the four + * known modes has to fall back, or `renderSegmentedWebcam` matches no branch and encodes + * a blank webcam track. */ +export function isWebcamBackgroundMode(value: unknown): value is WebcamBackgroundMode { + return (WEBCAM_BACKGROUND_MODES as readonly unknown[]).includes(value); +} export const DEFAULT_WEBCAM_BACKGROUND_MODE: WebcamBackgroundMode = "none"; diff --git a/src/lib/ai-edition/store/editorSettings.test.ts b/src/lib/ai-edition/store/editorSettings.test.ts index b43145d93..d7cfdfcf4 100644 --- a/src/lib/ai-edition/store/editorSettings.test.ts +++ b/src/lib/ai-edition/store/editorSettings.test.ts @@ -251,4 +251,22 @@ describe("patchEditorSettings", () => { expect(snap.webcamWallpaper).toBe("#ff0080"); expect(snap.webcamBlurIntensity).toBe(0.8); }); + + // `legacyEditor` is user-writable JSON. An unknown mode used to flow straight through + // as a WebcamBackgroundMode, so the export pre-render ran and `renderSegmentedWebcam` + // matched no branch — encoding a blank webcam track. + it("falls back to the default when the stored webcam background mode is unknown", () => { + const doc = { + ...baseDoc, + legacyEditor: { webcamBackgroundMode: "hologram" }, + } as typeof baseDoc; + expect(getEditorSettings(doc).webcamBackgroundMode).toBe("none"); + }); + + it("clamps a stored webcam blur intensity into 0..1", () => { + const tooHigh = { ...baseDoc, legacyEditor: { webcamBlurIntensity: 1000 } } as typeof baseDoc; + expect(getEditorSettings(tooHigh).webcamBlurIntensity).toBe(1); + const negative = { ...baseDoc, legacyEditor: { webcamBlurIntensity: -3 } } as typeof baseDoc; + expect(getEditorSettings(negative).webcamBlurIntensity).toBe(0); + }); }); diff --git a/src/lib/ai-edition/store/editorSettings.ts b/src/lib/ai-edition/store/editorSettings.ts index 455f013ff..4892b577f 100644 --- a/src/lib/ai-edition/store/editorSettings.ts +++ b/src/lib/ai-edition/store/editorSettings.ts @@ -25,6 +25,7 @@ import { DEFAULT_WEBCAM_POSITION, DEFAULT_WEBCAM_REACTIVE_ZOOM, DEFAULT_WEBCAM_SIZE_PRESET, + isWebcamBackgroundMode, type WebcamBackgroundMode, type WebcamLayoutPreset, type WebcamMaskShape, @@ -34,6 +35,7 @@ import { import { DEFAULT_CURSOR_THEME_ID } from "@/lib/cursor/cursorThemes"; import { DEFAULT_WALLPAPER } from "@/lib/wallpaper"; import type { AspectRatio } from "@/utils/aspectRatioUtils"; +import { clamp01 } from "@/utils/math"; import type { AxcutDocument } from "../schema"; // ponytail: avoid dragging in lib/exporter full surface here — we only @@ -245,12 +247,14 @@ export function getEditorSettings(doc: AxcutDocument | null | undefined): Editor AUDIO_GAIN_DB_LIMIT, Math.max(-AUDIO_GAIN_DB_LIMIT, num(legacy?.audioGainDb, 0)), ), - webcamBackgroundMode: - legacy?.webcamBackgroundMode ?? DEFAULT_EDITOR_SETTINGS.webcamBackgroundMode, + webcamBackgroundMode: isWebcamBackgroundMode(legacy?.webcamBackgroundMode) + ? legacy.webcamBackgroundMode + : DEFAULT_EDITOR_SETTINGS.webcamBackgroundMode, webcamWallpaper: str(legacy?.webcamWallpaper, DEFAULT_EDITOR_SETTINGS.webcamWallpaper), - webcamBlurIntensity: num( - legacy?.webcamBlurIntensity, - DEFAULT_EDITOR_SETTINGS.webcamBlurIntensity, + // Same 0-1 range the slider offers; unclamped, a stored 1000 reaches + // `blur(25000px)` on the preview canvas and wedges the compositing thread. + webcamBlurIntensity: clamp01( + num(legacy?.webcamBlurIntensity, DEFAULT_EDITOR_SETTINGS.webcamBlurIntensity), ), cursor, cursorShow: bool(legacy?.cursorShow, DEFAULT_EDITOR_SETTINGS.cursorShow), diff --git a/src/lib/ai-edition/webcamSegmentation.test.ts b/src/lib/ai-edition/webcamSegmentation.test.ts new file mode 100644 index 000000000..c4d49f366 --- /dev/null +++ b/src/lib/ai-edition/webcamSegmentation.test.ts @@ -0,0 +1,177 @@ +// @vitest-environment jsdom +// +// The MediaPipe result channel is a SINGLE callback slot: `onResults` holds one +// listener and `send()` gives no way to tell two outstanding results apart. These +// tests pin the protocol that makes that safe — one listener for the segmenter's +// lifetime, one send in flight at a time, and every caller's promise settled +// exactly once — because getting it wrong strands a promise, and a stranded +// promise silently freezes the preview instead of failing. + +import { beforeEach, describe, expect, it, vi } from "vitest"; + +type Listener = (results: { image: unknown; segmentationMask: unknown }) => void; + +/** Deliveries are queued so a test can control WHEN a send produces its result. */ +const pendingSends: Array<() => void> = []; +let listener: Listener | null = null; +let sendCount = 0; + +vi.mock("@mediapipe/selfie_segmentation", () => { + class FakeSelfieSegmentation { + setOptions() { + // options do not affect the protocol under test + } + initialize() { + return Promise.resolve(); + } + onResults(fn: Listener) { + listener = fn; + } + send() { + sendCount += 1; + pendingSends.push(() => { + listener?.({ + image: makeSource(640, 360), + segmentationMask: makeSource(256, 144), + }); + }); + return Promise.resolve(); + } + } + return { SelfieSegmentation: FakeSelfieSegmentation }; +}); + +/** Stand-in for a MediaPipe `GpuBuffer` — deliberately a DIFFERENT resolution for + * the mask than the image, which is the real behaviour of the landscape model. */ +function makeSource(width: number, height: number) { + const el = window.document.createElement("canvas"); + el.width = width; + el.height = height; + return el; +} + +function flushOneSend() { + const next = pendingSends.shift(); + next?.(); +} + +function makeVideo(width = 640, height = 360): HTMLVideoElement { + const video = window.document.createElement("video"); + Object.defineProperty(video, "videoWidth", { value: width, configurable: true }); + Object.defineProperty(video, "videoHeight", { value: height, configurable: true }); + return video; +} + +// jsdom has no 2D backend; a recording stub is enough since these tests assert on +// the promise protocol and the source rects, not on pixels. +interface DrawCall { + args: unknown[]; +} +const drawCalls: DrawCall[] = []; + +function installCanvasStub() { + HTMLCanvasElement.prototype.getContext = vi.fn(function stubGetContext(this: HTMLCanvasElement) { + return { + canvas: this, + filter: "none", + fillStyle: "", + globalCompositeOperation: "source-over", + save: () => undefined, + restore: () => undefined, + clearRect: () => undefined, + fillRect: () => undefined, + createLinearGradient: () => ({ addColorStop: () => undefined }), + drawImage: (...args: unknown[]) => { + drawCalls.push({ args }); + }, + }; + }) as unknown as HTMLCanvasElement["getContext"]; +} + +describe("renderSegmentedWebcam (MediaPipe result channel)", () => { + beforeEach(() => { + // `listener` is deliberately NOT reset: `getSelfieSegmenter` caches the segmenter, + // so `onResults` is registered once for the whole file — which is the property + // under test. Clearing it here would orphan every later delivery. + drawCalls.length = 0; + sendCount = 0; + installCanvasStub(); + }); + + it("resolves the caller's promise when MediaPipe delivers a result", async () => { + const { renderSegmentedWebcam } = await import("./webcamSegmentation"); + const canvas = window.document.createElement("canvas"); + + let settled = false; + const done = renderSegmentedWebcam(makeVideo(), canvas, { + mode: "blur", + blurIntensity: 0.5, + }).then(() => { + settled = true; + }); + + // Let the queue reach `send()` before delivering. + await vi.waitFor(() => expect(sendCount).toBe(1)); + expect(settled).toBe(false); + flushOneSend(); + await done; + expect(settled).toBe(true); + }); + + // The regression this file exists for: two overlapping calls used to share one + // `onResults` slot, so the first caller's promise was never settled and the + // preview's in-flight guard stayed stuck forever. + it("settles BOTH promises when two renders overlap", async () => { + const { renderSegmentedWebcam } = await import("./webcamSegmentation"); + const canvasA = window.document.createElement("canvas"); + const canvasB = window.document.createElement("canvas"); + + const first = renderSegmentedWebcam(makeVideo(), canvasA, { + mode: "transparent", + blurIntensity: 0, + }); + const second = renderSegmentedWebcam(makeVideo(), canvasB, { + mode: "transparent", + blurIntensity: 0, + }); + + // Sends are serialised: the second must not start until the first is delivered. + await vi.waitFor(() => expect(sendCount).toBe(1)); + flushOneSend(); + await first; + + await vi.waitFor(() => expect(sendCount).toBe(2)); + flushOneSend(); + await second; + + await expect(Promise.all([first, second])).resolves.toBeDefined(); + }); + + it("sizes the canvas to the crop and reads each source at its own resolution", async () => { + const { renderSegmentedWebcam } = await import("./webcamSegmentation"); + const canvas = window.document.createElement("canvas"); + + const done = renderSegmentedWebcam(makeVideo(640, 360), canvas, { + mode: "transparent", + blurIntensity: 0, + crop: { x: 0.25, y: 0.5, width: 0.5, height: 0.5 }, + }); + await vi.waitFor(() => expect(sendCount).toBe(1)); + flushOneSend(); + await done; + + expect(canvas.width).toBe(320); + expect(canvas.height).toBe(180); + + // The mask is 256x144 while the image is 640x360, so a source rect computed from + // the video's dimensions would read the wrong region out of the mask. + const maskDraw = drawCalls.find( + (c) => (c.args[0] as HTMLCanvasElement)?.width === 256 && c.args.length === 9, + ); + const imageDraw = drawCalls.find( + (c) => (c.args[0] as HTMLCanvasElement)?.width === 640 && c.args.length === 9, + ); + expect(maskDraw?.args.slice(1, 5)).toEqual([64, 72, 128, 72]); + expect(imageDraw?.args.slice(1, 5)).toEqual([160, 180, 320, 180]); + }); +}); diff --git a/src/lib/ai-edition/webcamSegmentation.ts b/src/lib/ai-edition/webcamSegmentation.ts index 8be27dfa0..62627c5f9 100644 --- a/src/lib/ai-edition/webcamSegmentation.ts +++ b/src/lib/ai-edition/webcamSegmentation.ts @@ -1,23 +1,47 @@ // Neural background segmentation for webcam feed using Google MediaPipe SelfieSegmentation. // Runs locally via WebGL/WASM in real-time. -import { SelfieSegmentation } from "@mediapipe/selfie_segmentation"; -import type { WebcamBackgroundMode } from "@/components/video-editor/types"; +import { type Results, SelfieSegmentation } from "@mediapipe/selfie_segmentation"; +import { BufferTarget, CanvasSource, Mp4OutputFormat, Output, WebMOutputFormat } from "mediabunny"; +import { toFileUrl } from "@/components/video-editor/projectPersistence"; +import { + type CropRegion, + DEFAULT_CROP_REGION, + type WebcamBackgroundMode, +} from "@/components/video-editor/types"; +import getAssetPath from "@/lib/assetPath"; +import { + getLinearGradientPoints, + parseCssGradient, + resolveLinearGradientAngle, +} from "@/lib/exporter/gradientParser"; +import { classifyWallpaper, resolveImageWallpaperUrl } from "@/lib/wallpaper"; +import type { CompositorClipInput } from "@/native/contracts"; let segmenterInstance: SelfieSegmentation | null = null; let initPromise: Promise | null = null; +let lastInitFailure: { at: number; error: unknown } | null = null; + +/** Init is retryable, but the preview asks for a segmenter on every rAF tick — without a + * cooldown a persistent failure (missing WASM, no GPU) would construct a new + * `SelfieSegmentation` 60 times a second. */ +const INIT_RETRY_COOLDOWN_MS = 5_000; export function getSelfieSegmenter(): Promise { if (segmenterInstance) return Promise.resolve(segmenterInstance); if (initPromise) return initPromise; + if (lastInitFailure && Date.now() - lastInitFailure.at < INIT_RETRY_COOLDOWN_MS) { + return Promise.reject(lastInitFailure.error); + } - initPromise = new Promise((resolve, reject) => { + const pending = new Promise((resolve, reject) => { try { const segmenter = new SelfieSegmentation({ - locateFile: (file) => { - // In Vite dev & Electron build, assets are in /mediapipe/selfie_segmentation/ - return `/mediapipe/selfie_segmentation/${file}`; - }, + // The renderer runs from `file://` in a packaged build, so a root-absolute + // "/mediapipe/…" would resolve to the filesystem root and 404. `getAssetPath` + // is the repo's one way to address `public/` from both dev (http) and packaged + // (file:// + electronAPI.assetBaseUrl) — same path wallpapers take. + locateFile: (file) => getAssetPath(`mediapipe/selfie_segmentation/${file}`), }); segmenter.setOptions({ @@ -25,6 +49,18 @@ export function getSelfieSegmenter(): Promise { selfieMode: false, }); + // One listener for the lifetime of the segmenter. `onResults` holds a SINGLE + // callback, so re-registering per frame lets a second caller overwrite the first + // and strand its promise forever. Results are routed to whoever is at the head of + // `sendQueue` instead. + // Deliver to whoever is at the head of the queue; `settle` is what clears the + // slot. (Clearing it HERE would make `settle`'s own identity guard fail and + // strand every frame.) A second delivery for the same send finds an empty slot + // and is ignored. + segmenter.onResults((results) => { + pendingResults?.(results); + }); + segmenter .initialize() .then(() => { @@ -41,15 +77,81 @@ export function getSelfieSegmenter(): Promise { } }); + // A rejected `initPromise` cached forever makes the first failure permanent for the + // session; clearing it lets a later call retry (the assets may just not have been + // reachable yet), while `lastInitFailure` keeps that retry from spinning per frame. + initPromise = pending.then( + (segmenter) => { + lastInitFailure = null; + return segmenter; + }, + (err) => { + initPromise = null; + lastInitFailure = { at: Date.now(), error: err }; + throw err; + }, + ); return initPromise; } export interface SegmentationRenderOptions { mode: WebcamBackgroundMode; blurIntensity: number; - threshold?: number; - feather?: number; wallpaper?: string; + /** Source sub-rect (fractions of the frame) to render, mirroring the native + * `webcam_crop`. Omit during export: native applies the crop itself to the + * pre-rendered track, and applying it here too would crop twice. */ + crop?: CropRegion; +} + +/** Head of the single-slot result channel — see the `onResults` comment above. */ +let pendingResults: ((results: Results | null) => void) | null = null; +/** Serialises `send()` calls: MediaPipe has one result channel, so two overlapping + * sends cannot be told apart. Preview rAF, seek re-renders and the export loop all + * queue here. */ +let sendQueue: Promise = Promise.resolve(); + +/** A frame MediaPipe silently drops would otherwise wedge the queue for good. */ +const SEGMENTATION_TIMEOUT_MS = 10_000; + +function runSegmentation(video: HTMLVideoElement): Promise { + const run = sendQueue.then(async () => { + const segmenter = await getSelfieSegmenter(); + return new Promise((resolve) => { + const settle = (results: Results | null) => { + if (pendingResults !== settle) return; + pendingResults = null; + clearTimeout(timer); + resolve(results); + }; + const timer = setTimeout(() => { + console.warn("[WebcamSegmentation] segmentation timed out; dropping frame"); + settle(null); + }, SEGMENTATION_TIMEOUT_MS); + pendingResults = settle; + segmenter.send({ image: video }).catch((err) => { + console.warn("[WebcamSegmentation] segmenter.send failed:", err); + settle(null); + }); + }); + }); + // Keep the queue alive even when one run rejects, or every later frame is dropped. + sendQueue = run.catch(() => undefined); + return run; +} + +/** Source sub-rect in a `GpuBuffer`'s OWN pixels. The mask comes back at the model's + * resolution (144x256 for the landscape model), not the video's, so a rect computed + * from `video.videoWidth` would crop the wrong region out of it. */ +function sourceRect(src: Results["image"], crop: CropRegion): [number, number, number, number] { + const iw = "naturalWidth" in src ? src.naturalWidth : src.width; + const ih = "naturalHeight" in src ? src.naturalHeight : src.height; + return [ + Math.round(crop.x * iw), + Math.round(crop.y * ih), + Math.max(1, Math.round(crop.width * iw)), + Math.max(1, Math.round(crop.height * ih)), + ]; } let tempCanvas: HTMLCanvasElement | null = null; @@ -58,113 +160,211 @@ let tempCtx: CanvasRenderingContext2D | null = null; function getTempCanvas( width: number, height: number, -): { canvas: HTMLCanvasElement; ctx: CanvasRenderingContext2D } { +): { canvas: HTMLCanvasElement; ctx: CanvasRenderingContext2D } | null { if (!tempCanvas) { tempCanvas = document.createElement("canvas"); tempCtx = tempCanvas.getContext("2d", { willReadFrequently: false }); } + if (!tempCtx) return null; if (tempCanvas.width !== width || tempCanvas.height !== height) { tempCanvas.width = width; tempCanvas.height = height; } - return { canvas: tempCanvas, ctx: tempCtx! }; + return { canvas: tempCanvas, ctx: tempCtx }; +} + +const wallpaperImageCache = new Map(); + +/** Loads (and caches) an image wallpaper. Resolves to null when the path is + * unsafe or the file cannot be decoded — the caller then leaves the background + * unpainted rather than failing the whole render. */ +async function loadWallpaperImage(path: string): Promise { + const cached = wallpaperImageCache.get(path); + if (cached) return cached; + let url: string; + try { + url = resolveImageWallpaperUrl(path); + } catch (err) { + console.warn("[WebcamSegmentation] Unusable image wallpaper:", err); + return null; + } + return new Promise((resolve) => { + const img = new Image(); + img.onload = () => { + wallpaperImageCache.set(path, img); + resolve(img); + }; + img.onerror = () => resolve(null); + img.src = url; + }); +} + +/** + * Paints a wallpaper string behind the subject, covering `w`x`h`. + * + * Dispatches through `classifyWallpaper` — the same classifier the picker and the + * scene description use — so every value the UI can produce (colour, gradient, + * bundled `/wallpapers/…` path, uploaded `data:` URL) reaches the encoded track. + * A raw `startsWith("#")` test silently dropped gradients and images, which then + * exported as black. + */ +type BackgroundPainter = (ctx: CanvasRenderingContext2D, w: number, h: number) => void; + +/** + * Resolves a wallpaper string into a SYNCHRONOUS painter. + * + * Async work (decoding an image wallpaper) happens here, before the segmentation + * result is in hand, so that everything after it — which writes the shared module-level + * `tempCanvas` — runs without an await that another render could interleave into. + * + * Dispatches through `classifyWallpaper`, the same classifier the picker and the scene + * description use, so every value the UI can produce (colour, gradient, bundled + * `/wallpapers/…` path, uploaded `data:` URL) reaches the encoded track. A raw + * `startsWith("#")` test silently dropped gradients and images, which exported as black. + */ +async function resolveBackgroundPainter(wallpaper: string): Promise { + const classified = classifyWallpaper(wallpaper); + + if (classified.kind === "color") { + return (ctx, w, h) => { + ctx.fillStyle = classified.value; + ctx.fillRect(0, 0, w, h); + }; + } + + if (classified.kind === "gradient") { + const parsed = parseCssGradient(classified.value); + if (!parsed || parsed.stops.length === 0) return null; + // Same angle convention the native gradient uses (0deg = up, 90deg = right). + const angle = resolveLinearGradientAngle(parsed.descriptor); + return (ctx, w, h) => { + const { x0, y0, x1, y1 } = getLinearGradientPoints(angle, w, h); + const grad = ctx.createLinearGradient(x0, y0, x1, y1); + for (const stop of parsed.stops) { + grad.addColorStop(Math.min(1, Math.max(0, stop.offset)), stop.color); + } + ctx.fillStyle = grad; + ctx.fillRect(0, 0, w, h); + }; + } + + const img = await loadWallpaperImage(classified.path); + if (!img?.naturalWidth || !img.naturalHeight) return null; + return (ctx, w, h) => { + // cover-fit, matching `draw_image_bg` on the native side. + const scale = Math.max(w / img.naturalWidth, h / img.naturalHeight); + const dw = img.naturalWidth * scale; + const dh = img.naturalHeight * scale; + ctx.drawImage(img, (w - dw) / 2, (h - dh) / 2, dw, dh); + }; } /** * Applies neural segmentation on the given video frame and renders into outputCanvas. + * + * Returns false when nothing was drawn (frame not ready, no 2D context, or MediaPipe + * dropped the frame). The live preview can ignore that — it will try again next tick — + * but the export MUST NOT, or a dropped frame is silently encoded as a duplicate of the + * previous one (or a blank first frame). */ export async function renderSegmentedWebcam( video: HTMLVideoElement, outputCanvas: HTMLCanvasElement, options: SegmentationRenderOptions, -): Promise { - if (video.videoWidth === 0 || video.videoHeight === 0) return; +): Promise { + if (video.videoWidth === 0 || video.videoHeight === 0) return false; - const segmenter = await getSelfieSegmenter(); const outCtx = outputCanvas.getContext("2d"); - if (!outCtx) return; + if (!outCtx) return false; - const w = video.videoWidth; - const h = video.videoHeight; + // The native path crops first and cover-fits afterwards; CSS `object-fit: cover` on + // the canvas supplies that second step, so honouring the crop here is what makes + // preview and export agree. + const crop = options.crop ?? DEFAULT_CROP_REGION; + const w = Math.max(1, Math.round(crop.width * video.videoWidth)); + const h = Math.max(1, Math.round(crop.height * video.videoHeight)); if (outputCanvas.width !== w || outputCanvas.height !== h) { outputCanvas.width = w; outputCanvas.height = h; } - return new Promise((resolve) => { - segmenter.onResults((results) => { - const { canvas: maskCanvas, ctx: maskCtx } = getTempCanvas(w, h); - - outCtx.save(); - outCtx.clearRect(0, 0, w, h); - - if (options.mode === "transparent") { - // 1. Draw segmentation mask to temp canvas - maskCtx.save(); - maskCtx.clearRect(0, 0, w, h); - maskCtx.drawImage(results.segmentationMask, 0, 0, w, h); - // 2. Composite video on top of mask - maskCtx.globalCompositeOperation = "source-in"; - maskCtx.drawImage(results.image, 0, 0, w, h); - maskCtx.restore(); - - // 3. Draw cut out person to output - outCtx.drawImage(maskCanvas, 0, 0, w, h); - } else if (options.mode === "blur") { - // 1. Draw blurred background - const intensity = typeof options.blurIntensity === "number" ? options.blurIntensity : 0.5; - const blurPx = Math.round(intensity * 25); - if (blurPx > 0) { - outCtx.filter = `blur(${blurPx}px)`; - } - outCtx.drawImage(results.image, 0, 0, w, h); - outCtx.filter = "none"; - - // 2. Mask the sharp person - maskCtx.save(); - maskCtx.clearRect(0, 0, w, h); - maskCtx.drawImage(results.segmentationMask, 0, 0, w, h); - maskCtx.globalCompositeOperation = "source-in"; - maskCtx.drawImage(results.image, 0, 0, w, h); - maskCtx.restore(); - - // 3. Composite person over blurred background - outCtx.drawImage(maskCanvas, 0, 0, w, h); - } else if (options.mode === "custom") { - // 1. Draw custom background behind the person - if (options.wallpaper) { - if (options.wallpaper.startsWith("#") || options.wallpaper.startsWith("rgb")) { - outCtx.fillStyle = options.wallpaper; - outCtx.fillRect(0, 0, w, h); - } - } - - // 2. Draw person cut out to temp canvas - maskCtx.save(); - maskCtx.clearRect(0, 0, w, h); - maskCtx.drawImage(results.segmentationMask, 0, 0, w, h); - maskCtx.globalCompositeOperation = "source-in"; - maskCtx.drawImage(results.image, 0, 0, w, h); - maskCtx.restore(); - - // 3. Draw cut out person over the custom background - outCtx.drawImage(maskCanvas, 0, 0, w, h); - } + // Resolved BEFORE the segmentation await so the drawing section below — which owns + // the shared `tempCanvas` — contains no await for another render to interleave into. + const paintBackground = + options.mode === "custom" && options.wallpaper + ? await resolveBackgroundPainter(options.wallpaper) + : null; + + const results = await runSegmentation(video); + if (!results) return false; + + const temp = getTempCanvas(w, h); + if (!temp) return false; + const { canvas: maskCanvas, ctx: maskCtx } = temp; + + const imageRect = sourceRect(results.image, crop); + const maskRect = sourceRect(results.segmentationMask, crop); + const drawCropped = ( + ctx: CanvasRenderingContext2D, + src: Results["image"], + [rx, ry, rw, rh]: readonly [number, number, number, number], + ) => { + ctx.drawImage(src, rx, ry, rw, rh, 0, 0, w, h); + }; + + // The cut-out subject: the mask carries the alpha, `source-in` keeps only the + // video pixels that fall inside it. Identical in all three modes. + const drawCutout = () => { + maskCtx.save(); + maskCtx.clearRect(0, 0, w, h); + drawCropped(maskCtx, results.segmentationMask, maskRect); + maskCtx.globalCompositeOperation = "source-in"; + drawCropped(maskCtx, results.image, imageRect); + maskCtx.restore(); + }; + + outCtx.save(); + outCtx.clearRect(0, 0, w, h); + + if (options.mode === "transparent") { + drawCutout(); + outCtx.drawImage(maskCanvas, 0, 0, w, h); + } else if (options.mode === "blur") { + const intensity = typeof options.blurIntensity === "number" ? options.blurIntensity : 0.5; + const blurPx = Math.round(Math.min(1, Math.max(0, intensity)) * 25); + if (blurPx > 0) { + outCtx.filter = `blur(${blurPx}px)`; + } + drawCropped(outCtx, results.image, imageRect); + outCtx.filter = "none"; - outCtx.restore(); - resolve(); - }); + drawCutout(); + outCtx.drawImage(maskCanvas, 0, 0, w, h); + } else if (options.mode === "custom") { + paintBackground?.(outCtx, w, h); - segmenter.send({ image: video }).catch((err) => { - console.warn("[WebcamSegmentation] segmenter.send failed:", err); - resolve(); - }); - }); + drawCutout(); + outCtx.drawImage(maskCanvas, 0, 0, w, h); + } + + outCtx.restore(); + return true; } -import { BufferTarget, CanvasSource, Mp4OutputFormat, Output, WebMOutputFormat } from "mediabunny"; -import { toFileUrl } from "@/components/video-editor/projectPersistence"; +/** Rejects once `ms` elapses, so a seek or a decode that never settles fails the + * export instead of hanging it. */ +function withTimeout(work: Promise, ms: number, message: string): Promise { + let timer: ReturnType | undefined; + return Promise.race([ + work, + new Promise((_resolve, reject) => { + timer = setTimeout(() => reject(new Error(message)), ms); + }), + ]).finally(() => clearTimeout(timer)) as Promise; +} + +const SEEK_TIMEOUT_MS = 15_000; /** * Pre-renders and encodes the full webcam video track using MediaPipe neural segmentation @@ -183,14 +383,26 @@ export async function prepareSegmentedWebcamTrack( video.playsInline = true; video.crossOrigin = "anonymous"; - await new Promise((resolve, reject) => { - video.onloadedmetadata = () => resolve(); - video.onerror = () => reject(new Error("Failed to load webcam video metadata")); - }); + await withTimeout( + new Promise((resolve, reject) => { + video.onloadedmetadata = () => resolve(); + video.onerror = () => reject(new Error("Failed to load webcam video metadata")); + }), + SEEK_TIMEOUT_MS, + "Timed out loading webcam video metadata", + ); const width = video.videoWidth || 1280; const height = video.videoHeight || 720; - const duration = video.duration || 1; + // MediaRecorder WebM files report `Infinity` when the Duration header is missing + // (see `repairRecordingContainer`, which patches it only for streamed takes). It is + // truthy, so `|| 1` let it through and the frame loop below never terminated. + const duration = Number.isFinite(video.duration) && video.duration > 0 ? video.duration : 0; + if (duration <= 0) { + throw new Error( + "Webcam track has no usable duration, so the background effect cannot be pre-rendered", + ); + } const fps = 30; const totalFrames = Math.max(1, Math.round(duration * fps)); @@ -214,21 +426,44 @@ export async function prepareSegmentedWebcamTrack( output.addVideoTrack(videoSource); await output.start(); - for (let i = 0; i < totalFrames; i++) { - const time = i / fps; - video.currentTime = time; - await new Promise((resolve) => { - video.onseeked = () => resolve(); - }); - - await renderSegmentedWebcam(video, canvas, options); - await videoSource.add(time, 1 / fps); - onProgress?.((i + 1) / totalFrames); + // The crop is deliberately NOT forwarded: native applies `webcam_crop` to this + // pre-rendered track itself, and cropping here too would apply it twice. + const renderOptions: SegmentationRenderOptions = { ...options, crop: undefined }; + + let sourceClosed = false; + try { + for (let i = 0; i < totalFrames; i++) { + const time = i / fps; + await withTimeout( + new Promise((resolve, reject) => { + video.onseeked = () => resolve(); + video.onerror = () => reject(new Error(`Failed to decode webcam frame at ${time}s`)); + video.currentTime = time; + }), + SEEK_TIMEOUT_MS, + `Timed out seeking the webcam track to ${time}s`, + ); + + const drawn = await renderSegmentedWebcam(video, canvas, renderOptions); + if (!drawn) { + throw new Error(`Background segmentation produced no frame at ${time.toFixed(2)}s`); + } + await videoSource.add(time, 1 / fps); + onProgress?.((i + 1) / totalFrames); + } + // Close BEFORE finalize: the muxer flushes a source that is done, not one that + // might still receive frames. + videoSource.close(); + sourceClosed = true; + await output.finalize(); + } finally { + // The encoder and the decoding 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�KjsZ%WUv$omBjdPfV%ln?UF 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 None: + model = onnx.load(str(src)) + graph = model.graph + + for opset in model.opset_import: + if opset.domain in ("", "ai.onnx"): + opset.version = 16 # HardSwish is opset 14+ + + init = {i.name: numpy_helper.to_array(i) for i in graph.initializer} + custom = next(n for n in graph.node if n.op_type == "TFL_Convolution2DTransposeBias") + feed_transpose = next(n for n in graph.node if n.output[0] == custom.input[0]) + source = feed_transpose.input[0] # NCHW feature map + sigmoid = next(n for n in graph.node if custom.output[0] in n.input) + assert sigmoid.op_type == "Sigmoid", sigmoid.op_type + + weights = init[custom.input[1]] # [C_out, kH, kW, C_in] + assert weights.shape == (1, 2, 2, 16), weights.shape + graph.initializer.append( + numpy_helper.from_array(np.transpose(weights, (3, 0, 1, 2)).copy(), "convT_W") + ) + + out_name = graph.output[0].name + nodes = [n for n in graph.node if n not in (feed_transpose, custom, sigmoid)] + nodes += [ + helper.make_node( + "ConvTranspose", [source, "convT_W", custom.input[2]], ["convT_out"], + name="conv2d_transpose_native", + kernel_shape=[2, 2], strides=[2, 2], pads=[0, 0, 0, 0], + ), + helper.make_node("Sigmoid", ["convT_out"], ["mask_nchw"], name="segment_sigmoid"), + helper.make_node("Transpose", ["mask_nchw"], [out_name], name="mask_to_nhwc", + perm=[0, 2, 3, 1]), + ] + del graph.node[:] + graph.node.extend(nodes) + del graph.value_info[:] + + model = shape_inference.infer_shapes(model, strict_mode=True) + onnx.checker.check_model(model, full_check=True) + onnx.save(model, str(dst)) + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("variant", choices=sorted(VARIANTS), nargs="?", default="landscape") + args = parser.parse_args() + + tflite_name, onnx_name = VARIANTS[args.variant] + tflite = MODELS / tflite_name + if not tflite.exists(): + print(f"missing source model: {tflite}", file=sys.stderr) + return 1 + + raw = MODELS / f".{onnx_name}.raw" + subprocess.run( + [sys.executable, "-m", "tf2onnx.convert", "--tflite", str(tflite), + "--output", str(raw), "--opset", "13"], + check=True, + ) + # tf2onnx exits 0 while leaving 12 unloadable operators behind -- see the module docstring. + repair(raw, MODELS / onnx_name) + raw.unlink(missing_ok=True) + + model = onnx.load(str(MODELS / onnx_name)) + gi, go = model.graph.input[0], model.graph.output[0] + shape = lambda v: [d.dim_value for d in v.type.tensor_type.shape.dim] + leftover = [n.op_type for n in model.graph.node if n.domain not in ("", "ai.onnx")] + print(f"wrote {MODELS / onnx_name}") + print(f" input {gi.name} {shape(gi)}") + print(f" output {go.name} {shape(go)}") + print(f" nodes {len(model.graph.node)} non-standard ops: {leftover or 'none'}") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) From 673df34ae54b1c08cd15487774c2210474efab40 Mon Sep 17 00:00:00 2001 From: EtienneLescot Date: Wed, 26 Aug 2026 00:36:44 +0200 Subject: [PATCH 12/15] feat(webcam): load the segmentation model and produce the mask MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wires ONNX Runtime to the mask slot the previous commit opened. `Segmenter::run` takes an RGB frame already scaled to the model's 256x144 and returns the byte mask `Compositor::set_webcam_mask` expects. Resizing stays with the caller, which has the frame on the GPU and does it better than a CPU loop would. Two settings are not defaults and should not become them. `intra_op_num_threads` is pinned to 2: measured on the 4-core target, an ORT session left at its default takes every core and produces a 24.9 ms p95 — a dropped frame each time it fires. Two threads land within 8 % of the best p10 with less than half the tail and leave two cores to the compositor. `inter_op_num_threads` is 1 because the graph is a chain with nothing to parallelise between branches. Behind a `segmentation` feature, off by default, because the ONNX Runtime binaries are a packaging decision across five distribution channels that has not been taken. The mask-to-shader path compiles either way; without a mask the effect simply stays off. `load-dynamic` rather than `download-binaries`, and that is not incidental: `download-binaries` fetches a static build with DirectML linked in — DirectML.lib and the DmlOperator objects show up in the link line — which is exactly the dependency choosing the CPU EP exists to delete. Dynamic loading leaves the library to be staged per platform, the way whisper-stt already stages its own. Tests run real inference through the vendored model: a wrong-sized frame is refused rather than read out of bounds, and a uniform frame comes back overwhelmingly background rather than noise or a solid fill. 142 pass with the feature, 139 without. --- crates/Cargo.lock | 139 ++++++++++++++++++- crates/Cargo.toml | 20 +++ crates/compositor/Cargo.toml | 10 ++ crates/compositor/src/lib.rs | 4 + crates/compositor/src/segmentation.rs | 186 ++++++++++++++++++++++++++ 5 files changed, 354 insertions(+), 5 deletions(-) create mode 100644 crates/compositor/src/segmentation.rs diff --git a/crates/Cargo.lock b/crates/Cargo.lock index dbe2f253a..940c3b7dc 100644 --- a/crates/Cargo.lock +++ b/crates/Cargo.lock @@ -44,7 +44,7 @@ version = "0.38.0+1.3.281" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" dependencies = [ - "libloading", + "libloading 0.8.9", ] [[package]] @@ -180,7 +180,7 @@ checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", - "libloading", + "libloading 0.8.9", ] [[package]] @@ -652,7 +652,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" dependencies = [ "libc", - "libloading", + "libloading 0.8.9", "pkg-config", ] @@ -678,6 +678,16 @@ dependencies = [ "windows-link", ] +[[package]] +name = "libloading" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "754ca22de805bb5744484a5b151a9e1a8e837d5dc232c2d7d8c2e3492edc8b60" +dependencies = [ + "cfg-if", + "windows-link", +] + [[package]] name = "libm" version = "0.2.16" @@ -720,6 +730,16 @@ dependencies = [ "libc", ] +[[package]] +name = "matrixmultiply" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f607c237553f086e7043417a51df26b2eb899d3caff94e6a67592ff992fedc7" +dependencies = [ + "autocfg", + "rawpointer", +] + [[package]] name = "memchr" version = "2.8.3" @@ -867,7 +887,37 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "427802e8ec3a734331fec1035594a210ce1ff4dc5bc1950530920ab717964ea3" dependencies = [ - "libloading", + "libloading 0.8.9", +] + +[[package]] +name = "ndarray" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841" +dependencies = [ + "matrixmultiply", + "num-complex", + "num-integer", + "num-traits", + "portable-atomic", + "portable-atomic-util", + "rawpointer", +] + +[[package]] +name = "ndarray" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520080814a7a6b4a6e9070823bb24b4531daac8c4627e08ba5de8c5ef2f2752d" +dependencies = [ + "matrixmultiply", + "num-complex", + "num-integer", + "num-traits", + "portable-atomic", + "portable-atomic-util", + "rawpointer", ] [[package]] @@ -889,6 +939,24 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b" +dependencies = [ + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -925,7 +993,9 @@ dependencies = [ "cosmic-text", "image", "metal 0.29.0", + "ndarray 0.16.1", "objc", + "ort", "pollster", "serde", "serde_json", @@ -942,6 +1012,25 @@ dependencies = [ "num-traits", ] +[[package]] +name = "ort" +version = "2.0.0-rc.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4336a1e2b38848325241c72889086886004e589b7c74f335e60a8e8db5138a0b" +dependencies = [ + "libloading 0.9.0", + "ndarray 0.17.2", + "ort-sys", + "smallvec", + "tracing", +] + +[[package]] +name = "ort-sys" +version = "2.0.0-rc.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf211e3776eea6aec988552fa118dd746d70e1b1e5e244058d1c98015f3e5872" + [[package]] name = "parking_lot" version = "0.12.5" @@ -1011,6 +1100,21 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" +[[package]] +name = "portable-atomic" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" + +[[package]] +name = "portable-atomic-util" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" +dependencies = [ + "portable-atomic", +] + [[package]] name = "presser" version = "0.3.1" @@ -1075,6 +1179,12 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + [[package]] name = "read-fonts" version = "0.37.0" @@ -1434,6 +1544,25 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", +] + [[package]] name = "ttf-parser" version = "0.25.1" @@ -1630,7 +1759,7 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading", + "libloading 0.8.9", "log", "metal 0.31.0", "naga", diff --git a/crates/Cargo.toml b/crates/Cargo.toml index 208f376cc..abd74df99 100644 --- a/crates/Cargo.toml +++ b/crates/Cargo.toml @@ -34,6 +34,26 @@ image = { version = "0.25", default-features = false, features = ["jpeg", "png"] wgpu = { version = "24", features = ["wgsl"] } pollster = "0.4" cosmic-text = "0.19" +# Inference for the webcam segmentation mask. CPU execution provider only: measured on the +# target integrated GPU it costs +0.47 ms/frame against DirectML's +1.03, its cost does not +# scale with input resolution, and choosing it deletes the whole D3D11<->D3D12 interop +# (technical-documentation/engineering/webcam-segmentation.md). +# +# Behind the `segmentation` feature and OFF by default: `download-binaries` fetches the +# ONNX Runtime libs at build time, which is a packaging decision (nix, AUR, MS Store, CI) +# that has not been taken yet. The default build is unchanged. +# `load-dynamic` et NON `download-binaries` : ce dernier tire une build STATIQUE d'ONNX +# Runtime avec DirectML dedans (DirectML.lib, DXCORE.lib et les DmlOperator* apparaissent +# dans la ligne de lien) — exactement la dépendance que le choix de l'EP CPU sert à +# supprimer. En chargement dynamique, la lib est résolue à l'exécution, ce qui laisse le +# packaging la stager par plateforme comme il le fait déjà pour whisper-stt. +ort = { version = "2.0.0-rc.13", default-features = false, features = [ + "std", + "ndarray", + "load-dynamic", + "api-27", +] } +ndarray = "0.16" [workspace.dependencies.windows] version = "0.58" diff --git a/crates/compositor/Cargo.toml b/crates/compositor/Cargo.toml index f968b5497..c9c01fc60 100644 --- a/crates/compositor/Cargo.toml +++ b/crates/compositor/Cargo.toml @@ -12,8 +12,18 @@ path = "src/lib.rs" bindgen = "0.70" cc = "1" +[features] +default = [] +# Segmentation IA de la webcam via ONNX Runtime (EP CPU). Désactivée par défaut : elle tire +# les binaires d'ONNX Runtime au build, ce qui engage le packaging des cinq canaux de +# distribution. Le chemin masque->shader, lui, est toujours compilé — sans masque l'effet +# reste simplement éteint. +segmentation = ["dep:ort", "dep:ndarray"] + [dependencies] anyhow.workspace = true +ort = { workspace = true, optional = true } +ndarray = { workspace = true, optional = true } serde.workspace = true serde_json.workspace = true image.workspace = true diff --git a/crates/compositor/src/lib.rs b/crates/compositor/src/lib.rs index d8972e7d1..90dee8155 100644 --- a/crates/compositor/src/lib.rs +++ b/crates/compositor/src/lib.rs @@ -40,6 +40,10 @@ pub mod regions; // n'est spécifique à Linux. pub mod remux; pub mod scene; +// Segmentation du sujet webcam (masque -> `t3`). Le module compile toujours ; sans la feature +// `segmentation` ses deux entrées échouent proprement, ce qui garde le reste du crate +// indépendant du choix de packaging d'ONNX Runtime. +pub mod segmentation; pub mod text_anim; pub mod text_plate; pub(crate) mod timeline_walk; diff --git a/crates/compositor/src/segmentation.rs b/crates/compositor/src/segmentation.rs new file mode 100644 index 000000000..4ef78dc70 --- /dev/null +++ b/crates/compositor/src/segmentation.rs @@ -0,0 +1,186 @@ +//! Segmentation du sujet webcam — le masque que `ps_main` consomme en `t3`. +//! +//! # Pourquoi l'EP CPU et pas le GPU +//! +//! Mesuré sur la cible (Radeon 610M intégré, cf. +//! `technical-documentation/engineering/webcam-segmentation.md`) : l'EP CPU coûte **+0,47 ms +//! par frame** au compositeur contre **+1,03 ms** pour DirectML, et — le point qui décide — +//! son coût **ne dépend pas de la résolution d'entrée**, là où celui de DirectML suit les +//! pixels. L'EP CPU à pleine résolution est donc moins cher que DirectML ne l'est jamais, +//! même à résolution réduite. +//! +//! Le vrai gain n'est pas la marge, il est architectural : pas de DirectML ⇒ pas de device +//! D3D12, pas de handle partagé, pas d'appariement de LUID d'adaptateur, pas de fence +//! inter-queue, et un seul chemin sur les trois plateformes au lieu de trois. +//! +//! # Le piège du nombre de threads +//! +//! Une session ONNX Runtime laissée par défaut prend tous les cœurs. Sur la machine de +//! mesure (4 cœurs) ça donne un **p95 de 24,9 ms** — une frame perdue à chaque fois que ça +//! tombe. `intra_op_num_threads = 2` est à 8 % du meilleur p10 avec moins de la moitié de la +//! traîne, et laisse deux cœurs au compositeur. La bonne valeur n'était pas la plus rapide. + +use anyhow::{bail, Result}; +use std::path::Path; + +/// Résolution d'entrée du modèle vendorisé (`selfie_segmentation_landscape.onnx`). +/// +/// Le graphe est entièrement convolutif, donc réductible — mais mesuré, ça ne sert à rien : +/// le coût de l'EP CPU est plat en résolution. Et 128x80 n'est pas livrable, la caméra en +/// plein écran agrandit le masque ~15x et les cheveux s'effondrent en rampe. +pub const MODEL_WIDTH: u32 = 256; +pub const MODEL_HEIGHT: u32 = 144; + +/// Deux threads intra-op. Voir la note du module : le défaut prend toute la machine. +const INTRA_OP_THREADS: usize = 2; + +/// Segmenteur chargé, prêt à produire un masque par frame. +pub struct Segmenter { + #[cfg(feature = "segmentation")] + session: ort::session::Session, + /// Réutilisé d'une frame à l'autre pour ne pas réallouer 110 Ko à 30 Hz. + input_scratch: Vec, + mask_scratch: Vec, +} + +impl Segmenter { + /// Charge le modèle ONNX. `model_path` est le `.onnx` vendorisé à côté des `.tflite`. + #[cfg(feature = "segmentation")] + pub fn load(model_path: &Path) -> Result { + if !model_path.exists() { + bail!("modèle de segmentation absent : {}", model_path.display()); + } + // `ort::Error` est générique sur le type du builder, donc il ne satisfait pas les + // bornes d'`anyhow::Context` — d'où le `map_err` explicite plutôt qu'un `?` direct. + let session = (|| -> ort::Result { + ort::session::Session::builder()? + .with_intra_threads(INTRA_OP_THREADS)? + // Un seul thread inter-op : le graphe est une chaîne, il n'y a rien à + // paralléliser entre branches, et un pool de plus ne ferait que disputer les + // cœurs au compositeur. + .with_inter_threads(1)? + .commit_from_file(model_path) + })() + .map_err(|e| anyhow::anyhow!("chargement de {} : {e}", model_path.display()))?; + Ok(Self { + session, + input_scratch: vec![0.0; (MODEL_WIDTH * MODEL_HEIGHT * 3) as usize], + mask_scratch: vec![0; (MODEL_WIDTH * MODEL_HEIGHT) as usize], + }) + } + + #[cfg(not(feature = "segmentation"))] + pub fn load(_model_path: &Path) -> Result { + bail!("compilé sans la feature `segmentation`") + } + + /// Produit le masque du sujet à partir d'une frame RGB8 déjà mise à l'échelle du modèle. + /// + /// `rgb` fait `MODEL_WIDTH * MODEL_HEIGHT * 3` octets, entrelacé R,G,B. Le retour fait + /// `MODEL_WIDTH * MODEL_HEIGHT` octets, 0 = fond, 255 = sujet — exactement ce que + /// `Compositor::set_webcam_mask` attend. + /// + /// Le redimensionnement n'est pas fait ici : l'appelant a déjà la frame sur le GPU et sait + /// la réduire bien mieux qu'une boucle CPU. + #[cfg(feature = "segmentation")] + pub fn run(&mut self, rgb: &[u8]) -> Result<&[u8]> { + let expected = (MODEL_WIDTH * MODEL_HEIGHT * 3) as usize; + if rgb.len() != expected { + bail!("frame de {} octets, {expected} attendus", rgb.len()); + } + // Le modèle veut du 0..1 en NHWC — le même ordre que la frame entrelacée, donc une + // simple division sans transposition. + for (dst, &src) in self.input_scratch.iter_mut().zip(rgb.iter()) { + *dst = src as f32 * (1.0 / 255.0); + } + + // `TensorRef` emprunte le scratch au lieu de le copier : à 30 Hz, 442 Ko recopiés par + // frame pour rien seraient exactement le genre de coût que cette conception évite. + let shape = [1_i64, MODEL_HEIGHT as i64, MODEL_WIDTH as i64, 3]; + let input = ort::value::TensorRef::from_array_view((shape, self.input_scratch.as_slice())) + .map_err(|e| anyhow::anyhow!("construction du tenseur d'entrée : {e}"))?; + let outputs = self + .session + .run(ort::inputs!["input_1" => input]) + .map_err(|e| anyhow::anyhow!("inférence : {e}"))?; + let (_, mask) = outputs["segment_back"] + .try_extract_tensor::() + .map_err(|e| anyhow::anyhow!("extraction du masque : {e}"))?; + + if mask.len() != self.mask_scratch.len() { + bail!("masque de {} valeurs, {} attendues", mask.len(), self.mask_scratch.len()); + } + // Déjà passé par une sigmoïde dans le graphe, donc borné 0..1 — le clamp ne protège + // que d'un modèle regénéré différemment. + for (dst, &src) in self.mask_scratch.iter_mut().zip(mask.iter()) { + *dst = (src.clamp(0.0, 1.0) * 255.0) as u8; + } + Ok(&self.mask_scratch) + } + + #[cfg(not(feature = "segmentation"))] + pub fn run(&mut self, _rgb: &[u8]) -> Result<&[u8]> { + bail!("compilé sans la feature `segmentation`") + } +} + +#[cfg(test)] +mod tests { + use super::*; + + /// Le chemin par défaut du modèle vendorisé, depuis la racine du dépôt. + fn vendored_model() -> std::path::PathBuf { + Path::new(env!("CARGO_MANIFEST_DIR")) + .join("../../public/mediapipe/selfie_segmentation/selfie_segmentation_landscape.onnx") + } + + #[test] + fn the_vendored_model_is_where_the_loader_expects_it() { + // Ne charge pas le modèle (la feature peut être éteinte) : vérifie seulement que le + // fichier que `load` ira chercher existe et n'est pas un pointeur LFS ou un tronçon. + let path = vendored_model(); + let meta = std::fs::metadata(&path) + .unwrap_or_else(|e| panic!("modèle introuvable en {} : {e}", path.display())); + assert!(meta.len() > 100_000, "modèle suspicieusement petit : {} octets", meta.len()); + } + + // Sans la feature, `load` échoue en disant que la feature manque — un message utile lui + // aussi, mais pas celui-ci. + #[cfg(feature = "segmentation")] + #[test] + fn a_missing_model_fails_with_the_path_in_the_message() { + // `.err()` plutôt que `.unwrap_err()` : ce dernier exigerait `Debug` sur `Segmenter`, + // qui contient une session ONNX Runtime. + let err = match Segmenter::load(Path::new("nexiste/pas.onnx")) { + Ok(_) => panic!("un modèle inexistant ne doit pas charger"), + Err(e) => e.to_string(), + }; + assert!(err.contains("nexiste"), "message peu utile : {err}"); + } + + #[cfg(feature = "segmentation")] + #[test] + fn a_frame_of_the_wrong_size_is_refused_rather_than_read_out_of_bounds() { + let mut seg = Segmenter::load(&vendored_model()).expect("chargement du modèle"); + let err = seg.run(&[0u8; 12]).unwrap_err().to_string(); + assert!(err.contains("attendus"), "message peu utile : {err}"); + } + + #[cfg(feature = "segmentation")] + #[test] + fn segments_a_uniform_frame_without_panicking_and_returns_the_right_size() { + let mut seg = Segmenter::load(&vendored_model()).expect("chargement du modèle"); + let frame = vec![128u8; (MODEL_WIDTH * MODEL_HEIGHT * 3) as usize]; + let mask = seg.run(&frame).expect("inférence"); + assert_eq!(mask.len(), (MODEL_WIDTH * MODEL_HEIGHT) as usize); + // Un gris uniforme ne contient pas de sujet : le masque doit être massivement du + // fond. C'est une borne large, pas une assertion de qualité — elle attrape un modèle + // qui renverrait du bruit ou du plein. + let subject = mask.iter().filter(|&&v| v > 128).count(); + assert!( + subject * 10 < mask.len(), + "{subject} pixels sujet sur {} pour une image unie", + mask.len() + ); + } +} From b5f3a52257d61437cd383a97e770d346ddd50913 Mon Sep 17 00:00:00 2001 From: EtienneLescot Date: Wed, 26 Aug 2026 00:49:35 +0200 Subject: [PATCH 13/15] feat(webcam): extract the webcam frame and drive inference at 30 Hz MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes the loop between the shader's mask slot and the model. `Compositor::capture_webcam_rgb` renders the webcam NV12 into a 256x144 RGBA target through the existing `draw_video` and reads it back as RGB. It takes the same `src` rect the real draw uses, so the user's crop and the mirror are already applied — the model sees what the viewer will see, and the mask never has to be re-cropped afterwards. It must be called before `begin()`, since it takes the render target and does not give it back; the doc comment says so. That readback is the one GPU-to-CPU point on the path. At 147 KB it is noise against the full frame the preview already reads every image, but the export path is GPU-resident end to end, so there it is a new synchronisation point and that is where it has to be measured. `SegmentationWorker` runs inference on its own thread and publishes through a callback — `set_webcam_mask` is built for that, the device being multithread-protected. Its exchange slot holds exactly one frame and overwrites: if inference falls behind, skipping frames is right and queueing them is not. A mask three frames late is worse than a mask skipped, and a growing queue eventually eats memory. A failed frame is skipped rather than fatal, so the previous mask stays up instead of the effect flickering. `RateLimiter` takes `now` as an argument instead of reading the clock, which is what makes the cadence testable: 60 rendered frames yield exactly 30 inferences, and the interval restarts from the last accepted frame rather than the first, so a refused frame does not let the rate drift upward. 145 tests with the feature, 141 without. --- crates/compositor/src/compositor_windows.rs | 126 +++++++++++++++ crates/compositor/src/segmentation.rs | 166 ++++++++++++++++++++ 2 files changed, 292 insertions(+) diff --git a/crates/compositor/src/compositor_windows.rs b/crates/compositor/src/compositor_windows.rs index 41a214c5a..046774722 100644 --- a/crates/compositor/src/compositor_windows.rs +++ b/crates/compositor/src/compositor_windows.rs @@ -46,6 +46,15 @@ use windows::Win32::Graphics::Dxgi::Common::*; +/// Cible RGBA + staging CPU pour l'extraction de la frame webcam qui alimente le modèle. +struct SegCapture { + rtv: ID3D11RenderTargetView, + rt: ID3D11Texture2D, + staging: ID3D11Texture2D, + width: u32, + height: u32, +} + /// Texture du masque de segmentation, recréée seulement quand la résolution du modèle change. struct WebcamMask { tex: ID3D11Texture2D, @@ -163,6 +172,10 @@ pub struct Compositor { /// de prévisualisation demandée (variable, contrairement au `staging` fixe à /// OUT_W×OUT_H). Recréée quand la taille change — voir `readback_resized`. live_readback_staging: RefCell>, + /// Cible + staging pour extraire la frame webcam à la résolution du modèle de + /// segmentation. Créée à la première capture, jamais redimensionnée : le modèle a une + /// entrée fixe. + seg_capture: RefCell>, /// Staging NV12 du readback d'ENCODAGE (backend CPU) — même motif de cache par taille /// que `live_readback_staging`, mais en NV12 et non en RGBA : l'encodeur logiciel veut /// les plans Y/UV, pas des pixels RGBA. Voir `read_nv12_scaled`. @@ -573,6 +586,7 @@ impl Compositor { render_size: Cell::new((out_w, out_h)), resize_target: RefCell::new(None), live_readback_staging: RefCell::new(None), + seg_capture: RefCell::new(None), nv12_readback_staging: RefCell::new(None), }) } @@ -860,6 +874,118 @@ impl Compositor { Ok((srv.unwrap(), w, h)) } + /// Extrait la frame webcam en RGB8 à la résolution du modèle, dans `out`. + /// + /// `src` est le rect source de la webcam en UV (le même que celui passé à `draw_video`), + /// donc le crop utilisateur et le miroir sont déjà dedans — le modèle voit exactement ce + /// que le spectateur verra, et le masque n'a pas à être recadré après coup. + /// + /// **À appeler AVANT `begin()`** : la méthode réquisitionne la cible de rendu et le + /// viewport, et ne les restaure pas. Les appeler dans l'autre ordre dessinerait la scène + /// dans une texture de 256x144. + /// + /// C'est le seul readback GPU->CPU du chemin. Il porte 256x144x4 = 147 Ko, contre la + /// frame entière que la preview lit déjà à chaque image ; sur le chemin export, qui lui + /// est GPU-résident de bout en bout, c'est en revanche un point de synchronisation neuf + /// et c'est là qu'il faudra le mesurer. + pub unsafe fn capture_webcam_rgb( + &self, + wy: &ID3D11ShaderResourceView, + wuv: &ID3D11ShaderResourceView, + src: [f32; 4], + width: u32, + height: u32, + out: &mut Vec, + ) -> Result<()> { + if width == 0 || height == 0 { + bail!("capture webcam de dimensions nulles ({width}x{height})"); + } + { + let mut slot = self.seg_capture.borrow_mut(); + if !matches!(slot.as_ref(), Some(c) if c.width == width && c.height == height) { + let td = D3D11_TEXTURE2D_DESC { + Width: width, + Height: height, + MipLevels: 1, + ArraySize: 1, + Format: DXGI_FORMAT_R8G8B8A8_UNORM, + SampleDesc: DXGI_SAMPLE_DESC { Count: 1, Quality: 0 }, + Usage: D3D11_USAGE_DEFAULT, + BindFlags: D3D11_BIND_RENDER_TARGET.0 as u32, + CPUAccessFlags: 0, + MiscFlags: 0, + }; + let mut rt: Option = None; + self.dev.CreateTexture2D(&td, None, Some(&mut rt))?; + let rt = rt.unwrap(); + let mut rtv: Option = None; + self.dev.CreateRenderTargetView(&rt, None, Some(&mut rtv))?; + + let sd = D3D11_TEXTURE2D_DESC { + Usage: D3D11_USAGE_STAGING, + BindFlags: 0, + CPUAccessFlags: D3D11_CPU_ACCESS_READ.0 as u32, + ..td + }; + let mut staging: Option = None; + self.dev.CreateTexture2D(&sd, None, Some(&mut staging))?; + + *slot = Some(SegCapture { + rtv: rtv.unwrap(), + rt, + staging: staging.unwrap(), + width, + height, + }); + } + } + + let cap = self.seg_capture.borrow(); + let cap = cap.as_ref().expect("créé juste au-dessus"); + + self.bind_compose_state(); + self.ctx.OMSetBlendState(&self.blend_none, None, 0xffffffff); + self.ctx.OMSetRenderTargets(Some(&[Some(cap.rtv.clone())]), None); + let vp = D3D11_VIEWPORT { + TopLeftX: 0.0, TopLeftY: 0.0, + Width: width as f32, Height: height as f32, MinDepth: 0.0, MaxDepth: 1.0, + }; + self.ctx.RSSetViewports(Some(&[vp])); + // Plein cadre de la cible, sans coins ni motion blur : le modèle veut l'image, pas + // la mise en forme. + self.draw_video( + &LayerCB { + dst: [0.0, 0.0, 1.0, 1.0], + src, + quad_px: [width as f32, height as f32], + mode: 0.0, + color: [0.0, 0.0, 0.0, 1.0], + mb: [1.0, 1.0, 1.0, 0.0], + ..Default::default() + }, + wy, + wuv, + ); + + self.ctx.CopyResource(&cap.staging, &cap.rt); + let mut mapped = D3D11_MAPPED_SUBRESOURCE::default(); + self.ctx.Map(&cap.staging, 0, D3D11_MAP_READ, 0, Some(&mut mapped))?; + out.clear(); + out.reserve((width * height * 3) as usize); + for row in 0..height as usize { + let line = (mapped.pData as *const u8).add(row * mapped.RowPitch as usize); + for col in 0..width as usize { + let px = line.add(col * 4); + // RGBA -> RGB : le modèle n'a pas de canal alpha en entrée. + out.push(*px); + out.push(*px.add(1)); + out.push(*px.add(2)); + } + } + self.ctx.Unmap(&cap.staging, 0); + Ok(()) + } + /// Publie le masque de segmentation du sujet webcam (R8, `width`x`height`, 0 = fond). /// /// Appelé depuis le thread d'inférence, pas depuis le thread de rendu — d'où le diff --git a/crates/compositor/src/segmentation.rs b/crates/compositor/src/segmentation.rs index 4ef78dc70..92b88d3fc 100644 --- a/crates/compositor/src/segmentation.rs +++ b/crates/compositor/src/segmentation.rs @@ -22,6 +22,8 @@ use anyhow::{bail, Result}; use std::path::Path; +use std::sync::{Arc, Condvar, Mutex}; +use std::time::{Duration, Instant}; /// Résolution d'entrée du modèle vendorisé (`selfie_segmentation_landscape.onnx`). /// @@ -166,6 +168,58 @@ mod tests { assert!(err.contains("attendus"), "message peu utile : {err}"); } + #[test] + fn the_rate_limiter_admits_one_frame_per_interval() { + let mut rl = RateLimiter::new(30); + let t0 = Instant::now(); + assert!(rl.should_run(t0), "la première frame passe toujours"); + assert!(!rl.should_run(t0 + Duration::from_millis(10)), "10 ms < 33 ms"); + assert!(!rl.should_run(t0 + Duration::from_millis(33)), "juste sous l'intervalle"); + assert!(rl.should_run(t0 + Duration::from_millis(34)), "au-delà de l'intervalle"); + // Le pas repart du dernier passage accepté, pas du premier : sinon la cadence + // dériverait vers le haut après chaque frame refusée. + assert!(!rl.should_run(t0 + Duration::from_millis(40))); + assert!(rl.should_run(t0 + Duration::from_millis(68))); + } + + #[test] + fn a_60_hz_render_loop_yields_about_30_inferences_per_second() { + let mut rl = RateLimiter::new(30); + let t0 = Instant::now(); + let admitted = (0..60) + .filter(|i| rl.should_run(t0 + Duration::from_micros(16_667 * i))) + .count(); + assert_eq!(admitted, 30, "60 frames rendues doivent donner 30 inférences"); + } + + #[cfg(feature = "segmentation")] + #[test] + fn the_worker_drops_stale_frames_rather_than_queueing_them() { + use std::sync::atomic::{AtomicUsize, Ordering}; + + let seen = Arc::new(AtomicUsize::new(0)); + let counter = Arc::clone(&seen); + let worker = SegmentationWorker::spawn( + Segmenter::load(&vendored_model()).expect("chargement du modèle"), + move |mask, w, h| { + assert_eq!(mask.len(), (w * h) as usize); + counter.fetch_add(1, Ordering::SeqCst); + }, + ); + + // Cent frames déposées d'affilée : le worker en traite bien moins que cent, puisque + // chaque dépôt écrase le précédent non consommé. La borne est large — le test pin le + // fait qu'on écrase, pas un débit. + let frame = vec![90u8; (MODEL_WIDTH * MODEL_HEIGHT * 3) as usize]; + for _ in 0..100 { + worker.submit(&frame); + } + std::thread::sleep(Duration::from_millis(300)); + let done = seen.load(Ordering::SeqCst); + assert!(done > 0, "le worker n'a rien traité"); + assert!(done < 100, "{done} inférences pour 100 dépôts : la file s'accumule"); + } + #[cfg(feature = "segmentation")] #[test] fn segments_a_uniform_frame_without_panicking_and_returns_the_right_size() { @@ -184,3 +238,115 @@ mod tests { ); } } + +/// Cadence l'inférence : 30 Hz, pas la fréquence de rendu. +/// +/// Une silhouette ne change pas de façon perceptible en 16 ms, et c'est le seul levier +/// mesuré qui divise le coût par deux sans toucher au modèle ni à sa précision. Le chemin +/// export tourne déjà à 30 Hz. +pub struct RateLimiter { + interval: Duration, + last: Option, +} + +impl RateLimiter { + pub fn new(hz: u32) -> Self { + Self { interval: Duration::from_secs_f64(1.0 / hz.max(1) as f64), last: None } + } + + /// `true` si assez de temps s'est écoulé depuis le dernier passage. Prend `now` en + /// paramètre plutôt que de lire l'horloge : c'est ce qui rend la cadence testable. + pub fn should_run(&mut self, now: Instant) -> bool { + match self.last { + Some(prev) if now.duration_since(prev) < self.interval => false, + _ => { + self.last = Some(now); + true + } + } + } +} + +/// Boîte d'échange à une place, qui écrase au lieu d'empiler. +/// +/// Si l'inférence prend du retard, la bonne réponse est de sauter des frames, pas d'en +/// accumuler : un masque en retard de trois frames est pire qu'un masque sauté, et une file +/// qui grandit finit par manger la mémoire. `submit` remplace donc silencieusement une frame +/// non consommée. +struct Slot { + frame: Mutex>>, + ready: Condvar, + stop: Mutex, +} + +/// Thread d'inférence : reçoit des frames RGB, publie des masques via un callback. +/// +/// Le callback est appelé depuis le thread du worker, pas depuis celui du rendu — c'est +/// `Compositor::set_webcam_mask` qui est prévu pour ça, le device étant multithread-protected. +pub struct SegmentationWorker { + slot: Arc, + handle: Option>, +} + +impl SegmentationWorker { + /// Démarre le worker. `on_mask` reçoit le masque et ses dimensions à chaque inférence. + pub fn spawn( + mut segmenter: Segmenter, + on_mask: impl Fn(&[u8], u32, u32) + Send + 'static, + ) -> Self { + let slot = Arc::new(Slot { + frame: Mutex::new(None), + ready: Condvar::new(), + stop: Mutex::new(false), + }); + let worker_slot = Arc::clone(&slot); + let handle = std::thread::Builder::new() + .name("openscreen-segmentation".into()) + .spawn(move || loop { + let frame = { + let mut guard = worker_slot.frame.lock().unwrap(); + while guard.is_none() { + if *worker_slot.stop.lock().unwrap() { + return; + } + let (g, timeout) = worker_slot + .ready + .wait_timeout(guard, Duration::from_millis(100)) + .unwrap(); + guard = g; + if timeout.timed_out() && guard.is_none() { + if *worker_slot.stop.lock().unwrap() { + return; + } + } + } + guard.take().expect("non vide, la boucle vient de le vérifier") + }; + match segmenter.run(&frame) { + Ok(mask) => on_mask(mask, MODEL_WIDTH, MODEL_HEIGHT), + // Une frame ratée est sautée, pas fatale : le masque précédent reste + // affiché, ce qui vaut mieux qu'un effet qui clignote. + Err(e) => eprintln!("[segmentation] frame ignorée : {e}"), + } + }) + .expect("le thread de segmentation doit démarrer"); + Self { slot, handle: Some(handle) } + } + + /// Dépose une frame à segmenter. Écrase celle qui attendait, s'il y en avait une. + pub fn submit(&self, rgb: &[u8]) { + let mut guard = self.slot.frame.lock().unwrap(); + *guard = Some(rgb.to_vec()); + self.slot.ready.notify_one(); + } +} + +impl Drop for SegmentationWorker { + fn drop(&mut self) { + *self.slot.stop.lock().unwrap() = true; + self.slot.ready.notify_all(); + if let Some(h) = self.handle.take() { + let _ = h.join(); + } + } +} From 942d58e267f86f10803d2ac2888255409693528d Mon Sep 17 00:00:00 2001 From: EtienneLescot Date: Wed, 26 Aug 2026 00:54:08 +0200 Subject: [PATCH 14/15] feat(webcam): drive segmentation from compose_frame MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The last link. The hook is not in `live.rs` as expected: the webcam SRVs are born inside `compose_frame`, so that is where the capture has to happen, and the whole cycle now lives in one place instead of being spread across the render loop. `pump_segmentation` runs before `begin()`, since capture takes the render target. It uploads whatever mask the worker finished, then submits a new frame if the 30 Hz limiter allows. The two halves are deliberately out of step: the mask uploaded is from the previous frame, and one frame of lag on a silhouette is invisible, where waiting on inference would block the render — the exact cost this design exists to avoid. Nothing happens at all when no effect is requested: no capture, no inference, no upload. The feature costs zero until it is switched on. The model is fed the WHOLE webcam frame, not the sub-rect being drawn. A tight user crop would otherwise amputate the subject at the model's input, and the mask would be wrong exactly where it matters most. The shader brings its coordinates back into that space through `fx.xy`, which carries the texture's valid extent — decoders allocate aligned textures, so the frame does not fill its own texture. The mask crosses threads as bytes through a mutex and is uploaded from the render thread, so no D3D call crosses a thread boundary even though the device is multithread-protected and would allow it. 141 tests without the feature, 145 with; the bench crate still builds. --- crates/compositor/src/compositor_windows.rs | 100 +++++++++++++++++++- crates/compositor/src/shaders.hlsl | 7 +- 2 files changed, 105 insertions(+), 2 deletions(-) diff --git a/crates/compositor/src/compositor_windows.rs b/crates/compositor/src/compositor_windows.rs index 046774722..7a0672995 100644 --- a/crates/compositor/src/compositor_windows.rs +++ b/crates/compositor/src/compositor_windows.rs @@ -46,6 +46,10 @@ use windows::Win32::Graphics::Dxgi::Common::*; +/// Cadence de l'inférence. Pas 60 : une silhouette ne bouge pas de façon perceptible en +/// 16 ms, et c'est le seul levier mesuré qui divise le coût par deux sans toucher au modèle. +const SEGMENTATION_HZ: u32 = 30; + /// Cible RGBA + staging CPU pour l'extraction de la frame webcam qui alimente le modèle. struct SegCapture { rtv: ID3D11RenderTargetView, @@ -176,6 +180,15 @@ pub struct Compositor { /// segmentation. Créée à la première capture, jamais redimensionnée : le modèle a une /// entrée fixe. seg_capture: RefCell>, + /// Worker d'inférence, absent tant que `enable_segmentation` n'a pas été appelé. + seg_worker: RefCell>, + /// Boîte aux lettres du worker. Le masque est déposé depuis le thread d'inférence et + /// téléversé depuis le thread de rendu : aucun appel D3D ne traverse de thread, malgré + /// le device multithread-protected qui l'autoriserait. + seg_inbox: std::sync::Arc>>>, + seg_rate: RefCell, + /// Frame RGB réutilisée d'une capture à l'autre. + seg_scratch: RefCell>, /// Staging NV12 du readback d'ENCODAGE (backend CPU) — même motif de cache par taille /// que `live_readback_staging`, mais en NV12 et non en RGBA : l'encodeur logiciel veut /// les plans Y/UV, pas des pixels RGBA. Voir `read_nv12_scaled`. @@ -587,6 +600,10 @@ impl Compositor { resize_target: RefCell::new(None), live_readback_staging: RefCell::new(None), seg_capture: RefCell::new(None), + seg_worker: RefCell::new(None), + seg_inbox: std::sync::Arc::new(std::sync::Mutex::new(None)), + seg_rate: RefCell::new(crate::segmentation::RateLimiter::new(SEGMENTATION_HZ)), + seg_scratch: RefCell::new(Vec::new()), nv12_readback_staging: RefCell::new(None), }) } @@ -1040,6 +1057,81 @@ impl Compositor { Ok(()) } + /// Un tour de segmentation : téléverse le masque prêt, puis soumet une nouvelle frame si + /// la cadence l'autorise. + /// + /// Les deux moitiés sont volontairement désynchronisées. Le masque téléversé ici vient de + /// la frame précédente — une frame de retard sur une silhouette est invisible, alors + /// qu'attendre l'inférence bloquerait le rendu, ce qui est exactement le coût que toute + /// cette conception cherche à ne pas payer. + unsafe fn pump_segmentation( + &self, + wy: &ID3D11ShaderResourceView, + wuv: &ID3D11ShaderResourceView, + valid: [f32; 2], + ) -> Result<()> { + if self.seg_worker.borrow().is_none() { + return Ok(()); + } + // Rien à faire si aucun effet n'est demandé : ni capture, ni inférence, ni masque. + // Le coût de la fonctionnalité est alors exactement nul. + let wants_effect = matches!( + self.scene.borrow().as_ref().and_then(|s| s.webcam_effect.as_ref()), + Some(e) if e.shader_code() > 0.0 + ); + if !wants_effect { + return Ok(()); + } + + if let Some(mask) = self.seg_inbox.lock().unwrap().take() { + self.set_webcam_mask( + &mask, + crate::segmentation::MODEL_WIDTH, + crate::segmentation::MODEL_HEIGHT, + )?; + } + + if !self.seg_rate.borrow_mut().should_run(std::time::Instant::now()) { + return Ok(()); + } + let mut scratch = self.seg_scratch.borrow_mut(); + // La frame ENTIÈRE, pas le sous-rect dessiné : un crop utilisateur serré amputerait + // le sujet en entrée du modèle, et le masque serait faux là où il compte le plus. + // Le shader ramène ses coordonnées dans cet espace via `fx.xy`. + self.capture_webcam_rgb( + wy, + wuv, + [0.0, 0.0, valid[0], valid[1]], + crate::segmentation::MODEL_WIDTH, + crate::segmentation::MODEL_HEIGHT, + &mut scratch, + )?; + if let Some(w) = self.seg_worker.borrow().as_ref() { + w.submit(&scratch); + } + Ok(()) + } + + /// Démarre la segmentation du sujet webcam pour ce compositeur. + /// + /// Idempotent. Tant qu'elle n'est pas appelée, `compose_frame` ne fait rien de plus et + /// la webcam se dessine comme avant — c'est ce qui rend l'effet inerte plutôt que cassé + /// sur une build sans modèle. + pub fn enable_segmentation(&self, model_path: &std::path::Path) -> Result<()> { + if self.seg_worker.borrow().is_some() { + return Ok(()); + } + let segmenter = crate::segmentation::Segmenter::load(model_path)?; + let inbox = std::sync::Arc::clone(&self.seg_inbox); + let worker = crate::segmentation::SegmentationWorker::spawn(segmenter, move |mask, _, _| { + // Écrase le masque précédent s'il n'a pas encore été téléversé : c'est le plus + // récent qui vaut, jamais une file. + *inbox.lock().unwrap() = Some(mask.to_vec()); + }); + *self.seg_worker.borrow_mut() = Some(worker); + Ok(()) + } + /// Éteint l'effet : la webcam se redessine telle quelle à la frame suivante. pub fn clear_webcam_mask(&self) { *self.webcam_mask.borrow_mut() = None; @@ -1296,6 +1388,12 @@ impl Compositor { let (wtw, wth) = self.tex_dims(webcam); let (scw, sch) = ((*screen).width as f32, (*screen).height as f32); let (wcw, wch) = ((*webcam).width as f32, (*webcam).height as f32); + // Étendue valide de la texture webcam : les décodeurs allouent des textures alignées, + // donc la frame n'occupe pas forcément toute la texture. + let w_valid = [wcw / wtw as f32, wch / wth as f32]; + + // Segmentation, AVANT `begin()` : la capture réquisitionne la cible de rendu. + self.pump_segmentation(&wy, &wuv, w_valid)?; let u_max = scw / stw as f32; let v_max = sch / sth as f32; @@ -1797,7 +1895,7 @@ impl Compositor { radius_px: w_radius, mode: 0.0, color: bg_color, - fx: [0.0, 0.0, effect_code, blur_intensity], + fx: [w_valid[0], w_valid[1], effect_code, blur_intensity], src_prev: [u0, sv0, u1, sv1], // src fixe (pas de zoom webcam) dst_prev: w_dst_prev, mb: [mb_taps, 1.0, 1.0, 0.0], diff --git a/crates/compositor/src/shaders.hlsl b/crates/compositor/src/shaders.hlsl index 6c2a6e800..a507abb64 100644 --- a/crates/compositor/src/shaders.hlsl +++ b/crates/compositor/src/shaders.hlsl @@ -464,13 +464,18 @@ float4 ps_main(VSOut i) : SV_Target // Effet d'arriere-plan webcam. fx.z : 1 = detourage, 2 = flou, 3 = fond personnalise. // `color` porte la couleur de fond du mode 3, fx.w l'intensite du flou du mode 2. + // fx.xy porte l'etendue VALIDE de la texture webcam (wcw/wtw, wch/wth) : le masque a + // ete produit sur la frame ENTIERE, pas sur le sous-rect dessine, pour que le modele + // ne se fasse pas amputer le sujet par un crop utilisateur. Il faut donc ramener uv, + // qui vit dans l'espace source, dans cet espace-la. // Le masque est absent (texture 1x1 noire) tant que la segmentation n'a pas produit sa // premiere frame : `person` vaut alors 0 et le mode 1 rendrait la webcam invisible, donc // c'est l'appelant qui ne met fx.z a autre chose que 0 qu'une fois un masque disponible. float effect = fx.z; if (effect > 0.5) { - float person = saturate(texMask.Sample(samp, uv_now)); + float2 mask_uv = uv_now / max(fx.xy, 1e-6); + float person = saturate(texMask.Sample(samp, mask_uv)); if (effect > 2.5) { rgb = lerp(color.rgb, rgb, person); From dd7738ca9bed3c2be08563a099531e500450e650 Mon Sep 17 00:00:00 2001 From: EtienneLescot Date: Wed, 26 Aug 2026 01:00:54 +0200 Subject: [PATCH 15/15] feat(webcam): start segmentation from the scene, and prove it on the bench MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `modelPath` joins `SceneWebcamEffect`, the same convention cursor sprites and image wallpapers already use: the app knows where its assets are installed, the native side does not guess. `pump_segmentation` starts the worker lazily on the first frame that asks for an effect, so nothing has to call `enable_segmentation` by hand. A model that fails to load turns the effect off and is not retried every frame — one log line, not sixty a second. Verified end to end on the bench (`poc-d3d --cfg C8 --scene …`) against a real screen+webcam pair, with the custom-background mode as the unambiguous probe: a magenta #ff0080 background comes back as (232, 0, 124) over 42 % of the PiP, the expected value after the BT.709 limited-range NV12 round trip the export does. The subject silhouette is preserved and everything around it replaced. Capture, inference, mask upload, t3 binding and the shader composite are therefore all live — none of which `cargo test` can reach, since it never touches a GPU. 141 tests without the feature, 145 with. --- crates/compositor/src/compositor_windows.rs | 30 +++++++++++++++++---- crates/compositor/src/scene.rs | 5 ++++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/crates/compositor/src/compositor_windows.rs b/crates/compositor/src/compositor_windows.rs index 7a0672995..e59518b48 100644 --- a/crates/compositor/src/compositor_windows.rs +++ b/crates/compositor/src/compositor_windows.rs @@ -189,6 +189,8 @@ pub struct Compositor { seg_rate: RefCell, /// Frame RGB réutilisée d'une capture à l'autre. seg_scratch: RefCell>, + /// Le chargement du modèle a échoué : ne pas réessayer à chaque frame. + seg_failed: RefCell, /// Staging NV12 du readback d'ENCODAGE (backend CPU) — même motif de cache par taille /// que `live_readback_staging`, mais en NV12 et non en RGBA : l'encodeur logiciel veut /// les plans Y/UV, pas des pixels RGBA. Voir `read_nv12_scaled`. @@ -604,6 +606,7 @@ impl Compositor { seg_inbox: std::sync::Arc::new(std::sync::Mutex::new(None)), seg_rate: RefCell::new(crate::segmentation::RateLimiter::new(SEGMENTATION_HZ)), seg_scratch: RefCell::new(Vec::new()), + seg_failed: RefCell::new(false), nv12_readback_staging: RefCell::new(None), }) } @@ -1070,19 +1073,36 @@ impl Compositor { wuv: &ID3D11ShaderResourceView, valid: [f32; 2], ) -> Result<()> { - if self.seg_worker.borrow().is_none() { + if *self.seg_failed.borrow() { return Ok(()); } // Rien à faire si aucun effet n'est demandé : ni capture, ni inférence, ni masque. // Le coût de la fonctionnalité est alors exactement nul. - let wants_effect = matches!( - self.scene.borrow().as_ref().and_then(|s| s.webcam_effect.as_ref()), - Some(e) if e.shader_code() > 0.0 - ); + let (wants_effect, model_path) = { + let scene = self.scene.borrow(); + match scene.as_ref().and_then(|s| s.webcam_effect.as_ref()) { + Some(e) if e.shader_code() > 0.0 => (true, e.model_path.clone()), + _ => (false, None), + } + }; if !wants_effect { return Ok(()); } + // Démarrage paresseux, piloté par la scène : personne n'a à appeler + // `enable_segmentation` à la main, et un modèle introuvable éteint l'effet au lieu + // de faire tomber le rendu. + if self.seg_worker.borrow().is_none() { + let Some(path) = model_path else { return Ok(()) }; + if let Err(e) = self.enable_segmentation(std::path::Path::new(&path)) { + eprintln!("[segmentation] désactivée : {e}"); + // Une scène qui reste identique retenterait à chaque frame ; on pose un + // worker vide plutôt que de journaliser 60 fois par seconde. + *self.seg_failed.borrow_mut() = true; + } + return Ok(()); + } + if let Some(mask) = self.seg_inbox.lock().unwrap().take() { self.set_webcam_mask( &mask, diff --git a/crates/compositor/src/scene.rs b/crates/compositor/src/scene.rs index b5e42ed9c..b6fb420c0 100644 --- a/crates/compositor/src/scene.rs +++ b/crates/compositor/src/scene.rs @@ -446,6 +446,11 @@ pub struct SceneWebcamEffect { /// Fond derrière le sujet pour `custom`, parsé comme `settings.wallpaper`. #[serde(default)] pub background: Option, + /// Chemin du modèle ONNX de segmentation. Même convention que `SceneCursorSprite::path` + /// ou qu'un wallpaper image : c'est l'app qui sait où ses assets sont installés, le + /// natif ne devine pas. Absent = pas de segmentation, l'effet reste éteint. + #[serde(default)] + pub model_path: Option, } impl SceneWebcamEffect {