Skip to content

Integrations

The adapters own transport, host lifecycle, and output negotiation. OpenJOC owns E-AC-3/JOC decode, scene construction, spatial rendering, output semantics, latency, and drain state.

The repository keeps adapter-specific contracts in their natural locations rather than copying them into a second manually maintained specification. Use these links for the current implementation detail:

Adapter Canonical repository documentation
FFmpeg external bridge FFMPEG.md
Native FFmpeg libopenjoc wrapper FFMPEG_NATIVE.md
GStreamer GSTREAMER.md
mpv MPV.md
mpv user guide OpenJOC Player Bundle
Player bundles PLAYER_PACKAGING.md
Ecosystem packages ECOSYSTEM_PACKAGING.md
Windows DirectShow/LAV Windows LAV / PotPlayer

Stock FFmpeg and upstream mpv are not modified by installing OpenJOC. Project-provided patched builds are separate products with their own corresponding-source and third-party notice obligations.

WebAssembly bridge

openjoc-wasm exposes the browser decoder ABI. Decode/render timing means, P95, maxima, and realtime factor cover the most recent 4096 decoded access units (about 131 seconds at 48 kHz). Access-unit, output-frame, and sample counters cover the whole session. Reset clears both. Repeated metric reads reuse a cached summary until another access unit is recorded.

The WASM CI workflow builds both embedded and external HRTF configurations for wasm32-unknown-unknown. Its Node.js smoke test instantiates the actual module and checks Stereo, D1/D2 binaural, Custom SOFA, fragmented input, reset, drain, PCM ownership, and invalid-input rejection. Browser audio-device scheduling remains a separate host concern.