mirror of
https://github.com/storytold/craft-libs.git
synced 2026-11-12 10:03:51 +00:00
Moves filmcraft-mp3enc (storytold/filmcraft@4bec22b) into craft_audio::mp3, on craft-media's BitWriter. `encode` turns the feature on, mp3::Error converts into AudioError::Encode, and a test covers every sample rate and bit rate with extreme signals.
90 lines
3.2 KiB
TOML
90 lines
3.2 KiB
TOML
[package]
|
|
name = "craft-audio"
|
|
description = "Audio file I/O and codecs: WAV/AIFF read and write, FLAC encoder, AAC and ALAC decoders and encoders, AC-3/E-AC-3 decoder and encoder, MP3 encoder, Opus and MP1/MP2 decoders."
|
|
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]
|
|
# Probe and decode files: WAV and AIFF natively; AAC, ALAC, Opus, AC-3/E-AC-3, MP1/MP2 and PCM
|
|
# through craft-media's demuxers and this crate's decoders; MP3, FLAC, Vorbis, CAF, ADPCM, A-law
|
|
# and µ-law through symphonia.
|
|
decode = ["decode-native", "symphonia"]
|
|
# `decode` without symphonia: only the formats with a native decoder (others are Unsupported).
|
|
decode-native = ["aac-decode", "alac-decode", "opus-decode", "ac3-decode", "mpa-decode", "craft-media/isobmff", "craft-media/matroska", "craft-media/ogg", "dep:log"]
|
|
# The symphonia fallback for the formats with no native decoder yet.
|
|
symphonia = ["decode-native", "dep:symphonia"]
|
|
# Every encoder: the lossless file writers and the AAC, ALAC, AC-3/E-AC-3 and MP3 encoders.
|
|
encode = ["lossless-encode", "aac-encode", "alac-encode", "ac3-encode", "eac3-encode", "mp3-encode"]
|
|
# Encode WAV/BWF/RF64, AIFF/AIFF-C and FLAC files.
|
|
lossless-encode = ["pcm-encode", "flac-encode"]
|
|
# Encode WAV/BWF/RF64 and AIFF/AIFF-C files.
|
|
pcm-encode = []
|
|
# Encode FLAC files.
|
|
flac-encode = ["craft-media/bitstream"]
|
|
# Codec modules on their own, for packet-level use.
|
|
aac-decode = ["craft-media/bitstream"]
|
|
aac-encode = ["craft-media/bitstream"]
|
|
opus-decode = []
|
|
ac3-decode = ["craft-media/bitstream"]
|
|
mpa-decode = ["craft-media/bitstream"]
|
|
# ALAC packet decoder and encoder (`alac`), ported from Apple's reference implementation.
|
|
alac-decode = []
|
|
alac-encode = []
|
|
ac3-encode = ["craft-media/bitstream"]
|
|
eac3-encode = ["craft-media/bitstream"]
|
|
# MPEG-1/2 Layer III (MP3) encoder (`mp3`).
|
|
mp3-encode = ["craft-media/bitstream"]
|
|
# Multi-resolution waveform overviews (`peaks`).
|
|
peaks = []
|
|
# Encode AAC channels in parallel (with `aac-encode`).
|
|
rayon = ["dep:rayon"]
|
|
# Serialize and Deserialize for the shared types.
|
|
serde = ["dep:serde", "craft-media/serde"]
|
|
|
|
[dependencies]
|
|
craft-media = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
serde = { workspace = true, optional = true }
|
|
log = { version = "0.4", optional = true }
|
|
rayon = { workspace = true, optional = true }
|
|
# symphonia keeps its AAC decoder for AAC in CAF, a container craft-media does not read.
|
|
symphonia = { version = "0.6.1", optional = true, default-features = false, features = ["mp3", "flac", "vorbis", "ogg", "wav", "pcm", "aiff", "isomp4", "aac", "alac", "adpcm", "caf", "mkv"] }
|
|
|
|
[dev-dependencies]
|
|
craft-media-testkit = { workspace = true }
|
|
proptest = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
|
|
[[test]]
|
|
name = "audio"
|
|
required-features = ["decode", "lossless-encode", "peaks"]
|
|
|
|
[[test]]
|
|
name = "codecs"
|
|
required-features = ["decode", "encode"]
|
|
|
|
[[example]]
|
|
name = "info"
|
|
required-features = ["decode"]
|
|
|
|
[[example]]
|
|
name = "stream"
|
|
required-features = ["decode"]
|
|
|
|
[[example]]
|
|
name = "packets"
|
|
required-features = ["decode"]
|
|
|
|
[[example]]
|
|
name = "encode"
|
|
required-features = ["lossless-encode", "aac-encode"]
|