moq-transcode 0.0.20

Just-in-time live transcoding for hang broadcasts over Media over QUIC
Documentation
[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.20"
edition = "2024"
rust-version.workspace = true

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

[features]
# NVIDIA and OpenH264 are on by default, mirroring moq-video: NVDEC -> NVENC is
# the zero-copy GPU pipeline, while OpenH264 keeps a software H.264 fallback.
# NVIDIA dlopens its driver and needs nothing on the build host. OpenH264 is
# vendored C++, so a hardware-only build can disable default features and select
# `nvidia`. `vaapi` stays opt-in because its bindgen needs libclang; `v4l2`
# mirrors moq-video's opt-in too, though it costs the build nothing.
default = ["nvidia", "openh264"]
# NVENC + NVDEC (Linux, dlopen'd at runtime; a no-op elsewhere).
nvidia = ["moq-video/nvidia"]
# Software H.264 encode/decode through moq-video's vendored OpenH264 backend.
openh264 = ["moq-video/openh264"]
# Intel/AMD VAAPI hardware encoder (Linux; libva dlopen'd at runtime, but
# moq-vaapi's bindgen needs libclang at build time).
vaapi = ["moq-video/vaapi"]
# The V4L2 M2M codecs of an ARM SoC (Linux; moq-v4l checks its bindings in, so
# nothing is needed on the build host).
v4l2 = ["moq-video/v4l2"]

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

[dev-dependencies]
anyhow = { workspace = true }
moq-tokio = { workspace = true, features = ["noq", "aws-lc-rs", "websocket"] }
# test-util unlocks tokio::time::pause for the deterministic live-feed tests.
tokio = { workspace = true, features = ["full", "test-util"] }
url = { workspace = true }
usage = { workspace = true }