srt-runtime 0.2.0

SRT (Secure Reliable Transport, draft-sharabayko-srt-01) packet codecs + sans-IO HSv5 Caller-Listener and Rendezvous handshake state machines, an ARQ reliability engine, a TSBPD delivery scheduler, LiveCC packet pacing, FileCC window-based congestion control, optional (crypto feature) payload encryption, and an optional (tokio feature) async UDP socket adapter; no_std core.
Documentation
[package]
name    = "srt-runtime"
version = "0.2.0"
edition = "2024"
description = "SRT (Secure Reliable Transport, draft-sharabayko-srt-01) packet codecs + sans-IO HSv5 Caller-Listener and Rendezvous handshake state machines, an ARQ reliability engine, a TSBPD delivery scheduler, LiveCC packet pacing, FileCC window-based congestion control, optional (crypto feature) payload encryption, and an optional (tokio feature) async UDP socket adapter; no_std core."
license      = "MIT OR Apache-2.0"
authors      = ["Alex Fishlock <alex.fishlock@racingjag.com>"]
keywords = ["srt", "packet", "sans-io", "transport", "streaming"]
categories = ["parser-implementations", "multimedia", "network-programming", "no-std"]
repository   = "https://github.com/fishloa/rust-broadcast"
readme       = "README.md"
rust-version = "1.86"
exclude = ["docs/**"]

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[dependencies]
broadcast-common = { path = "../broadcast-common", version = "8", default-features = false }
thiserror = { version = "2", default-features = false }
serde     = { version = "1", optional = true, default-features = false, features = ["derive", "alloc"] }
# §6 payload crypto (AES-CTR, RFC 3394 key wrap, PBKDF2/HMAC-SHA1 KEK
# derivation) — all optional, behind the `crypto` feature. `aes`/`ctr` pinned
# to the same versions already resolved elsewhere in this workspace
# (`transmux`'s `cenc` feature); `aes-kw`/`pbkdf2`/`hmac`/`sha1` pinned to the
# newest versions that still build on this workspace's MSRV (1.86) with
# `--locked` — see CHANGELOG.
aes    = { version = "0.8", default-features = false, optional = true }
ctr    = { version = "0.9", default-features = false, optional = true }
aes-kw = { version = "0.2", default-features = false, optional = true }
pbkdf2 = { version = "0.12", default-features = false, optional = true }
hmac   = { version = "0.12", default-features = false, optional = true }
sha1   = { version = "0.10", default-features = false, optional = true }
# Async UDP socket adapter (tokio feature) — mirrors `rtsp-runtime`'s io.rs
# pattern for driving the sans-IO SRT engines over real UDP sockets. Same
# tokio feature set as the sibling crate, matching the workspace MSRV (1.86).
tokio = { version = "1", optional = true, default-features = false, features = ["net", "io-util", "rt", "macros", "time", "sync"] }

[dev-dependencies]
serde_json = "1.0"
tokio = { version = "1", default-features = false, features = ["net", "io-util", "rt", "macros", "time", "sync"] }

[features]
default = ["std"]
# `std` links the standard library. Without it the crate is `#![no_std]` and
# needs only `alloc`. The packet codecs themselves are fully no_std.
std = ["broadcast-common/std", "thiserror/std"]
# Derive serde on the public wire types.
serde = ["dep:serde"]
# `crypto` adds the §6 payload-encryption path: AES-CTR encrypt/decrypt, RFC
# 3394 AES key wrap/unwrap of the SEK, and PBKDF2/HMAC-SHA1 KEK derivation.
# Off by default so the no_std packet-codec core pulls zero crypto deps.
crypto = ["dep:aes", "dep:ctr", "dep:aes-kw", "dep:pbkdf2", "dep:hmac", "dep:sha1"]
# `tokio` enables the real-socket async UDP adapter over the sans-IO SRT
# engines (handshake, ARQ, TSBPD, LiveCC). Implies `std`. Only available on
# hosted targets — the `no_std` packet-codec core stays clean without it.
tokio = ["dep:tokio", "std"]