Files
craft-libs/crates/media/Cargo.toml
Dylan M. Taylor 471abca087 craft-media: MPEG-2 transport and program stream demuxer from FilmCraft (mpegts) (#861)
* craft-media: MPEG-2 transport and program stream demuxer from FilmCraft (feature `mpegts`)

Moves filmcraft-mpegts (storytold/filmcraft@4bec22b) into craft_media::mpegts.
ByteSource is the crate's trait, Error is written without thiserror so the
feature has no dependencies, and Codec::codec_id() and Stream::codec_params()
map streams to CodecId. Adds Container::MpegTs and Container::MpegPs, an
ffprobe oracle test over ten ffmpeg-made files, and hostile-input tests.

* craft-media: module order after merging main
2026-11-11 18:47:39 -05:00

81 lines
1.8 KiB
TOML

[package]
name = "craft-media"
description = "Bit-level I/O, clean-room ISO BMFF (MP4), QuickTime (MOV) and Matroska (MKV, WebM) and MXF demuxers and muxers, and Ogg, AVI and MPEG-TS/PS demuxers."
version.workspace = true
edition.workspace = true
license.workspace = true
rust-version.workspace = true
repository.workspace = true
[package.metadata.docs.rs]
all-features = true
[lints]
workspace = true
[features]
default = ["isobmff"]
bitstream = []
isobmff = ["bitstream", "dep:thiserror"]
matroska = []
# AVI (RIFF) and OpenDML demuxer (`craft_media::avi`).
avi = []
# MXF demuxer and writer (`craft_media::mxf`); the writer formats dates with chrono.
mxf = ["dep:chrono"]
# MPEG-2 Systems demuxer: transport streams and program streams (`craft_media::mpegts`).
mpegts = []
# Ogg demuxer (Ogg Opus and Vorbis mapping, `craft_media::ogg`).
ogg = []
# Serialize and Deserialize for `Container`, `CodecId`, `CodecParams` and `PcmFormat`.
serde = ["dep:serde"]
[dependencies]
thiserror = { workspace = true, optional = true }
serde = { workspace = true, optional = true }
chrono = { workspace = true, optional = true }
[dev-dependencies]
craft-media-testkit = { workspace = true }
proptest = { workspace = true }
serde_json = { workspace = true }
[[test]]
name = "fuzz"
required-features = ["isobmff"]
[[test]]
name = "fuzz_matroska"
required-features = ["matroska"]
[[test]]
name = "oracle_avi"
required-features = ["avi"]
[[test]]
name = "oracle_demux"
required-features = ["isobmff"]
[[test]]
name = "oracle_matroska"
required-features = ["matroska"]
[[test]]
name = "oracle_mpegts"
required-features = ["mpegts"]
[[test]]
name = "oracle_mux"
required-features = ["isobmff"]
[[test]]
name = "oracle_mxf"
required-features = ["mxf"]
[[test]]
name = "oracle_ogg"
required-features = ["ogg"]
[[test]]
name = "roundtrip"
required-features = ["isobmff"]