// Cinematic export (spec M12, lane E). STUB — lane E fills THIS FILE ONLY. // // Pre-wired by foundation2: the hidden ⏺ button (#btn-export in index.html), this module's // import + init() call in main.js, and the transport hooks // `transport.captureAudioStream()` -> MediaStream tapping the live WebAudio mix (post-gain, // spatial included) and `transport.releaseAudioStream()` when done. // // When implementing: unhide the button, set `ready = true`; on click seek to the first // camPath keyframe, play the path, mux scene3d canvas `captureStream(30)` + the audio stream // with MediaRecorder (video/webm;codecs=vp9,opus), stop at the last keyframe, download // `festival4d-cut.webm`, then RESTORE all prior UI/transport state. The canvas is // `scene3d.renderer.domElement`. MediaRecorder needs a *focused* tab to capture real frames // (pitfall #2) — say so in your evidence if you couldn't. export const exportVideo = { ready: false, init() {}, // ponytail: stub — lane E replaces the body };