mirror of
https://github.com/storytold/filmcraft.git
synced 2026-10-24 10:10:05 -06:00
New L0 crate filmcraft-flac, a FLAC encoder written from RFC 9639: constant / verbatim / fixed / LPC subframes (Levinson-Durbin on Tukey- windowed autocorrelation, up to order 12), partitioned Rice residuals, left/side, side/right and mid/side stereo, CRC-8/CRC-16, STREAMINFO with MD5 (RFC 1321, own implementation), levels 0-8, all lossless. Export: - Format::Flac, an audio-only .flac (16/24-bit), streamed one second at a time like WAV/AIFF; STREAMINFO is rewritten at the end with frame sizes, total samples and MD5. Preset "FLAC 48 kHz 24-bit". - AudioCodec::Flac in MP4 and QuickTime (fLaC + dfLa), one frame per sample with the short last frame timed exactly; the dfLa STREAMINFO is replaced before the moov is written (Mp4Writer::set_sample_entry). MXF stays PCM. - AudioSettings::flac_level (default 5); Export panel: FLAC (lossless) audio format and Compression Level; file.exportMedia `format: "flac"`, `audioCodec`, `flacLevel`. Spanish and Japanese strings. ffmpeg oracle: every stream decodes bit-exactly with the STREAMINFO MD5 equal to ffmpeg's hash; .flac and FLAC-in-MP4/MOV exports decode to the same samples as a WAV export of the range. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
40 lines
1.3 KiB
TOML
40 lines
1.3 KiB
TOML
[package]
|
|
name = "filmcraft-export"
|
|
description = "Export pipeline: parallel render → encode → mux, presets, progress/cancel"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
rust-version.workspace = true
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
filmcraft-time = { workspace = true }
|
|
filmcraft-frame = { workspace = true }
|
|
filmcraft-color = { workspace = true }
|
|
filmcraft-media = { workspace = true }
|
|
filmcraft-project = { workspace = true }
|
|
filmcraft-render = { workspace = true }
|
|
filmcraft-audio-dsp = { workspace = true }
|
|
filmcraft-geom = { workspace = true }
|
|
filmcraft-text = { workspace = true }
|
|
filmcraft-isobmff = { workspace = true }
|
|
filmcraft-prores = { workspace = true }
|
|
filmcraft-dnx = { workspace = true }
|
|
filmcraft-apv = { workspace = true }
|
|
filmcraft-mxf = { workspace = true }
|
|
filmcraft-aac = { workspace = true }
|
|
filmcraft-flac = { workspace = true }
|
|
filmcraft-h264enc = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
rayon = { workspace = true }
|
|
web-time = "1"
|
|
image = { version = "0.25", default-features = false, features = ["png", "jpeg", "gif", "tiff", "bmp"] }
|
|
|
|
[dev-dependencies]
|
|
filmcraft-testkit = { workspace = true }
|
|
filmcraft-codecs = { workspace = true }
|