- Added the feature-gated mux release surface, including
MuxRequest, path-firstMuxTrackSpecparsing with selector suffixes, flat and fragmented output layout selection, segment or fragment duration modes, syncmux_to_path,mux_into_path, andmux_fragmented_to_pathshelpers, Tokio async companions behindmuxplusasync, and the sync-onlymuxCLI route - Added real MP4 mux writing for both flat and fragmented layouts on one shared mux event graph, with deterministic payload planning, chunk interleaving, duration-based chunking, sync-aligned fragment or segment boundaries, split init/media fragmented outputs, destination update or create-new behavior, preserved flat destination metadata where supported, and explicit validation for unsupported duration-mode or fragmented multi-video requests
- Added broad mux import coverage for MP4 track import with retained sample-entry bytes, selected AVI, MPEG-PS, MPEG-TS, DASH, NHML, NHNT, SAF, and VobSub-style inputs, plus demux-backed elementary or containerized audio, video, text, subtitle, image, raw-video, and PCM families across the public path-first request shape
- Added
mp4forge::mux::inspect,mp4forge::mux::sample_reader, andmp4forge::mux::rewritehelpers for direct-ingest reporting, packet-focused exports, one-sample-at-a-time seekable or progressive reading, and elementary sample rewrite/export flows for AVC, HEVC, VVC, AV1, AAC ADTS, and MHAS data - Expanded typed box and sample-entry coverage needed by the mux, probe, divide, and rewrite paths, including additional DTS, Dolby, IAMF, FLAC, MPEG-H, PCM, uncompressed-visual, codec-configuration, timing, and metadata structures
- Broadened
divideand probe behavior for more video and audio sample-entry families while keeping the existing validation-first workflow for unsupported fragmented output shapes - Reworked file-backed decrypt rewrite execution to use streaming root rewrite plans for the
supported sync and async surfaces, refreshed affected top-level
sidxdata after clear-output rewrites, and kept progress-enabled decrypt surfaces byte-aligned with their non-progress companions - Added mux-focused examples, expanded retained fixture coverage, moved test output helpers onto
auto-cleaned temporary paths, and added fuzz targets for mux demuxing, sample rewrites, async
API parity, decrypt byte-surface parity, extra box roundtrips, bit I/O boundaries, and
sidxplan application - Removed the deprecated
dumpcommand-mdatand-freeshorthand options; use-full mdator-full free,skipexplicitly instead
- Added the feature-gated decryption release surface across sync library helpers, Tokio async
file-backed companions, and the sync-only
decryptCLI, covering the Common Encryption family, PIFF compatibility, OMA DCF, Marlin IPMP ACBC and ACGK, and the retained IAEC protected-movie path - Added the typed OMA DCF, Marlin, ISMA-IAEC, and descriptor-command box or descriptor support needed to drive the broader protected-format decryption paths without opaque byte-only shortcuts
- Expanded retained decrypt fixtures, parity harnesses, and cross-surface regression coverage so sync, async, CLI, fragmented, protected-movie, and broader-format decrypt behavior are locked against stable checked-in assets and comparison-backed expectations
- Extended the fragmented decrypt path to support multi-sample-entry track layouts with per-fragment sample-description switching and ordered zero-KID track-key binding, and verified the resulting clear fragmented output against the existing rebuild workflow
- Closed the older non-fragmented
sample_description_indexgap by preserving chunk-level sample description identity in shared layout helpers, positively covering valid Marlin layouts above1, and making the retained first-description-only OMA and IAEC protected-movie limit explicit where the reviewed higher-level behavior still keeps that scope
- Added an additive Tokio-based
asyncfeature for the library, covering seekable async traversal, extraction, typed codec decode and encode, writer flows, rewrite flows, probe surfaces, and top-levelsidxhelpers while keeping the CLI on the established synchronous path - Strengthened the async rollout so the supported library paths are multithread-safe under normal
tokio::spawnuse for independent-file workloads, with dedicated worker-thread and concurrent-file parity coverage - Added a focused Tokio async example, updated crate and README guidance for the supported async scope, and preserved the default sync build without changing the existing non-async public API
- Expanded regression and comparison-backed parity coverage to lock sync-versus-async behavior across shared MP4, fragmented, encrypted, and metadata-rich fixture sets
- Added first-class encrypted metadata coverage for typed
senc, typedsgpd(seig), resolved sample-encryption helpers, and broader encrypted fragmented fixture coverage across extraction, rewrite, and probe flows - Added additive top-level
sidxanalysis, planning, rewrite, documentation, and example support for the supported fragmented-file layouts - Expanded typed box coverage across fragmented timing, metadata, and codec families, including
clap,SmDm,CoLL,dec3,dac4,vvcC, AVS3, FLAC, MPEG-H,subs,elng,ssix,leva,evte,silb,emib,emeb,ID32, loudness boxes,prft, typedtrefchildren,sthd,nmhd,kind,mime,cdat, and selected legacyuuidpayloads - Improved low-level robustness by preserving legal trailing bytes in
VisualSampleEntrylayouts and carrying those bytes cleanly through traversal and rewrite paths - Added
prfttimestamp and flag helpers, richer examples, and broader regression coverage for fragmented, encrypted, metadata-rich, and legacy MP4 layouts
- Added richer additive probe surfaces for broader codec families, codec-specific details, media-characteristics reporting, and lighter-weight probe controls for large-file inspection
- Added deterministic structured dump and
psshdumpJSON/YAML export, field-level dump payload reporting, and repeatable path or protection filters shared across text and structured output - Expanded CLI path ergonomics with parsed-path extraction, subtree-scoped dump selection, path-scoped typed edit flows, and richer
psshdumpfiltering by box path, system ID, and KID - Improved
divideby deriving playlist signaling from probed metadata and adding a first-class validation mode for unsupported fragmented layouts before any output is written - Added optional
serdesupport for reusable report types, including nested probe and dump companion data intended for library-side embedding - Expanded checked-in fixture coverage for AV1, VP9, AAC, Opus, and PCM, and added dedicated high-level fuzz targets for probe, structured dump, and typed rewrite surfaces
- Refined README guidance, examples, tests, and goldens across the newer higher-level library and CLI workflows while preserving the existing low-level usage paths
- Added byte-slice convenience helpers for typed extract, rewrite, and probe workflows so higher-level integrations can stay in-memory without dropping to the lower-level APIs
- Added exact raw box-byte extraction helpers for full-box and payload-only reads, including registry-aware variants for custom box decoding workflows
- Added additive
BoxPathstring parsing withBoxPath::parse,FromStr, andTryFrom<&str>so ergonomic path construction can build on the existing low-level API - Expanded examples, tests, and comparison coverage around the new ergonomic helpers while preserving the existing low-level usage paths
- Refined public docs and README guidance for the new helper surface
- Added typed path-based extraction helpers for common read flows:
extract_box_as,extract_boxes_as, andextract_boxes_as_with_registry - Added typed path-based rewrite helpers for common edit flows:
rewrite_box_as,rewrite_boxes_as, andrewrite_boxes_as_with_registry - Improved matched payload diagnostics so extraction and rewrite failures report the path, box type, and byte offset that triggered the error
- Added higher-level examples for the ergonomic helper layer while preserving the existing low-level examples
- Polished public docs, README coverage, packaging metadata, and release validation around the new helper surface
- Initial crate release