COOLJAPAN
← All posts

OxiMedia 0.2.0 Released — A Real Transcode Engine, Bit-Exact AV1/VP9/VP8 Decode, and the 'Real or Honest Error' Sweep

OxiMedia 0.2.0 ships a real frame-level transcode engine, AV1/VP9/VP8 key-frame decoders verified bit-exact against dav1d, aomdec, and libvpx/libwebp, real CENC/cbcs packager encryption, and a sweep replacing fabricated success with honest errors — the sovereign media layer for the COOLJAPAN ecosystem.

release oximedia ffmpeg opencv av1 vp9 vp8 codec pure-rust video

The pure-Rust FFmpeg + OpenCV replacement just decoded its first bit-exact AV1 frame — and stopped pretending on the ones it can’t.

Today we released OxiMedia 0.2.0 — a release built on three things: a real frame-level transcode engine that actually decodes, filters, and re-encodes instead of just copying streams; AV1, VP9, and VP8 key-frame/intra-frame video decoders verified bit-exact against their reference C decoders; and a broad “real or honest error” sweep that replaces silent placeholder and fabricated-success behavior with genuine implementations or explicit, testable errors across the packager, network, workflow, Python bindings, and CLI layers.

No C. No C++. No Fortran. OxiMedia’s default build has been 100% Pure Rust since 0.1.9 — zero aws-lc-sys, libsqlite3-sys, mlua-sys, shaderc-sys, zstd-sys, openssl-sys, rustfft, or realfft anywhere in the default dependency graph — and 0.2.0 adds three C reference decoders’ worth of decode logic without linking a single line of any of them. It compiles to one static binary (or to wasm32-unknown-unknown for the browser) and runs everywhere with one cargo add.

Why OxiMedia 0.2.0 is a game changer

FFmpeg and OpenCV get you most of the way there — until you hit the parts that were never really finished:

OxiMedia 0.2.0 ends all of that.

Technical Deep Dive: how the decode, transcode, and honesty work fit together

  1. Codec layer — oximedia-codec. The new av1/kf/ (bits, msac, hdr, cdfs, coef, pred, itx, recon, lf, cdef, lr) and vp9/kf/ (booldec, hdr, itx, lf, pred, recon, scan, tables) modules, plus oximedia-image’s webp/vp8/keyframe/ path, each port their codec’s intra decode from spec (AV1) or from libvpx/RFC 6386 (VP9/VP8), driven by a tile/partition/block decode driver with the full post-filter chain applied. Scope is explicit: 8-bit 4:2:0 profile 0, keyframe/intra only — inter-frame, 10/12-bit, film grain, and palette mode all return CodecError::UnsupportedFeature rather than a wrong frame.
  2. Frame-level transcode engine — oximedia-transcode. frame_level.rs, frame_adapters.rs, audio_adapters.rs, raw_sinks.rs, flac_bitstream.rs/flac_decode.rs, and alac_bitstream.rs implement the actual decode→filter→encode path, gated behind requires_frame_level() in pipeline.rs so a simple remux job still takes the fast stream-copy route.
  3. Packager and network security layer. oximedia-packager::encryption (real CENC/cbcs AES), oximedia-net::srt::crypto (a rewritten, real six-round RFC 3394 AES key wrap verified against the RFC’s own §4.1 test vector), and new bounds/allocation-cap hardening across MP4 box nesting, DVB subtitle regions, RTSP bodies, RTMP chunks, WebRTC SCTP reassembly, and AAF essence ranges.
  4. CLI, Python bindings, and the honesty sweep. oximedia-cli (~40 flags verified real, from --map and -ss/-t to --crf and --quiet), oximedia-py’s PyO3 bindings (proxy_py.rs, cloud_py.rs, video.rs, workflow_py.rs), and crates spanning production, VFX, and accessibility all had fabricated-success paths replaced with real behavior or an honest Err, each backed by a new regression test proving the old behavior is gone.

Getting Started

cargo add oximedia

or pin the version and pick features in Cargo.toml:

[dependencies]
oximedia = { version = "0.2.0", features = ["full"] }

Probe a file and transcode it with quality control — straight from the crate’s own docs:

use oximedia::prelude::*;

// Probe a media file
let data = std::fs::read("video.webm")?;
let result = probe_format(&data)?;
println!("Format: {:?}, Confidence: {:.1}%",
    result.format, result.confidence * 100.0);

// Transcode with quality control
let pipeline = TranscodePipeline::builder()
    .input("input.mkv")
    .video_codec(VideoCodec::Av1)
    .audio_codec(AudioCodec::Opus)
    .output("output.webm")
    .build()?;

pipeline.run().await?;

Or reach for the CLI directly:

cargo install oximedia-cli
oximedia probe -i video.webm
oximedia transcode -i input.mkv -o output.webm --codec av1

What’s New in 0.2.0

Tips

This is the foundation

OxiMedia is the pure-Rust media and computer-vision layer of the COOLJAPAN ecosystem, leaning on its siblings directly:

Repository: https://github.com/cool-japan/oximedia

Star the repo if you think a media framework’s decoder should either produce a real frame or say so honestly — never both claim success and hand you the wrong picture.

The era of choosing between FFmpeg’s patent-encumbered C core and a media stack that quietly fakes the hard parts is over. Pure Rust media is here — bit-exact where it counts, and honest everywhere else.

KitaSan at COOLJAPAN OÜ July 15, 2026

↑ Back to all posts