fovea-sdk
v0.1.0
Published
Foveated Streaming Engine: High-performance, bandwidth-efficient screen sharing using WASM and Dynamic ROI.
Downloads
103
Maintainers
Readme
Fovea SDK
Foveated Streaming Engine for High-Performance Screen Sharing.
Overview
Fovea uses WebAssembly (Rust) to perform "Foveated Rendering" on video streams entirely on the client side. It detects changes in the screen and only sends high-resolution updates for the active region (ROI), while blurring the static background. This results in massive bandwidth savings (up to 90%) for screen sharing applications.
Installation
npm install fovea-sdk(Note: During private beta, install from local path or private registry)
Usage
1. Electron (Node.js)
const FoveaEngine = require('fovea-sdk');
const path = require('path');
async function start() {
const engine = new FoveaEngine({ blurAmount: '12px' });
// Initialize with local WASM file
await engine.initialize({
wasmPath: path.join(__dirname, 'node_modules/fovea-sdk/fovea_rs/pkg/fovea_wasm_bg.wasm')
});
function loop() {
// Process video frame -> canvas
const result = engine.process(videoElement, outputCanvas);
if (result && result.type === 'foveated') {
console.log(`ROI: ${JSON.stringify(result.bbox)}`);
}
requestAnimationFrame(loop);
}
}2. Browser (React/Vue/Vanilla)
Copy the .wasm file to your public assets folder first.
import FoveaEngine from 'fovea-sdk';
const engine = new FoveaEngine();
// Initialize by fetching WASM from public URL
await engine.initialize({
wasmPath: '/assets/fovea_wasm_bg.wasm'
});
// ... use engine.process() in your render loopAPI
new FoveaEngine(config)
config.blurAmount: CSS blur string (default'8px')config.diffThreshold: Sensitivity (0-255) for change detection (default30)
async initialize(options)
options.wasmPath: Path (Node) or URL (Browser) to the.wasmbinary.options.wasmBuffer: ArrayBuffer of the WASM binary (optional alternative).
process(video, canvas)
video: Source HTMLVideoElementcanvas: Target HTMLCanvasElement (where the foveated effect is drawn)- Returns:
{ type, bbox, isKeyframe }
🤝 Contributing
Want to improve the engine? We welcome optimizations! Since the core is written in Rust, please see our Contribution Guide for build instructions.
License
MIT
