moq-transcode 0.0.1

Just-in-time live transcoding for hang broadcasts over Media over QUIC
[package]
name = "moq-transcode"
description = "Just-in-time live transcoding for hang broadcasts over Media over QUIC"
authors = ["Luke Curley <kixelated@gmail.com>"]
repository = "https://github.com/moq-dev/moq"
license = "MIT OR Apache-2.0"

version = "0.0.1"
edition = "2024"
rust-version.workspace = true

keywords = ["quic", "http3", "webtransport", "media", "video"]
categories = ["multimedia", "multimedia::video", "multimedia::encoding"]

[features]
# Hardware codecs on by default, mirroring moq-video: NVDEC -> NVENC is the whole
# point of a GPU transcode fleet. Disable for a slimmer self-compiled Linux build.
default = ["nvenc", "vaapi", "nvdec"]
# NVIDIA NVENC hardware encoder (Linux, dlopen'd at runtime; a no-op elsewhere).
nvenc = ["moq-video/nvenc"]
# Intel/AMD VAAPI hardware encoder (Linux; links libva at build time).
vaapi = ["moq-video/vaapi"]
# NVIDIA NVDEC hardware decoder (Linux, dlopen'd at runtime; a no-op elsewhere).
# With `nvenc` this is the zero-copy GPU pipeline: NVDEC decodes and scales in
# hardware, and NVENC encodes the CUDA frame in place.
nvdec = ["moq-video/nvdec"]

[dependencies]
bytes = "1"
hang = { workspace = true }
moq-mux = { workspace = true }
moq-net = { workspace = true }
moq-video = { workspace = true }
thiserror = "2"
tokio = { workspace = true, features = ["rt", "macros", "sync", "time"] }
tracing = "0.1"

[dev-dependencies]
anyhow = "1"
clap = { version = "4", features = ["derive"] }
# Default features on (unlike the workspace entry) so the example gets a QUIC backend.
moq-native = { path = "../moq-native" }
# test-util unlocks tokio::time::pause for the deterministic live-feed tests.
tokio = { workspace = true, features = ["full", "test-util"] }
url = "2"