Skip to content

OpenJOC v0.20.0

Choose a tag to compare

@chyinan chyinan released this 15 Oct 07:47
d6a2476

[0.20.0] — 2026-10-15

OpenJOC 0.20 improves ordered direct-FIR processing, adds interactive mpv
settings and live output gain, and fixes decoder, custom-layout, SOFA, and
playback-state edge cases.

Added

  • Added a compact, clickable mpv OpenJOC settings panel with persistent
    settings, Unicode-safe Windows file handling, and live output gain.
  • Added runtime-gated x86 AVX adjacent-output direct FIR and a safe native
    AArch64 adjacent-output unroll. Each output retains its ordered accumulation;
    covered strict PCM comparisons remain bit-exact.

Changed

  • Updated the default downstream LAV source to the tested a876fbc revision.
  • Added an explicit full LAV packaging option with Audio, Video, Splitter, and
    QuickSync while retaining the default audio-only one-click installer. Full
    registration waits for each process and checks its actual exit code.

Documentation

  • Clarified the historical C initializer boundary on ILP32 and the LP64
    size ambiguity, with migration steps using existing versioned initializers.
    No ABI implementation, symbol, or supported build target is changed; the
    historical binary-compatibility defect is not repaired by this clarification.

Fixed

  • Corrected point projection and generated base routes for custom two-layer
    speaker layouts to clamp and blend using their actual layer heights.
    Affected custom renders change; preset and preset-derived region projections,
    the legacy 0..QMAX arithmetic, and the separate extent law are unchanged.
  • Preserved finite f64 PCM and metadata coordinates exactly when reimporting
    scene JSON, using round-trip-accurate floating-point parsing.
  • Preserved custom speaker geometry and channel order in CLI renders using
    topology overrides, performance reports, or contribution diagnostics,
    including layouts whose display names match presets.
  • Kept custom layouts named 2.0 in speaker mode instead of rejecting them
    as incompatible with the preset stereo path.
  • Reset CLI spatial-bridge gain history on decoder discontinuities when using
    an explicit --topology sidecar, even when its full topology is unchanged.
  • Avoided false custom-SOFA coverage errors for resolvable shallow rotated
    triangles with conservative positive-cone certification, preserving existing
    successful neighbor selections and interpolation arithmetic.
  • Length-frame ordered custom speaker channel labels in effective configuration
    descriptors, distinguishing labels such as ["A,B", "C"] and ["A", "B,C"].
    Custom-layout fingerprints change; preset descriptors and fingerprints remain
    unchanged. This changes configuration identity only, not rendering or PCM.

Additional fixes

  • Corrected custom CAF front/back coordinate conversion and installed the
    pre-event OAMD topology state before applying scene events.
  • Preserved delayed GStreamer PCM timestamps and semantic transport layout
    metadata across the native playback boundary.
  • Preserved E-AC-3 TDAC history across equivalent dependent channel maps and
    retained dialnorm changes within grouped short frames.
  • Rejected antipodal sparse SOFA interpolation coverage rather than accepting
    unsupported directions.
  • Reset CLI linked gain history on in-band JOC resets.
  • Corrected mpv live-gain timestamp alignment, settings navigation, Cancel and
    late-readiness handling, and gain persistence across filter-context rebuilds.
  • Corrected Windows Unicode package audits and native MSVC dependency setup
    for the optional LAV packaging workflow.

Maintenance and validation

  • Factored shared decoding, AU admission, session lifecycle, rendering, output,
    and packaging boundaries without changing the frozen PCM or event contracts.
  • Added frozen session-contract coverage, bounded PCM failure evidence and
    provenance, cross-platform path handling, and reproducible package checks.
  • Kept the historical PCM oracle and frozen expected outputs unchanged.
    Release-version metadata admission now explicitly includes 0.20.0 while
    retaining exact external dependency and internal path/version checks.

Scope and known limitations

  • Correctness fixes may change affected custom renders or previously incorrect
    decoder output. The bit-exact performance and maintenance work is separately
    gated; this release does not claim identical PCM to 0.19.0 for every input.
  • FIR measurements are scoped to the documented workloads and machines.
    They do not establish universal ARM/x86 speedups, Windows/LAV playback speed,
    or physical-device latency.
  • The historical unversioned C configuration initializer remains unsafe for
    older, smaller ILP32 allocations; LP64 size ambiguity also remains. Use the
    documented versioned initializers and matching headers. Documentation does
    not repair this historical binary-compatibility defect.
  • Listener orientation and virtual 9.1.6 remain experimental and host-supplied.
    No sensor integration, automatic headphone detection, physical multichannel
    hardware validation, or exact native Dolby/Apple renderer equivalence is claimed.
  • The main release workflow publishes CLI/library, mpv, SDK, FFmpeg and GStreamer
    packages for macOS arm64, Linux x86_64 and Windows x64. LAV builds are separate;
    the updated source pin and optional full-package tooling do not imply a
    matching 0.20.0 LAV binary has been published.
  • Nonzero output gain is not clipping protection. Existing format, routing,
    SOFA coverage and platform limitations remain in force.