All notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.1.0 - 2026-06-05
Initial release.
Added
- Tree surgery — parse any ISOBMFF file (MP4/MOV/M4A/HEIF) into a lossless
%ISOMedia.Box{}tree, navigate/edit/reorder/insert, and re-serialize byte-for-byte (serialize(parse(file)) == file). - faststart — move
moovahead ofmdatwithstco/co64chunk-offset rewriting, including automaticstco→co64promotion. - Lazy file-backed payloads —
read/2withlazy: truekeeps large leaf payloads on disk asFileSlicereferences;write/2streams them disk→disk so files larger than RAM can be processed. - Sample index + track extraction —
samples/2builds a flat[%Sample{}]per track (progressive or fragmented);extract_track/2demuxes one track. - Trim — time-range, keyframe-aligned, frame-accurate (
elst), interleave-preserving lossless trimming. - Concatenate — lossless end-to-end join of compatible clips.
- Recursive virtual I/O — chain
trim/extract_track/concat/fragment/defragmentin memory with no disk round-trip; bytes match a write+re-read between stages. - Fragmented MP4 —
defragment/1(fMP4 → progressive) andfragment/2(progressive → fMP4), inverses of each other. - CMAF segments —
split_segments/1andwrite_segments/3emit a CMAF init segment plus.m4smedia segments.