mirror of
https://github.com/storytold/effectcraft.git
synced 2026-10-25 10:36:56 -06:00
GIFs went through the still-image path, so an animated GIF came in as a single frame with zero duration. A GIF with two or more frames is now probed as a movie: its frame rate is chosen so every per-frame delay is a whole number of frames (uneven timing is kept exactly), delays of 0 or 1 hundredths count as 10 like in browsers, and the pool decodes the frame shown at the requested time. A single-frame GIF stays a still. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
33 lines
1.1 KiB
TOML
33 lines
1.1 KiB
TOML
[package]
|
|
name = "effectcraft-media"
|
|
description = "Footage import: probing, stills, image sequences, video and audio via FilmCraft's pure-Rust codecs, memory-budgeted frame cache"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
rust-version.workspace = true
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
effectcraft-time = { workspace = true }
|
|
effectcraft-project = { workspace = true }
|
|
effectcraft-raster = { workspace = true }
|
|
effectcraft-render = { workspace = true }
|
|
effectcraft-psd = { workspace = true }
|
|
effectcraft-svg = { workspace = true }
|
|
effectcraft-pdf = { workspace = true }
|
|
effectcraft-model = { workspace = true }
|
|
filmcraft-codecs = { workspace = true }
|
|
filmcraft-media = { workspace = true }
|
|
filmcraft-frame = { workspace = true }
|
|
filmcraft-color = { workspace = true }
|
|
filmcraft-time = { workspace = true }
|
|
exr = { workspace = true }
|
|
gif = { workspace = true }
|
|
image = { workspace = true, features = ["gif", "webp", "tiff", "bmp", "exr"] }
|
|
rayon = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
log = { workspace = true }
|