[package]
name = "aethersafta"
version = "0.21.3"
edition = "2024"
rust-version = "1.89"
license = "AGPL-3.0-only"
description = "Real-time media compositing engine — multi-source capture, scene graph, hardware-accelerated encoding, streaming output"
homepage = "https://github.com/MacCracken/aethersafta"
repository = "https://github.com/MacCracken/aethersafta"
readme = "README.md"
keywords = ["compositing", "streaming", "capture", "video", "encoding"]
categories = ["multimedia", "multimedia::video", "multimedia::encoding"]
[features]
default = ["pipewire", "hwaccel"]
full = ["pipewire", "hwaccel", "rtmp", "srt", "openh264-enc", "vaapi"]
pipewire = ["dhvani/pipewire"]
hwaccel = ["dep:ai-hwaccel"]
openh264-enc = ["tarang/openh264-enc"]
vaapi = ["tarang/vaapi", "hwaccel"]
rtmp = []
srt = []
[[bin]]
name = "aethersafta"
path = "src/main.rs"
[dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = "1"
chrono = { version = "0.4", features = ["serde"] }
uuid = { version = "1", features = ["v4", "serde"] }
thiserror = "2"
anyhow = "1"
bytes = "1"
tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "time", "signal", "sync", "io-util"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
clap = { version = "4", features = ["derive"] }
image = { version = "0.25", default-features = false, features = ["png", "jpeg"] }
ranga = { version = "0.21.4", default-features = false }
tarang = { version = "0.21.3", default-features = false }
ai-hwaccel = { version = "0.21.3", optional = true, default-features = false }
dhvani = { version = "0.21.4", default-features = false, features = ["dsp", "graph"] }
[dev-dependencies]
tempfile = "3"
criterion = { version = "0.5", features = ["html_reports"] }
tokio-test = "0.4"
[[bench]]
name = "compose"
harness = false
[[bench]]
name = "encode"
harness = false
[[bench]]
name = "audio"
harness = false
[[bench]]
name = "convert"
harness = false
[patch.crates-io]
cros-libva = { path = "patches/cros-libva" }