mpv OpenJOC Player Bundle¶
The OpenJOC Player Bundle is a project-provided, patched mpv/FFmpeg build. It
is not an official upstream mpv or FFmpeg release. Extract the bundle and start
bin/openjoc-mpv on macOS/Linux or bin/openjoc-mpv.cmd on Windows with a
media file. Windows can also start the GUI directly with bin/mpv.exe; its
adjacent bin/portable_config is discovered automatically, so no wrapper or
global mpv configuration change is needed. Direct discovery applies when
MPV_HOME is unset; an existing MPV_HOME takes precedence. The packaged
launcher explicitly selects the bundle's config directory and does not change
the environment variable.
bin/openjoc-mpv path/to/media
Confirmed JOC is selected automatically by the patched player. Ordinary
E-AC-3 remains on mpv's stock eac3 decoder. Compressed passthrough can be
requested with --audio-spdif=eac3; that bypasses OpenJOC rendering.
Open the settings menu¶
Press Ctrl+Alt+J in the Player Bundle to open the compact settings panel.
Click the arrows and Set path… control, or use Up/Down (Tab also moves
focus), Left/Right, and Enter. The main page includes:
- Output policy: Stereo speakers, Binaural, 5.1, 7.1, 5.1.2, 5.1.4, 7.1.2, or 7.1.4
- Dialnorm: Calibrated (recommended) or Unity/Compatibility
- Binaural HRTF: SADIE II D1/KU100, SADIE II D2/KEMAR, or Custom SOFA
- Binaural virtual layout: 7.1.4 or experimental 9.1.6
Menu changes are drafts. Save stores them in
bin/portable_config/openjoc-settings.json for the next file; it does not
reload or seek the current file. Apply Current is a separate explicit
action for the current selected, confirmed libopenjoc E-AC-3 track. It writes
the file-local FFmpeg decoder-option map and lets the pinned mpv rebuild the
audio chain, so a brief audio gap may occur. It does not seek or reload the
file. Apply Current is immediate and is not undone by Cancel; Save remains
separate for the next file.
The Live output gain row adjusts −20.0 to +20.0 dB in 0.1 dB steps, with a
Reset control at 0 dB. The saved JSON key is output_gain_tenths_db; older
settings files that omit it continue to mean 0 dB. At 0 dB the named
post-render filter uses exact unity. Gain preview is separate from mpv's
master-volume control and is applied only while the selected audio track is
confirmed as E-AC-3 decoded by libopenjoc. FLAC, PCM, ordinary E-AC-3 and
compressed passthrough do not receive the OpenJOC gain filter. On those tracks
the value can still be saved for a later OpenJOC file, while the panel reports
that live preview is unavailable. Filter or command failures are shown as
errors; the script does not substitute mpv volume or a decoder option.
Cancel discards the draft and restores the live gain captured before the
unsaved gain preview, including after a failed preview. Esc, a click outside,
or closing the menu keeps the draft and any active preview for this playback;
that preview is not persisted unless you choose Save. Saving while a preview is
pending or failed reports that it has not been confirmed. Before decoder
creation, the menu merges decoder options into the per-file map when a file has
an E-AC-3 audio track. JOC is not yet known at that point, so plain or
unselected E-AC-3 tracks may also receive the options. Because the map is
file-local, it may reach other audio decoders in a mixed-track file and cause
unsupported-option warnings. The menu does not select or force libopenjoc,
change ad or aid, or touch audio-channels. Files without E-AC-3 bypass
this hook. The menu leaves current playback in place unless Apply Current is
explicitly selected; it never seeks or reloads the file, which is important
for forward-only raw JOC streams.
For Custom SOFA, Set path… opens a text prompt; enter an existing local
file path there. The
loader still validates the supported SimpleFreeFieldHRIR subset when the
decoder opens; see Binaural and SOFA.
If a previous bundle saved settings at config/openjoc-settings.json, the
menu reads that file as a migration fallback when the new portable-config file
is absent. It leaves the old file untouched; the next explicit Save writes to
bin/portable_config/openjoc-settings.json.
Output and hardware¶
Output policy selects the OpenJOC renderer target. Binaural is explicit and
produces two-channel headphone output; a two-channel speaker render is a
separate choice. mpv keeps its normal audio output mapping, which may adapt the
renderer output to the active AO. The menu does not change audio-channels,
detect headphones, or change how ordinary media is routed. Configure mpv's
normal channel map separately if you need an exact hardware target.
Settings rows show the pending/saved selection; separate read-only rows report mpv's current decoder and channel properties, not live JOC metadata or diagnostics. The independent post-render gain is not mpv's normal volume control. The LAV live JOC Stream page is not available in the current mpv integration.
The packaged D1/D2 binaural exact-unity qualification for this candidate is a CI release gate and has not yet been reported green. Do not interpret the presence of the menu control as completed package qualification.
The mpv integration guide documents command-line profiles, exact channel maps, decoder options, and verification boundaries.