A tight, no-nonsense stability release: five tracked issues fixed, regression-tested, and locked down across platforms.
Today we released OxiMedia 0.1.7 — the pure-Rust, patent-free reconstruction of FFmpeg (multimedia processing) and OpenCV (computer vision), now hardened against a batch of real-world correctness and portability bugs.
No C. No C++. No FFmpeg binaries. No OpenCV Python bindings. No system libraries, no patent royalties. OxiMedia compiles to a single static binary (or to wasm32-unknown-unknown for the browser) and runs everywhere with one cargo add.
Why 0.1.7 matters
FFmpeg and OpenCV are powerful but carry chronic memory-safety risk, heavy build systems, and patent-encumbered codecs. OxiMedia replaces both in pure Rust — and that means the bugs that matter are the ordinary kind: a frame buffer written to the wrong place, a Unix-only socket that breaks the Windows build, two parallel jobs racing on the same temp file. 0.1.7 closes five of them, each with a regression test so they stay closed.
- Correct Theora frames. Decoded Theora plane data is now written into the
VideoFrameplanes viacopy_from_slice, instead of being written into a dropped temporary clone — so decoded output is actually correct (Issue #9). - Builds everywhere. The
oximedia-timesyncIPC socket module is now gated on#[cfg(all(unix, not(target_arch = "wasm32")))], eliminating Windows and WASM compilation failures (Issue #13). - Collision-free temp files.
TempFileManagerfilenames are now globally unique across concurrent instances, combining a staticAtomicU64manager-ID counter with the process ID and creation nanoseconds (Issue #14). - Parallel-safe scopes. Scope command temp inputs use unique per-call names (PID + thread ID +
AtomicU64+ nanos), and the hardcoded/tmp/out.y4mframe-extract path is replaced withstd::env::temp_dir()(Issue #16). - Spec-correct docs. The AVC SPS constraint-byte doctest now uses an 8-bit read (6 flags + 2 reserved) per H.264 §7.3.2.1.1 (Issue #15).
At 0.1.7 the workspace is 109 crates and ~2.75M lines of pure Rust, with 84,064 tests passing (0 failures, 245 skipped, cargo nextest run --workspace --all-features).
Technical Deep Dive: where the fixes land
The changes touch four layers of the 109-crate workspace:
-
Codecs (
oximedia-codec) — the Theora decoder now copies plane data into the liveVideoFramerather than a soon-dropped clone; the AVC/H.264 bitstream docs match the spec’s bit layout. -
Synchronization & I/O (
oximedia-timesync, temp-file management) — Unix-domain IPC sockets are cleanlycfg-gated so Windows andwasm32targets compile, and temp-file naming is made race-proof with atomic counters plus PID and nanosecond entropy. -
Scopes & Analysis (
oximedia-scopes) — waveform/vectorscope/histogram tooling no longer collides on shared temp paths under parallel invocation, and all scratch files route throughstd::env::temp_dir(). -
Build prerequisites — the root
README.mdandcrates/oximedia-accel/README.mdnow document theprotoc(tonic-build),cmake, andshaderctoolchain needed for the optional acceleration paths.
Workspace guarantees are unchanged: unsafe_code = "deny", single-binary deployment, WASM + WebGPU support, and zero C/Fortran in default features — the math layer is the pure-Rust OxiFFT and SciRS2.
Getting Started
cargo add oximedia
Decoding a Theora/OGG stream — now correct thanks to the Issue #9 fix — looks like this:
use oximedia::prelude::*;
fn main() -> oximedia::Result<()> {
let input = MediaReader::open("clip.ogv")?;
for frame in input.video_frames() {
let frame = frame?;
// Plane data is now copied into the live VideoFrame correctly.
println!("frame {}x{} ({} planes)", frame.width(), frame.height(), frame.plane_count());
}
Ok(())
}
What’s New in 0.1.7
- Issue #9 — Theora decoded frame planes written into
VideoFrameviacopy_from_slice(was writing to a dropped temporary clone). - Issue #13 —
oximedia-timesyncIPC socket module gated on#[cfg(all(unix, not(target_arch = "wasm32")))]to fix Windows/WASM builds. - Issue #14 —
TempFileManagerfilenames now globally unique across concurrent instances via a staticAtomicU64manager-ID counter + PID + creation nanoseconds. - Issue #15 — AVC SPS constraint-byte doctest corrected to an 8-bit read (6 flags + 2 reserved) per H.264 §7.3.2.1.1.
- Issue #16 — Scope temp inputs use unique per-call names (PID + thread ID +
AtomicU64+ nanos); frame-extract no longer hardcodes/tmp/out.y4m(nowstd::env::temp_dir()). - Regression tests added for every fixed issue (#9, #13, #14, #15, #16).
- Build-prerequisite docs for
protoc,cmake, andshadercadded to the root andoximedia-accelREADMEs.
Tips
- Re-decode your Theora assets. If you decoded
.ogv/Theora content with an earlier build and saw garbled or stale planes, re-run on 0.1.7 — the plane copy is now correct. - WASM and Windows just build. If
oximedia-timesyncpreviously broke yourwasm32or Windows compile, the IPC socket module is now properlycfg-gated; no workarounds needed. - Lean on
TempFileManager. For any concurrent or batch workload, prefer the built-in manager: its filenames are now globally unique across instances, so parallel jobs won’t stomp on each other’s scratch files. - Never hardcode
/tmp. This release replaces a stray/tmp/out.y4mwithstd::env::temp_dir()— follow the same pattern in your own pipelines so scope and frame-extract runs stay collision-free under parallelism. - Read the build-prereqs section. Only the optional acceleration paths need
protoc,cmake, andshaderc; the default pure-Rust build needs none of them. The READMEs now spell out exactly which is which.
This is the foundation
OxiMedia is the pure-Rust media and computer-vision layer of the COOLJAPAN ecosystem, built on its siblings:
- OxiFFT — the spectral engine behind audio analysis, MIR, alignment, and CV math.
- SciRS2 — scientific-computing primitives (linalg, random, SIMD) for the signal and CV paths.
- OxiARC — pure-Rust compression (deflate, lz4, zstd) for containers and archival.
- OxiONNX — the pure-Rust ONNX runtime powering OxiMedia’s opt-in ML pipelines without any C++ dependency.
Repository: https://github.com/cool-japan/oximedia
Star the repo if you’re tired of FFmpeg/OpenCV build hell and patent worries.
Pure Rust media and computer vision is here — fast, safe, patent-free, and sovereign.
— KitaSan at COOLJAPAN OÜ May 22, 2026