OxiMedia

June 4, 2026 · View on GitHub

Pure Rust reconstruction of OpenCV + FFmpeg — A patent-free, memory-safe multimedia and computer vision framework.

License Rust Version Released Crates SLOC

Vision

OxiMedia is a clean room, Pure Rust reconstruction of both FFmpeg (multimedia processing) and OpenCV (computer vision) — unified in a single cohesive framework.

FFmpeg Domain

Codec encoding/decoding (AV1, VP9, VP8, Theora, Opus, Vorbis, FLAC, MP3), container muxing/demuxing (MP4, MKV, MPEG-TS, OGG), streaming protocols (HLS, DASH, RTMP, SRT, WebRTC, SMPTE 2110), transcoding pipelines, filter graphs (DAG-based), audio metering (EBU R128), loudness normalization, packaging (CMAF, DRM/CENC), and server-side media delivery.

OpenCV Domain

Computer vision (object detection, motion tracking, video enhancement, quality assessment), professional image I/O (DPX, OpenEXR, TIFF), video stabilization, scene analysis, shot detection, denoising (spatial/temporal/hybrid), camera calibration, color management (ICC, ACES, HDR), video scopes (waveform, vectorscope, histogram), and forensic analysis (ELA, PRNU, copy-move detection).

Design Principles

  • Patent Freedom: Only royalty-free codecs (AV1, VP9, Opus, FLAC, and more)
  • Memory Safety: Zero unsafe code, compile-time guarantees
  • Async-First: Built on Tokio for massive concurrency
  • Single Binary: No DLL dependencies, no system library requirements
  • WASM Ready: Runs in browser without transcoding servers
  • Sovereign: No C/Fortran dependencies in default features — 100% Pure Rust

FFmpeg + OpenCV, Reimagined

FFmpeg is the de facto standard for multimedia processing, but it is written in C with patent-encumbered codecs (H.264, H.265, AAC), chronic memory safety vulnerabilities, and notoriously complex build systems requiring dozens of system libraries.

OpenCV is the de facto standard for computer vision, but it depends on C++ with complex CMake builds, optional proprietary modules (CUDA, Intel IPP), and heavy system-level dependencies.

OxiMedia unifies both into a single Pure Rust framework with zero C/Fortran dependencies:

FFmpegOpenCVOxiMedia
LanguageCC++Pure Rust
Memory safetyManualManualCompile-time guaranteed
Patent-free codecsOpt-inN/ADefault (AV1, VP9, Opus, FLAC)
Install./configure && make + system depscmake + system depscargo add oximedia
WASM supportLimited (Emscripten)Limited (Emscripten)Native (wasm32-unknown-unknown)
CV + Media unifiedNoNoYes — single framework

From the FFmpeg world: codec encode/decode, container mux/demux, streaming (HLS/DASH/RTMP/SRT/WebRTC), transcoding pipelines, filter graphs, audio processing, packaging, and media server.

From the OpenCV world: detection, tracking, stabilization, scene analysis, shot detection, denoising, calibration, image I/O (DPX/EXR/TIFF), color science, quality metrics (PSNR/SSIM/VMAF), and forensics.

One cargo add — no battling system library installations, no pkg-config, no LD_LIBRARY_PATH, no brew install ffmpeg opencv.

Project Scale

OxiMedia is a production-grade framework at v0.1.8 (active cycle, 2026-06-02):

MetricValue
Total crates109
Total SLOC (Rust)~2,752,000
Tests passing100,278 (0 failures, 0 warnings — cargo nextest run --workspace --all-features)
Stable crates109
Alpha crates0
Partial crates0
LicenseApache 2.0
MSRVRust 1.85+

Sovereign ML Pipelines (v0.1.7+)

OxiMedia 0.1.7 introduced the oximedia-ml crate — a typed ML pipeline layer built atop the Pure-Rust OxiONNX runtime. Inference is entirely opt-in; the default oximedia build still pulls in zero ONNX symbols and stays C/Fortran-free.

Available pipelines

PipelineFeatureI/OReference model
SceneClassifierscene-classifier224×224 RGB → Vec<SceneClassification>Places365 / ResNet
ShotBoundaryDetectorshot-boundary48×27 RGB window → Vec<ShotBoundary>TransNet V2
AestheticScoreraesthetic-score224×224 RGB → AestheticScoreNIMA
ObjectDetectorobject-detector640×640 RGB → Vec<Detection> (NMS)YOLOv8 (80 COCO)
FaceEmbedderface-embedder112×112 RGB face → 512-dim FaceEmbeddingArcFace

Quick start

[dependencies]
oximedia = { version = "0.1.8", features = ["ml", "ml-scene-classifier", "ml-onnx"] }
use oximedia::ml::pipelines::{SceneClassifier, SceneImage};
use oximedia::ml::{DeviceType, TypedPipeline};

let classifier = SceneClassifier::load("places365.onnx", DeviceType::auto())?;
let image = SceneImage::new(rgb_bytes, 224, 224)?;
for pred in classifier.run(image)? {
    println!("class {} -> {:.3}", pred.class_index, pred.score);
}

Device selection

DeviceType::auto() probes the strongest available backend once and memoises the result: CUDA → DirectML → WebGPU → CPU. Each backend is a feature flag (cuda, directml, webgpu); CPU is always available. cuda is native-only; every other backend — including the default CPU path — compiles on wasm32-unknown-unknown.

CLI

The oximedia ml namespace ships three subcommands (honour --json for machine-readable output):

oximedia ml list                  # enumerate built-in pipelines + model zoo
oximedia ml probe                 # report GPU backend availability
oximedia ml run --pipeline scene-classifier \
                --model places365.onnx \
                --input frame.png \
                --device auto \
                --top-k 5 \
                --dry-run

Downstream integrations

Several domain crates gain an onnx feature for an ML-backed fast path while keeping the Pure-Rust default intact: oximedia-scene (MlSceneEnricher), oximedia-shots (MlShotDetector), oximedia-caption-gen (CaptionEncoder), oximedia-recommend (EmbeddingExtractor), oximedia-mir (MusicTagger).

See docs/ml_guide.md for the full feature matrix, per-pipeline I/O contracts, device selection details, WASM support matrix, and roadmap.

What's New in v0.1.8

Active cycle — latest release 2026-06-02. Theme: Codec completeness, audio restoration, algorithmic depth, and entropy coding improvements.

  • SILK encoder with NSQ noise-shaped quantisation (oximedia-audio): Real SILK encoder path with noise-shaped quantisation loop; 440 Hz sine round-trip SNR ≥ 6 dB verified.
  • AV1 non-square TX block coefficient decoding fixed (oximedia-codec): CoeffBuffer::pos_to_rowcol now correctly handles non-square transform blocks, fixing a symbol-vs-position bug in AV1 entropy decoding EOB CDF paths.
  • AAF binary serializer (oximedia-aaf): Full SMPTE ST 377-1 CFB + KLV binary serializer; 22 previously orphan AAF modules registered and wired into the workspace.
  • NDI SpeedHQ Huffman entropy coding (oximedia-ndi): Real Huffman entropy coding for NDI SpeedHQ streams; 22 NDI orphan modules registered and wired.
  • DRM software TPM 2.0 emulator + Secure Enclave emulator (oximedia-drm): Pure-Rust software TPM 2.0 emulator and Secure Enclave emulator — enables DRM key protection on platforms without hardware TPM/SE.
  • Audio restoration: AR-LPC declick + Boll 1979 spectral subtraction + Wiener denoiser (oximedia-restore): Three new audio restoration algorithms: AR-LPC-based declicker, Boll 1979 spectral subtraction noise reducer, and a parametric Wiener filter denoiser.
  • Y4M reader/writer + ITU-T P.910 SI/TI/motion metrics (oximedia-bench): Y4M (YUV4MPEG2) container reader/writer and full ITU-T P.910 Spatial Information, Temporal Information, and motion activity metrics.
  • S3 multipart upload with retry + configurable parallelism (oximedia-server): S3 multipart upload with per-part retry logic and configurable upload parallelism for high-throughput media ingest.
  • FLAC/Opus/MP3/Vorbis waveform decode wired (oximedia-clips): Clip waveform extraction now uses the real demuxer path for FLAC, Opus, MP3, and Vorbis — replacing stub silence.
  • SRT ingest server wired to real SrtListener::accept (oximedia-net): SRT ingest now calls the real SrtListener::accept instead of the previous no-op stub, enabling live SRT stream ingestion.
  • AutoCaptionPipeline example refreshed; ONNX/ML pipeline improvements (oximedia-ml, oximedia-caption-gen): AutoCaption example updated to current API; ML pipeline feature flags and ONNX runtime wiring improved across the workspace.
  • AnalysisScale Half/Quarter + downsample_box_luma (oximedia-analysis): Configurable downscaling (Full/Half/Quarter) for the analysis pipeline; box-filter downsample; 5 new tests.
  • rFFT phase correlation (oximedia-align): phase_correlate_1d now uses oxifft::rfft/irfft (N/2+1 bins, half the complex ops) matching the OxiFFT policy; 4 regression tests.
  • DataCite 4.x + PBCore 2.1 + MigrationTriggerPolicy (oximedia-archive-pro): DataCite DOI metadata generation, PBCore metadata crosswalk, and automated format migration triggers; 18 new tests.
  • batch_conform + ProxyDbExport / import_with_rebase (oximedia-proxy): Batch EDL conforming with merge strategies, proxy database export/import with root-prefix rebase; 9 new tests.
  • SegmentPlan + encode_segments_parallel (oximedia-convert): Keyframe-boundary segment plan with rayon-parallel encode; codec-agnostic concat; 5 new tests.
  • scale_tiled + scale_reference (oximedia-scaling): Cache-blocked tiled scaling (bit-exact vs reference), rayon par_iter over tiles; 7 new tests.
  • Speech-clarity biquad DRC + SIMD contrast enhancement (oximedia-access): Real speech DSP (4th-order Butterworth 300–3400 Hz, downward DRC, peaking boost) and AVX2/NEON SIMD contrast enhancement with 256-entry gamma LUT.
  • NSQ 440 Hz SNR fix (oximedia-codec): SILK LTP coarse-to-fine decimated pitch search, per-subframe contour RD, fractional-lag refinement, round-trip harness.
  • Waves 1–20 complete, 100,278 tests passing (0 failures, 0 warnings — cargo nextest run --workspace --all-features).
  • Zero clippy warnings workspace-wide; WASM check clean.

What's New in v0.1.5

Released 2026-04-21. Theme: Full ONNX Runtime integration via the Pure-Rust OxiONNX stack (previously slated for 0.3.0). All inference is feature-gated; the pure-Rust default build stays C/Fortran-free.

  • Pure-Rust ONNX inference via OxiONNX: Workspace now depends on the full OxiONNX stack (oxionnx, oxionnx-ops, oxionnx-gpu, oxionnx-directml, oxionnx-proto) instead of the C++ ort runtime — preserves the COOLJAPAN Pure-Rust Policy.
  • New oximedia-ml facade crate: Central ML layer exposing OnnxModel, ModelCache (concurrent LRU model cache with ~/.cache/oximedia/models/), TypedPipeline<In, Out> trait, DeviceType::auto() runtime probe, ImagePreprocessor (ImageNet normalize + letterbox + NCHW), and ModelZoo registry.
  • Typed pipelines: SceneClassifier (ImageNet-style top-K classifier with softmax/argsort postprocessing) and ShotBoundaryDetector (TransNetV2-compatible sliding window with many-hot hard/soft cut outputs) — more pipelines (AutoCaption, AestheticScore, ObjectDetector, FaceEmbedder) queued for Wave 2.
  • Facade ml feature: oximedia::ml module and prelude re-exports gated behind ml (off by default). Sub-features ml-scene-classifier, ml-shot-boundary, ml-onnx for granular opt-in; full feature picks them all up.
  • 55 new tests in oximedia-ml: Covers preprocessing, cache eviction, pipeline contracts, and ModelInfo round-trips. Zero clippy warnings. Pure-Rust default build verified — no ONNX symbols linked unless onnx feature is enabled.

What's New in v0.1.4

Released 2026-04-20.

  • MJPEG and APV end-to-end codec support: Full encode/decode pipelines for MJPEG (Motion JPEG) and APV (Advanced Professional Video), including correct MP4 and Matroska sample-entry wiring.
  • JPEG encoder/decoder spec compliance: Rebuilt JPEG encoder/decoder to full JFIF/Exif spec compliance; PSNR improved from 6 dB to 32 dB at quality 85.
  • AVI container muxer + demuxer: New oximedia-avi crate — pure-Rust AVI muxer and demuxer targeting MJPEG-only streams up to 1 GB (RIFF list size constraint).
  • AJXL ISOBMFF animated encoder + streaming decoder iterator: Animated JPEG-XL sequences stored in ISOBMFF with a streaming Iterator-based decoder for low-memory playback.
  • CLI MJPEG/APV support: oximedia-cli now accepts -c:v mjpeg and -c:v apv on all transcode/convert commands.
  • WASM32 platform support: 5 additional crates (oximedia-codec, oximedia-container, oximedia-audio, oximedia-convert, oximedia-graphics) confirmed clean under wasm32-unknown-unknown.

Architecture

FFmpeg domain spans Foundation, Codecs & Container, Networking, and Audio layers. OpenCV domain spans Computer Vision, Video Processing, and Analysis layers. Both domains share the Processing Pipeline and Applications layers above them.

┌─────────────────────────────────────────────────────────────────────────────┐
│                              Applications                                    │
│          CLI / Server / Python Bindings (oximedia-py) / Review UI            │
├──────────────────────┬──────────────────────────────┬───────────────────────┤
│   Production Layer   │      Media Management        │    Broadcast Layer    │
│  oximedia-playout    │      oximedia-mam             │  oximedia-switcher    │
│  oximedia-playlist   │      oximedia-search          │  oximedia-routing     │
│  oximedia-automation │      oximedia-rights          │  oximedia-ndi         │
│  oximedia-multicam   │      oximedia-review          │  oximedia-videoip     │
├──────────────────────┴──────────────────────────────┴───────────────────────┤
│                         Processing Pipeline                                  │
│   oximedia-graph (Filter DAG)  ·  oximedia-transcode  ·  oximedia-effects   │
│   oximedia-timeline            ·  oximedia-edit        ·  oximedia-workflow  │
├────────────────┬────────────────┬──────────────────┬──────────────────────-─┤
│ Video Domain   │  Audio Domain  │  Computer Vision │  Quality & Analysis    │
│ oximedia-codec │ oximedia-audio │ oximedia-cv      │ oximedia-quality       │
│ oximedia-vfx   │ oximedia-metering│ oximedia-scene │ oximedia-qc            │
│ oximedia-lut   │ oximedia-normalize│ oximedia-shots│ oximedia-analysis      │
│ oximedia-colormgmt│ oximedia-effects│ oximedia-stabilize│ oximedia-scopes   │
├────────────────┴────────────────┴──────────────────┴────────────────────────┤
│                         Container / Networking                               │
│  oximedia-container  ·  oximedia-net  ·  oximedia-packager                  │
│  oximedia-hls/DASH   ·  oximedia-srt  ·  oximedia-webrtc                   │
├─────────────────────────────────────────────────────────────────────────────┤
│                           Foundation                                         │
│     oximedia-io  ·  oximedia-core  ·  oximedia-gpu  ·  oximedia-simd        │
│     oximedia-accel  ·  oximedia-storage  ·  oximedia-jobs                   │
└─────────────────────────────────────────────────────────────────────────────┘

Crates

Foundation

CrateDescriptionStatus
oximedia-coreCore types, traits, error handling, buffer poolsStable
oximedia-ioI/O foundation (async media source, bit reader, Exp-Golomb)Stable
oximedia-gpuGPU compute via WGPU (Vulkan/Metal/DX12)Stable
oximedia-simdHand-written SIMD kernels for codec accelerationStable
oximedia-accelGPU acceleration via Vulkan compute with CPU fallbackStable
oximedia-storageCloud storage abstraction (S3, Azure, GCS)Stable
oximedia-jobsJob queue (priority scheduling, SQLite persistence, worker pool)Stable
oximedia-pluginDynamic codec plugin system with registry and manifestsStable
oximedia-benchComprehensive codec benchmarking suiteStable
oximedia-presetsPreset management (codec, platform presets: YouTube, Instagram, etc.)Stable

Codecs & Container

CrateDescriptionStatus
oximedia-codecVideo codecs (AV1, VP9, VP8, Theora) and image I/OStable (mixed decoder coverage — see docs/codec_status.md)
oximedia-audioAudio codec implementations (Opus, Vorbis, FLAC, MP3)Stable (Vorbis decode is bitstream-parsing only — see docs/codec_status.md)
oximedia-containerContainer mux/demux (MP4, MKV, MPEG-TS, OGG)Stable
oximedia-lutColor science/LUT (1D/3D, Rec.709/2020/DCI-P3/ACES, HDR)Stable
oximedia-edlEDL parser/generator (CMX 3600, GVG, Sony BVE-9000)Stable
oximedia-aafSMPTE ST 377-1 AAF reader/writer for post-productionStable
oximedia-imfIMF SMPTE ST 2067 (CPL, PKL, ASSETMAP, MXF essence)Stable
oximedia-dolbyvisionDolby Vision RPU metadata (profiles 5/7/8/8.1/8.4)Stable
oximedia-drmDRM/encryption (CENC, Widevine, PlayReady, FairPlay)Stable
oximedia-subtitleSubtitle/caption rendering (SRT, WebVTT, CEA-608/708)Stable
oximedia-timecodeLTC and VITC timecode reading/writingStable
oximedia-aviAVI container muxer + demuxer (MJPEG-only, ≤1 GB RIFF)Stable
oximedia-compat-ffmpegFFmpeg CLI argument compatibility layer (80+ codec mappings)Stable

Networking & Streaming

CrateDescriptionStatus
oximedia-netNetwork streaming (HLS/DASH/RTMP/SRT/WebRTC/SMPTE 2110)Stable
oximedia-packagerStreaming packaging (HLS/DASH/CMAF, encryption, DRM)Stable
oximedia-serverRESTful media server with transcoding and CDN supportStable
oximedia-cloudCloud integration (AWS, Azure, GCP)Stable
oximedia-ndiNDI support (send/receive, failover, tally, bandwidth management)Stable
oximedia-videoipPatent-free video-over-IP (NDI alternative)Stable
oximedia-timesyncPrecision Time Protocol and clock disciplineStable
oximedia-distributedDistributed encoding (gRPC, load balancing, fault tolerance)Stable

Video Processing

CrateDescriptionStatus
oximedia-cvComputer vision (detection, tracking, enhancement, quality)Stable
oximedia-graphFilter graph pipeline (DAG, topological sort, optimization)Stable
oximedia-effectsAudio effects (reverb, delay, chorus, compressor, EQ)Stable
oximedia-vfxProfessional video effects libraryStable
oximedia-colormgmtColor management (ICC profiles, ACES, HDR, LUT/GPU)Stable
oximedia-imageProfessional image I/O (DPX, OpenEXR, TIFF)Stable
oximedia-scalingProfessional video scaling with multiple filtersStable
oximedia-stabilizeProfessional video stabilizationStable
oximedia-denoiseVideo denoising (spatial, temporal, hybrid)Stable
oximedia-optimizeCodec optimization (bitrate control, RDO, adaptive quantization)Stable
oximedia-transcodeHigh-level transcoding pipelineStable
oximedia-calibrateProfessional color calibration and matchingStable
oximedia-graphicsBroadcast graphics engine (lower thirds, tickers, animations)Stable
oximedia-watermarkProfessional audio watermarking and steganographyStable
oximedia-virtualVirtual production and LED wall toolsStable

Audio Processing

CrateDescriptionStatus
oximedia-audio-analysisAdvanced audio analysis and forensicsStable
oximedia-meteringBroadcast audio metering (EBU R128, ITU-R BS.1770-4, ATSC A/85)Stable
oximedia-normalizeLoudness normalization (EBU R128, ATSC A/85, ReplayGain)Stable
oximedia-restoreAudio restoration (click/crackle/hum removal, declipping)Stable
oximedia-mixerProfessional digital audio mixer (multi-channel, automation)Stable
oximedia-mirMusic Information Retrieval (tempo, key/chord, genre/mood)Stable
oximedia-audiopostAudio post-production (ADR, Foley, mixing, sound design)Stable
oximedia-routingProfessional audio routing and patchingStable

Analysis & Quality

CrateDescriptionStatus
oximedia-qualityVideo quality metrics (PSNR, SSIM, VMAF, VIF, BRISQUE)Stable
oximedia-qcQuality control (format, bitrate, color, temporal, audio, HDR)Stable
oximedia-analysisComprehensive media analysis and quality assessmentStable
oximedia-scopesProfessional video scopes (waveform, vectorscope, histogram)Stable
oximedia-sceneScene understanding and AI-powered video analysisStable
oximedia-shotsShot detection and classification engineStable
oximedia-forensicsVideo/image forensics (ELA, PRNU, copy-move detection)Stable
oximedia-profilerPerformance profiling (CPU/GPU/memory, flamegraphs, regression)Stable
oximedia-dedupDuplicate detection (perceptual/crypto hashing, audio fingerprint)Stable

Production & Broadcast

CrateDescriptionStatus
oximedia-playoutPlayout engine (channel management, automation, failover, graphics)Stable
oximedia-playlistPlaylist management (scheduling, EPG, gap filling, multichannel)Stable
oximedia-automation24/7 broadcast automation with Lua scriptingStable
oximedia-switcherProfessional live production video switcherStable
oximedia-multicamMulti-camera production (angle management, auto-switching, sync)Stable
oximedia-monitorSystem monitoring (alerting, metrics, REST API, health checks)Stable
oximedia-captionsClosed captioning/subtitles (CEA-608/708, TTML, WebVTT)Stable
oximedia-accessAccessibility features (audio description, captions, transcripts, compliance)Stable
oximedia-gamingGame streaming (ultra-low latency, NVENC/QSV/VCE, replay buffer)Stable

Post-Production & Workflow

CrateDescriptionStatus
oximedia-editVideo timeline editor with effects and keyframe animationStable
oximedia-timelineMulti-track timeline editor with DAG supportStable
oximedia-conformMedia conforming (EDL/XML/AAF timeline reconstruction)Stable
oximedia-proxyProxy generation (conforming, relinking, offline/online workflows)Stable
oximedia-workflowComprehensive workflow orchestration engineStable
oximedia-batchProduction batch processing engine with Lua workflowsStable
oximedia-reviewCollaborative review and approval workflowStable
oximedia-collabReal-time CRDT-based multi-user collaborationStable
oximedia-farmDistributed encoding farm with load balancingStable
oximedia-renderfarmDistributed render farm (job scheduling, cost optimization)Stable
oximedia-autoAutomated video editing with intelligent analysisStable
oximedia-clipsProfessional clip management and loggingStable
oximedia-repairFile repair (corruption detection, header rebuild, stream salvaging)Stable

Media Asset Management

CrateDescriptionStatus
oximedia-mamMedia Asset Management (PostgreSQL, Tantivy, REST/GraphQL, RBAC)Stable
oximedia-metadataMetadata formats (ID3v2, Vorbis, XMP, EXIF, IPTC)Stable
oximedia-searchAdvanced media search and indexing engineStable
oximedia-rightsContent rights and licensing managementStable
oximedia-archiveMedia archive verification and long-term preservationStable
oximedia-archive-proProfessional digital preservation suiteStable
oximedia-recommendRecommendation system (collaborative/content filtering, A/B testing)Stable
oximedia-alignVideo alignment and registration for multi-camera synchronizationStable
oximedia-convertMedia format conversion with codec detectionStable

Bindings & Integrations

CrateDescriptionStatus
oximedia-pyPython bindings via PyO3Stable
oximedia-mlTyped ML pipelines via OxiONNX (SceneClassifier, ShotBoundaryDetector, AestheticScorer, ObjectDetector, FaceEmbedder)Stable

Green List (Supported Codecs)

Decoder Taxonomy

OxiMedia classifies each decoder with a four-tier honesty label so downstream users know exactly what they are getting. See docs/codec_status.md for the full per-decoder breakdown, what is missing, and the effort required to close each gap.

LabelMeaning
VerifiedEnd-to-end decode matches a reference implementation on external fixtures.
FunctionalReal sample reconstruction path present and self-consistent on round-trip tests. No third-party conformance proof yet.
Bitstream-parsingHeaders and syntax are parsed; pixel/sample production is stubbed, partial, or returns empty/constant data. Useful for format inspection, not for playback.
ExperimentalAPI sketch; not intended to actually decode.

Codec Matrix

CategoryCodecEncodeDecodeNotes
VideoAV1FunctionalBitstream-parsingAlliance for Open Media, royalty-free. OBU parsing complete; pixel reconstruction pipeline is stubbed (see issue #9).
VideoVP9FunctionalBitstream-parsingGoogle, royalty-free. Frame/tile parsing complete; reconstruction pipeline stages are no-ops.
VideoVP8FunctionalBitstream-parsingGoogle, royalty-free. Y-plane emitted as constant gray; no intra/inter decode.
VideoTheoraFunctionalBitstream-parsingXiph.org, royalty-free. DCT, motion compensation, and per-frame pixel hand-off into VideoFrame (decode hand-off bug fixed in 0.1.7, issue #9); encoder↔decoder bitstream alignment for full round-trip remains outstanding.
VideoMJPEGFunctionalFunctionalMotion JPEG via oximedia-image JPEG baseline; ≥28 dB PSNR at Q85.
VideoAPVFunctionalFunctionalISO/IEC 23009-13 royalty-free intra-frame; real DCT + entropy decode.
VideoFFV1FunctionalFunctionalRFC 9043 lossless; CRC-32 verified.
VideoH.263FunctionalFunctionalReal macroblock decode, motion compensation, loop filter.
AudioOpusFunctionalFunctional (CELT only)Xiph.org/IETF, royalty-free. SILK and hybrid modes are placeholder.
AudioVorbisFunctionalBitstream-parsingXiph.org, royalty-free. Headers parse; decode_audio_packet returns empty.
AudioFLACFunctionalFunctional / VerifiedLossless, royalty-free; CRC-16 verified, real LPC decode.
AudioPCMVerifiedVerifiedUnencumbered; trivial round-trip verified.
AudioMP3FunctionalPlayback-only (patents expired 2017). Full Huffman/IMDCT/synthesis filterbank.
ImagePNG/APNGFunctionalFunctionalUnencumbered; real unfilter + RGBA conversion.
ImageGIFFunctionalFunctionalUnencumbered; real LZW decode.
ImageWebP (VP8L)FunctionalFunctionalGoogle, royalty-free. Lossless only — no VP8 lossy WebP decoder.
ImageAVIFFunctionalBitstream-parsingAOM, royalty-free. Depends on AV1 decoder, which is itself bitstream-parsing.
ImageJPEG-XL (AJXL)FunctionalFunctionalAnimated JPEG-XL via ISOBMFF; real modular decoder.

Red List (Rejected Codecs)

These codecs are NEVER supported due to patent encumbrance:

  • H.264/AVC (MPEG-LA)
  • H.265/HEVC (MPEG-LA + Access Advance)
  • H.266/VVC (Access Advance)
  • AAC (Via Licensing)
  • AC-3/E-AC-3 (Dolby)
  • DTS (DTS Inc)
  • MP3 (encoding — Fraunhofer)

Quick Start

# Build the project
cargo build --release

# Run format probe
cargo run --bin oximedia -- probe -i video.webm

# Show supported formats
cargo run --bin oximedia -- info

# Transcode a file
cargo run --bin oximedia -- transcode -i input.mkv -o output.webm --codec av1

Library Usage

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?;

Installation

Rust (crates.io)

cargo add oximedia

Python (PyPI)

pip install oximedia

JavaScript / WebAssembly (npm)

npm install @cooljapan/oximedia

CLI

cargo install oximedia-cli

Current Status

Phase Summary

PhaseNameStatus
Phase 1Foundation (core, io, container, codec)Complete
Phase 2Audio Processing & MeteringComplete
Phase 3Video Processing & CVComplete
Phase 4Networking & Streaming (HLS/DASH/RTMP/SRT/WebRTC)Complete
Phase 5Production & Broadcast SystemsComplete
Phase 6Media Asset Management & WorkflowComplete
Phase 7Quality Control & AnalysisComplete
Phase 8Advanced Features (MIR, Forensics, AI, Recommendations)Complete

Crate Status Summary

StatusCountDescription
Stable109Feature-complete, tested, production-ready
Alpha0Core functionality implemented, API may change
Partial0Under active development, incomplete
Total109Library crates under crates/ (top-level oximedia, oximedia-cli, oximedia-wasm counted separately)

Detailed Status Breakdown

Stable (109 crates): oximedia-aaf, oximedia-accel, oximedia-access, oximedia-align, oximedia-analysis, oximedia-archive, oximedia-archive-pro, oximedia-audio, oximedia-audio-analysis, oximedia-audiopost, oximedia-auto, oximedia-automation, oximedia-batch, oximedia-bench, oximedia-calibrate, oximedia-captions, oximedia-clips, oximedia-cloud, oximedia-codec, oximedia-collab, oximedia-colormgmt, oximedia-compat-ffmpeg, oximedia-conform, oximedia-container, oximedia-convert, oximedia-core, oximedia-cv, oximedia-dedup, oximedia-denoise, oximedia-distributed, oximedia-dolbyvision, oximedia-drm, oximedia-edit, oximedia-edl, oximedia-effects, oximedia-farm, oximedia-forensics, oximedia-gaming, oximedia-gpu, oximedia-graph, oximedia-graphics, oximedia-image, oximedia-imf, oximedia-io, oximedia-jobs, oximedia-lut, oximedia-mam, oximedia-metadata, oximedia-metering, oximedia-mir, oximedia-mixer, oximedia-monitor, oximedia-multicam, oximedia-ndi, oximedia-net, oximedia-normalize, oximedia-optimize, oximedia-packager, oximedia-playlist, oximedia-playout, oximedia-plugin, oximedia-presets, oximedia-profiler, oximedia-proxy, oximedia-py, oximedia-qc, oximedia-quality, oximedia-recommend, oximedia-renderfarm, oximedia-repair, oximedia-restore, oximedia-review, oximedia-rights, oximedia-routing, oximedia-scaling, oximedia-scene, oximedia-scopes, oximedia-search, oximedia-server, oximedia-shots, oximedia-simd, oximedia-stabilize, oximedia-storage, oximedia-subtitle, oximedia-switcher, oximedia-timecode, oximedia-timeline, oximedia-timesync, oximedia-transcode, oximedia-vfx, oximedia-videoip, oximedia-virtual, oximedia-watermark, oximedia-workflow, oximedia-avi, oximedia-ml

Building

Build prerequisites

OxiMedia is Pure Rust by default, so most crates build with nothing more than a working Rust toolchain:

rustup update stable
rustup component add clippy

A small number of workspace members rely on native build-time tools. If you build the entire workspace (cargo build --workspace / cargo build --all) or pull in one of the affected crates explicitly, you will need them on PATH before invoking cargo. The end-user crates published to crates.io (oximedia, oximedia-cli, oximedia-py, @cooljapan/oximedia) do not require any of these tools at install time.

protoc — Protocol Buffers compiler

Required when building:

CrateWhy
oximedia-farmDistributed encoding farm — gRPC schema in crates/oximedia-farm/proto/farm.proto compiled via tonic-prost-build
oximedia-distributedCluster coordinator — gRPC schema in crates/oximedia-distributed/proto/coordinator.proto compiled via tonic-prost-build

Anything that depends on the two crates above transitively (notably oximedia-batch, oximedia-renderfarm, and oximedia-cli) inherits the requirement.

Install:

# macOS (Homebrew)
brew install protobuf

# Debian / Ubuntu
sudo apt-get install -y protobuf-compiler

# Fedora / RHEL
sudo dnf install -y protobuf-compiler

# Arch
sudo pacman -S protobuf

# Windows (choose one)
choco install protoc                    # Chocolatey
winget install Google.Protobuf          # winget
vcpkg install protobuf protobuf:x64-windows
# or download a release zip from
#   https://github.com/protocolbuffers/protobuf/releases
# and add the extracted bin/ directory to PATH

Verify with protoc --version. If protoc is installed in a non-standard location, set the PROTOC environment variable to its absolute path before running cargo build.

To skip protoc entirely, exclude the affected crates:

cargo build --workspace --exclude oximedia-farm --exclude oximedia-distributed

cmake + shaderc toolchain — Vulkan compute shaders

Required when building:

CrateWhy
oximedia-accelGPU acceleration layer — uses the vulkano_shaders::shader! proc-macro to compile GLSL compute shaders to SPIR-V at build time, which pulls in shaderc-sys

Anything that depends on oximedia-accel transitively inherits the requirement. The dependency on vulkano-shaders is not feature-gated, so these tools are needed for every build of oximedia-accel.

When no pre-built shaderc library is found on the host (the typical case on a fresh developer machine), shaderc-sys builds shaderc from source, which needs the following on PATH:

ToolNotes
cmake (>= 3.17)Drives the C++ build of shaderc / glslang / SPIRV-Tools
Python 3Used by glslang's build scripts
C++ compilerclang++ / g++ / MSVC cl.exe
gitshaderc-sys clones shaderc sources

Install:

# macOS (Homebrew)
brew install cmake python git
xcode-select --install            # supplies clang++

# Debian / Ubuntu
sudo apt-get install -y cmake python3 git build-essential

# Fedora / RHEL
sudo dnf install -y cmake python3 git gcc-c++

# Arch
sudo pacman -S cmake python git base-devel

# Windows (PowerShell, choose one toolchain manager)
winget install Kitware.CMake Python.Python.3 Git.Git
# plus MSVC Build Tools (or the Visual Studio "Desktop C++" workload)

Verify with cmake --version and python3 --version. The error couldn't find required command: "cmake" during cargo build is the canonical symptom of this dependency being missing.

To skip cmake/shaderc entirely (the rest of the workspace is Pure Rust), exclude the crate:

cargo build --workspace --exclude oximedia-accel

The runtime CpuFallback backend still works at run time without a Vulkan driver, but the GLSL → SPIR-V compilation step at build time is unconditional.

Common build commands

# Build all crates
cargo build --all

# Build release
cargo build --release --all

# Run all tests
cargo test --all

# Lint (must pass with zero warnings)
cargo clippy --all -- -D warnings

# Check documentation
cargo doc --all --no-deps

Documentation

Topic-focused guides live in docs/:

  • Codec Status — four-tier decoder taxonomy (Verified / Functional / Bitstream-parsing / Experimental) and per-codec state of the world.
  • Rate Control Guide — CBR/VBR/CRF/two-pass modes, VBV buffer semantics, encoder coverage matrix, and CRF-optimiser notes.
  • SIMD Dispatchoximedia-simd CPU feature detection, AVX-512 / AVX2 / SSE4.2 / NEON / WASM tiers, and the safe dispatch convention.
  • Wave 5 Deltas — what shipped in 0.1.5 → 0.1.6 (transcode executor, HW-accel probes, BBA-1 ABR, SCTE-35, ErrorContext, FormatNegotiator; stub resolution, exr.rs splitrs refactor, oxifft 0.3.0).
  • ML Guide — typed ONNX pipelines, device selection, and the oximedia-ml feature matrix.

Policy

  • No Warnings: All code must compile with zero warnings
  • No Unsafe: #![forbid(unsafe_code)] enforced workspace-wide (except explicitly gated FFI features)
  • Apache 2.0: Strictly permissive licensing only
  • Clippy Pedantic: All pedantic lints enabled
  • Pure Rust: No C/Fortran dependencies in default features
  • Patent Free: Only royalty-free codecs and algorithms

Contributing

  1. Follow the no-warnings policy
  2. Add comprehensive documentation with examples
  3. Include unit and integration tests for new functionality
  4. Use tokio for all async code
  5. Prefer the COOLJAPAN ecosystem (OxiFFT, OxiBLAS, SciRS2) over external C dependencies

Sponsorship

OxiMedia is developed and maintained by COOLJAPAN OU (Team Kitasan).

If you find OxiMedia useful, please consider sponsoring the project to support continued development of the Pure Rust multimedia and computer vision ecosystem.

Sponsor

https://github.com/sponsors/cool-japan

Your sponsorship helps us:

  • Maintain and improve 109 crates (~2.75M SLOC)
  • Implement new royalty-free codecs and CV algorithms
  • Keep the entire COOLJAPAN ecosystem (OxiBLAS, OxiFFT, SciRS2, etc.) 100% Pure Rust
  • Provide long-term support and security updates

License

Apache 2.0 — See LICENSE for details.

Copyright 2026 COOLJAPAN OU (Team Kitasan). All rights reserved.


OxiMedia is not just code; it is a declaration of independence from patent trolls and unsafe languages.

Safe. Fast. Free. Sovereign.