styx-codec
Unified codec trait plus a registry for pluggable encoders/decoders. Includes MJPEG decoding and raw color converters; optional features enable FFmpeg and alternate JPEG implementations.
Documentation
Install
[]
= "0.1.0"
Codec trait
use *;
CodecDescriptor describes the kind (encoder/decoder), input/output FourCc, algorithm family, and implementation name.
Registry
CodecRegistry installs codecs and returns a CodecRegistryHandle for lookups:
use *;
use Arc;
let registry = new;
let handle = registry.handle;
registry.register;
let frame = /* FrameLease carrying MJPG data */;
let decoded = handle.process?;
Selection can be influenced via:
set_policy(CodecPolicy): ordered impls, priorities, and hardware bias per FourCc.set_impl_priority/enable_only/disable_impl: granular control over implementations.lookup_preferred/process_preferred: choose by ordered impl names and hardware bias.
CodecStats tracks processed/errors/backpressure counters via the handle.
Built-in codecs
- MJPEG decoder (default feature set).
- Raw color converters: YUYV/NV12/I420 → RGB, RGBA/BGRA/BGR → RGB, passthrough.
- Optional FFmpeg (
codec-ffmpeg): H264/H265/MJPEG encoders/decoders. - Optional JPEG (
codec-mozjpeg,codec-turbojpeg,codec-zune): alternate MJPEG backends. - Optional
imagefeature:ImageAnyDecoderand helpers forDynamicImageconversions.
See crates/styx/examples/mjpeg_decode.rs for an end-to-end registry/decode usage example.