Luxar Viewer API Documentation - v2026.9.22
    Preparing search index...

    Implements

    Index
    kind: "video" = ...
    mediaRecorder: MediaRecorder | null = null
    captureStream: MediaStream | null = null
    recordedChunks: Blob[] = []
    durationTimer: Timeout | null = null
    liveOverlayCompositor: LiveOverlayCompositor | null = null
    audioCaptureStream: MediaStream | null = null
    keepAliveCallbackId: "recording-keepalive" = 'recording-keepalive'
    turntableCallbackId: "recording-turntable" = 'recording-turntable'
    sceneManager: SceneManager
    animationController: AnimationController
    • Tear down the whole capture SOURCE: stop every track on the captureStream, drop the reference, and detach the live overlay compositor if this recording had one. mediaRecorder.stop() does NOT stop the underlying tracks, so without this call canvas-capture media tracks accumulate across repeated recordings.

      The overlay compositor is unwound HERE rather than at each call site precisely because its lifetime is the captureStream's: every path that ends a recording (onstop's unwind, onstop's disposed branch, the setup catch, dispose) already routes through this one method, so a per-frame frame-end listener cannot outlive the recording that installed it.

      Non-private so Panel can route panel.cleanupCaptureStream() through.

      Returns void