Introduction¶
OpenJOC is an independent Rust decoder for supported E-AC-3 JOC streams. It accepts supported raw E-AC-3 or seekable ordinary MP4/M4A input. It performs E-AC-3 JOC object decoding from in-band EMDF, decoding the supported OAMD metadata prefix/timeline and JOC reconstruction payload into separate decoder-domain spatial metadata and ReconstructionBasis audio rows. Its JOC/OAMD object association, experimental speaker/binaural bridge, and reconstructed ADM export each have a documented profile boundary.
The main user-facing surfaces are:
openjoc render-jocfor speaker or binaural rendering;openjoc export-admfor a reconstructed ADM BWF representation;openjoc inspectandopenjoc decodefor metadata and reconstruction diagnostics;- the Rust
OpenJocSessionAPI and versioned C ABI for embedding; - project-provided FFmpeg, GStreamer, mpv, and Windows DirectShow/LAV integrations.
The project has two important semantic boundaries:
- A
ReconstructionBasisrow is a decoder-domain, carrier-local output signal. It is not an authored Atmos stem. - The reconstructed ADM exporter binds decoded JOC object PCM to decoded OAMD movement only within its admitted profile. It does not recover the source ADM master.
OpenJOC uses a 48 kHz render domain. The ordinary JOC speaker path is experimental and bounded by the documented profiles, layouts, output containers, and validation status. The capability matrix owns the detailed status vocabulary.
The first successful render¶
Install the CLI, run openjoc --help, then follow Quick start. If your input is a seekable M4A or MP4, keep ffprobe and ffmpeg available as described in Installation.