[package]
name = "rtp-engine"
version = "0.1.0"
edition = "2024"
rust-version = "1.85"
authors = ["5060 Solutions <josh@5060solutions.com>"]
description = "A pure Rust RTP media engine with codecs, SRTP, and audio device abstraction"
license = "MIT OR Apache-2.0"
repository = "https://github.com/5060-Solutions/rtp-engine"
documentation = "https://docs.rs/rtp-engine"
readme = "README.md"
keywords = ["rtp", "rtcp", "voip", "audio", "srtp"]
categories = ["multimedia::audio", "network-programming"]
[lints.rust]
warnings = "deny"
unsafe_code = "deny"
missing_docs = "warn"
[lints.clippy]
all = { level = "deny", priority = -1 }
pedantic = { level = "warn", priority = -1 }
module_name_repetitions = "allow"
must_use_candidate = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
doc_markdown = "allow"
similar_names = "allow"
missing_const_for_fn = "allow"
cast_sign_loss = "allow"
cast_possible_truncation = "allow"
cast_precision_loss = "allow"
cast_possible_wrap = "allow"
cast_lossless = "allow"
default_numeric_fallback = "allow"
cognitive_complexity = "allow"
too_many_lines = "allow"
option_if_let_else = "allow"
else_if_without_else = "allow"
uninlined_format_args = "allow"
missing_fields_in_debug = "allow"
large_enum_variant = "allow"
struct_field_names = "allow"
unreadable_literal = "allow"
manual_let_else = "allow"
return_self_not_must_use = "allow"
unnecessary_wraps = "allow"
too_many_arguments = "allow"
redundant_closure = "allow"
manual_range_contains = "allow"
needless_pass_by_value = "allow"
significant_drop_in_scrutinee = "allow"
significant_drop_tightening = "allow"
used_underscore_binding = "allow"
[features]
default = ["g711", "opus", "srtp", "device"]
g711 = []
opus = ["dep:audiopus"]
srtp = ["dep:aes", "dep:ctr", "dep:hmac", "dep:sha1"]
device = ["dep:cpal"]
[dependencies]
log = "0.4"
thiserror = "2.0"
rand = "0.10"
cpal = { version = "0.17", optional = true }
audiopus = { version = "0.3.0-rc.0", optional = true }
aes = { version = "0.8", optional = true }
ctr = { version = "0.9", optional = true }
hmac = { version = "0.12", optional = true }
sha1 = { version = "0.10", optional = true }
base64 = "0.22"
tokio = { version = "1", features = ["net", "time", "rt", "sync"] }
[dev-dependencies]
tokio = { version = "1", features = ["full", "macros"] }
env_logger = "0.11"