[package]
name = "ustreamer-encode"
description = "Hardware video encoding — VideoToolbox (macOS), NVENC (NVIDIA), and direct AMF"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
documentation = "https://docs.rs/ustreamer-encode"
readme = "../../README.md"
keywords = ["streaming", "video", "nvenc", "videotoolbox", "wgpu"]
categories = ["multimedia::encoding", "hardware-support", "graphics"]
[features]
default = []
amf-direct = ["dep:libloading"]
nvenc-direct = ["dep:cudarc", "dep:libloading", "dep:nvidia-video-codec-sdk", "ustreamer-capture/vulkan-external"]
[dependencies]
ustreamer-capture = { workspace = true }
ustreamer-proto = { workspace = true }
thiserror = { workspace = true }
tracing = { workspace = true }
wgpu = { workspace = true }
cudarc = { version = "0.19.4", default-features = false, features = ["std", "driver", "fallback-dynamic-loading", "cuda-version-from-build-system", "fallback-latest"], optional = true }
libloading = { version = "0.8.9", optional = true }
nvidia-video-codec-sdk = { version = "0.4.0", optional = true, default-features = false, features = ["ci-check"] }
[dev-dependencies]
ustreamer-capture = { workspace = true, features = ["vulkan-external", "vulkan-external-test-utils"] }
[target.'cfg(target_os = "macos")'.dependencies]
objc2-core-foundation = "0.3.2"
objc2-core-media = "0.3.2"
objc2-core-video = "0.3.2"
objc2-video-toolbox = { version = "0.3.2", features = ["VTErrors", "objc2-core-media", "objc2-core-video"] }