Files
craft-libs/crates/video
alehel 1df8d98c85 craft-video: MPEG-2 encoder, first step: I and P pictures (#1133)
The start of MPEG-2 encoding in craft_video::mpeg2 (feature
mpeg2-encode): progressive frame pictures, closed I/P GOPs, 4:2:0 Main
Profile and 4:2:2 Profile, constant quantiser or single-pass average
bitrate with adaptive quantisation, half-sample motion search.

The encoder shares the decoder's code tables, IDCT, dequantisation and
motion compensation, so the decoder outputs exactly the encoder's
reconstruction. B pictures, a VBV guarantee, interlaced coding and DVD
or broadcast presets are later steps of #1133.

The mpeg2 feature is split into mpeg2-decode and mpeg2-encode; mpeg2
still turns on both.
2026-11-13 07:34:05 +01:00
..

craft-video

Clean-room pure-Rust video codecs for the Craft apps, one feature per codec: DNxHD/DNxHR, VP8, ProRes and H.264.

  • Input and output are byte slices and planar sample buffers; the crate opens no files itself and performs no filesystem I/O.
  • Implemented from published standards and RFCs (SMPTE ST 2019-1, RFC 6386, SMPTE RDD 36 and ITU-T H.264).
  • Tested against ffmpeg as an external oracle with roundtrips, hostile fuzzing, and conformance vectors. No unsafe, no panics on corrupt streams. Builds for wasm32-unknown-unknown.
  • Containers (MP4/MOV, Matroska/WebM), bit-level I/O (craft_media::bitstream) and shared identifiers (CodecId, CodecParams) come from craft-media.

Cargo features

No codec feature is on by default.

Feature Module Codec
dnx dnx Avid DNxHD / DNxHR (SMPTE ST 2019-1 VC-3): decoder and encoder
apv apv APV (Advanced Professional Video, RFC 9924): decoder (apv-decode alone) and encoder (apv-encode alone)
vp8 vp8 VP8 (RFC 6386): decoder
mpeg2 mpeg2 MPEG-2 video (ITU-T H.262) and MPEG-1 video (ISO/IEC 11172-2): decoder (mpeg2-decode alone); MPEG-2 encoder with I and P pictures (mpeg2-encode, which also turns on the decoder)
mpeg4 mpeg4 MPEG-4 Part 2 video (ISO/IEC 14496-2, the Xvid/DivX format): Simple profile encoder (mpeg4-encode)
prores prores Apple ProRes (SMPTE RDD 36): decoder and encoder
h264 h264 ITU-T H.264 / AVC: decoder (h264-decode alone) and encoder (h264-encode alone)
hevc hevc ITU-T H.265 / HEVC: decoder (hevc-decode alone) and encoder (hevc-encode alone)
vp9 vp9 VP9: decoder (vp9-decode alone) and encoder (vp9-encode alone)
av1 av1 AV1 (AOMedia Video 1): decoder (av1-decode alone) and encoder (av1-encode alone)
threads — Multi-threaded slice/row parallelism via rayon