/** * AVBridge -- SharedArrayBuffer timeline bridge for A/V convergence. * * Provides a single sample counter shared between an AudioWorklet * (which advances it) and the visual compositor (which reads it). * Works in both real-time (browser) and offline (deterministic) modes. * * Memory layout (SharedArrayBuffer, 24 bytes): * Int32[0] -- sample counter (atomic increment by audio, atomic read by video) * Int32[1] -- audio running flag (1 = playing, 0 = paused) * Float64[1] -- audio start timestamp in ms (bytes 8-15, for drift calc) * * @module */ interface AVBridgeShape { readonly buffer: SharedArrayBuffer; readonly sampleRate: number; readonly fps: number; advanceSamples(count: number): void; getCurrentSample(): number; setRunning(running: boolean): void; isRunning(): boolean; getCurrentFrame(): number; sampleToTime(sample: number): number; timeToSample(time: number): number; isAudioAhead(): boolean; drift(): number; reset(): void; } interface AVBridgeConfig { readonly sampleRate: number; readonly fps: number; readonly buffer?: SharedArrayBuffer; } /** * Creates an AVBridge backed by a SharedArrayBuffer for lock-free * audio/video timeline synchronization between threads. * * @example * ```ts * const bridge = AVBridge.make({ sampleRate: 48000, fps: 60 }); * bridge.setRunning(true); * bridge.advanceSamples(800); // AudioWorklet advances by 800 samples * const frame = bridge.getCurrentFrame(); // current video frame number * const drift = bridge.drift(); // fractional frame offset * bridge.reset(); // zero out counters * ``` */ declare function _make(config: AVBridgeConfig): AVBridgeShape; /** * AVBridge -- SharedArrayBuffer-based timeline bridge for audio/video convergence. * Provides atomic sample counting shared between AudioWorklet and visual compositor. * * @example * ```ts * const bridge = AVBridge.make({ sampleRate: 44100, fps: 30 }); * bridge.setRunning(true); * bridge.advanceSamples(1470); // advance by one video frame worth of samples * bridge.getCurrentFrame(); // 1 * bridge.sampleToTime(44100); // 1.0 (seconds) * bridge.timeToSample(0.5); // 22050 * ``` */ export declare const AVBridge: { make: typeof _make; }; export declare namespace AVBridge { /** Structural shape of an AVBridge instance — sample counters, time conversions, reset. */ type Shape = AVBridgeShape; /** Configuration accepted by {@link AVBridge.make}: sample rate and fps. */ type Config = AVBridgeConfig; } export {}; //# sourceMappingURL=av-bridge.d.ts.map