[workspace] resolver = "3" members = ["crates/*", "apps/*", "xtask"] default-members = ["crates/*", "apps/*", "xtask"] [workspace.package] version = "0.7.2" edition = "2024" license = "MIT OR Apache-2.0" rust-version = "1.95" repository = "https://github.com/storytold/filmcraft" [workspace.dependencies] # internal filmcraft-time = { path = "crates/time" } filmcraft-geom = { path = "crates/geom" } filmcraft-color = { path = "crates/color" } filmcraft-bitstream = { path = "crates/bitstream" } filmcraft-isobmff = { path = "crates/isobmff" } filmcraft-avi = { path = "crates/avi" } filmcraft-matroska = { path = "crates/matroska" } filmcraft-mxf = { path = "crates/mxf" } filmcraft-cfb = { path = "crates/cfb" } filmcraft-mpegts = { path = "crates/mpegts" } filmcraft-mpeg2v = { path = "crates/mpeg2v" } filmcraft-ac3 = { path = "crates/ac3" } filmcraft-mpa = { path = "crates/mpa" } filmcraft-ogg = { path = "crates/ogg" } filmcraft-h264 = { path = "crates/h264" } filmcraft-hevc = { path = "crates/hevc" } filmcraft-vp8 = { path = "crates/vp8" } filmcraft-vp9 = { path = "crates/vp9" } filmcraft-prores = { path = "crates/prores" } filmcraft-dnx = { path = "crates/dnx" } filmcraft-apv = { path = "crates/apv" } filmcraft-dng = { path = "crates/dng" } filmcraft-av1 = { path = "crates/av1" } filmcraft-aac = { path = "crates/aac" } filmcraft-flac = { path = "crates/flac" } filmcraft-opus = { path = "crates/opus" } filmcraft-h264enc = { path = "crates/h264enc" } filmcraft-audio-dsp = { path = "crates/audio-dsp" } filmcraft-frame = { path = "crates/frame" } filmcraft-media = { path = "crates/media" } filmcraft-codecs = { path = "crates/codecs" } filmcraft-project = { path = "crates/project" } filmcraft-edit = { path = "crates/edit" } filmcraft-interchange = { path = "crates/interchange" } filmcraft-text = { path = "crates/text" } filmcraft-captions = { path = "crates/captions" } filmcraft-speech = { path = "crates/speech" } filmcraft-tts = { path = "crates/tts" } filmcraft-tts-text = { path = "crates/tts-text" } filmcraft-render = { path = "crates/render" } filmcraft-gpu = { path = "crates/gpu" } filmcraft-scopes = { path = "crates/scopes" } filmcraft-export = { path = "crates/export" } filmcraft-format = { path = "crates/format" } filmcraft-engine = { path = "crates/engine" } filmcraft-ui-egui = { path = "crates/ui-egui" } filmcraft-automation = { path = "crates/automation" } filmcraft-platform = { path = "crates/platform" } filmcraft-testkit = { path = "crates/testkit" } # foundation thiserror = "2" serde = { version = "1", features = ["derive", "rc"] } serde_json = "1" log = "0.4" rayon = "1" proptest = "1" roxmltree = "0.21" # ui # Shared frontend components; keep this dependency above the engine boundary. craft-ui = { version = "0.1.0", git = "https://github.com/storytold/craft-libs", rev = "5c874d51eeb3de70e735c8ce87a59a7dedd47675", features = ["serde"] } egui = "0.36" eframe = { version = "0.36", default-features = false } egui_kittest = "0.36" rfd = "0.17" [workspace.lints.rust] unsafe_code = "forbid" [workspace.lints.clippy] dbg_macro = "warn" todo = "warn" too_many_arguments = "allow" needless_range_loop = "allow" type_complexity = "allow" [profile.dev.package."*"] opt-level = 2 [profile.dev] opt-level = 1 # Codec hot loops: debug-build tests (RFC/oracle vectors) are minutes slower below opt-level 3. [profile.dev.package.filmcraft-h264] opt-level = 3 [profile.dev.package.filmcraft-h264enc] opt-level = 3 [profile.dev.package.filmcraft-hevc] opt-level = 3 [profile.dev.package.filmcraft-prores] opt-level = 3 [profile.dev.package.filmcraft-dnx] opt-level = 3 [profile.dev.package.filmcraft-apv] opt-level = 3 [profile.dev.package.filmcraft-dng] opt-level = 3 [profile.dev.package.filmcraft-av1] opt-level = 3 [profile.dev.package.filmcraft-aac] opt-level = 3 [profile.dev.package.filmcraft-flac] opt-level = 3 # Audio effects: realtime-factor tests and long convolution / spectral runs. [profile.dev.package.filmcraft-audio-dsp] opt-level = 3 [profile.dev.package.filmcraft-mxf] opt-level = 3 [profile.dev.package.filmcraft-opus] opt-level = 3 [profile.dev.package.filmcraft-vp8] opt-level = 3 [profile.dev.package.filmcraft-vp9] opt-level = 3 [profile.release] lto = "thin" codegen-units = 1