Weekly open source: OxideAV, in public
First of what I'd like to keep as a weekly dispatch — a short digest of what I've been shipping in open source. If nothing notable happened in a given week, you won't see one.
OxideAV, in public
The big item this week: OxideAV — a pure-Rust
media transcoding and streaming framework. It started the week as a workspace
monorepo; by the 17th I had extracted it into 45+ per-format crates, one
repository each, under the OxideAV/ organisation. First v0.0.3 / v0.0.4
releases went out the same day via release-plz, and the cycle has kept
running since.
The scope is broad on purpose:
- Video — H.264, H.265, AV1, VP8, VP9, MPEG-1/2, MPEG-4 ASP, H.263, Theora, ProRes, MJPEG.
- Audio — AAC, MP1/2/3, Opus, Vorbis, FLAC, CELT, Speex, GSM, G.722 / G.723.1 / G.728 / G.729.
- Images — PNG/APNG, GIF, WebP, JPEG, AVIF (scaffold), JPEG 2000 (scaffold), JPEG XL (scaffold).
- Containers — MP4/MOV, Matroska/WebM, Ogg, AVI, IFF; basic formats (WAV, raw PCM, slin) share a single crate.
- Trackers — MOD, S3M (decode-only by design).
- Subtitles — PGS, DVB, VobSub, ASS/SSA.
- Plumbing —
oxideav-core(Packet / Frame / Timestamp),oxideav-codecandoxideav-container(traits + registries),oxideav-pixfmt(conversion matrix, quantisation, dither), andoxideav-job— a JSON-driven transcode graph executed by a pipelined multithreaded runtime.
The rule: no C dependencies anywhere in the tree. No ffmpeg, no
libav, no *-sys crates, direct or transitive. Every codec is implemented
from the spec. There's a CLI (oxideav-cli) and a reference SDL2+TUI player
(oxideplay).
It's early — v0.0.x across the board, coverage is uneven, some codecs are decode-only, others have encoders landing week by week, a few are still register-but-refuse scaffolding reserving codec ids. The intent is to build toward something you can drop into a real pipeline without pulling a gigabyte of C along with it.
H.264 got the heaviest push of the week — 134 commits closing out
4:2:2 / 4:4:4 CABAC decode, MBAFF P/B slice data, SI/SP primary slice decode,
separate_colour_plane_flag=1, plus a first-pass CAVLC P-slice encoder
(P_L0_16x16 + P_Skip, integer motion estimation). AAC got short-block
emission with a real state machine and per-channel TNS analysis. Plenty left
to do in both.
libwallet: Swap API
KarpelesLab/libwallet shipped
0.3.14 and 0.3.15. The headline is a multi-chain swap API — Jupiter Ultra
and dFlow on Solana, 1inch on EVM — exposed through a single
provider-abstracted surface with approval detection (the wallet tells the UI
when an ERC-20 allowance is needed before a swap can run). Solana priority
fees now route through proper ComputeBudget instructions, and displayed
Solana balances finally exclude the rent-exempt reserve instead of
double-counting it.
Also this week
- goavif — pure-Go AVIF codec, also launched this week, same "no cgo" rule as OxideAV.
- goro / goro-rs — PHP in Go, and a parallel Rust port. Both saw steady commits.
- strtotime — a Go port of
PHP's
strtotime(): timezone-aware natural-language date parsing, RFC 2822, ISO 8601, relative dates. Landed in a single day on April 13.
Next week
Continued work on OxideAV across the board.