[package]
edition = "2024"
name = "rtc"
version = "0.20.0"
authors = ["Rain Liu <yliu@webrtc.rs>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Sans-I/O WebRTC implementation in Rust"
homepage = "https://webrtc.rs"
documentation = "https://docs.rs/rtc"
readme = "README.md"
keywords = [
"sansio",
"networking",
"protocols",
]
categories = ["network-programming"]
license = "MIT/Apache-2.0"
repository = "https://github.com/webrtc-rs/rtc"
resolver = "2"
[features]
aws-lc-rs = [
"dep:aws-lc-rs",
"dtls/aws-lc-rs",
"rustls/aws-lc-rs",
"rcgen/aws_lc_rs",
"ice/aws-lc-rs",
"stun/aws-lc-rs",
"srtp/aws-lc-rs",
"turn/aws-lc-rs",
]
default = ["ring"]
openssl = ["srtp/openssl"]
pem = [
"dep:pem",
"dtls/pem",
]
ring = [
"dep:ring",
"dtls/ring",
"rustls/ring",
"rcgen/ring",
"ice/ring",
"stun/ring",
"srtp/ring",
"turn/ring",
]
vendored-openssl = ["srtp/vendored-openssl"]
[lib]
name = "rtc"
path = "src/lib.rs"
[[example]]
name = "broadcast"
path = "examples/broadcast/broadcast.rs"
bench = false
[[example]]
name = "data-channels"
path = "examples/data-channels/data-channels.rs"
bench = false
[[example]]
name = "data-channels-answer"
path = "examples/data-channels-offer-answer/data-channels-answer.rs"
bench = false
[[example]]
name = "data-channels-close"
path = "examples/data-channels-close/data-channels-close.rs"
bench = false
[[example]]
name = "data-channels-create"
path = "examples/data-channels-create/data-channels-create.rs"
bench = false
[[example]]
name = "data-channels-flow-control"
path = "examples/data-channels-flow-control/data-channels-flow-control.rs"
bench = false
[[example]]
name = "data-channels-offer"
path = "examples/data-channels-offer-answer/data-channels-offer.rs"
bench = false
[[example]]
name = "data-channels-simple"
path = "examples/data-channels-simple/data-channels-simple.rs"
bench = false
[[example]]
name = "ice-restart"
path = "examples/ice-restart/ice-restart.rs"
bench = false
[[example]]
name = "ice-tcp"
path = "examples/ice-tcp/ice-tcp.rs"
bench = false
[[example]]
name = "ice-tcp-active-offer"
path = "examples/ice-tcp-active-passive/ice-tcp-active-offer.rs"
bench = false
[[example]]
name = "ice-tcp-passive-answer"
path = "examples/ice-tcp-active-passive/ice-tcp-passive-answer.rs"
bench = false
[[example]]
name = "insertable-streams"
path = "examples/insertable-streams/insertable-streams.rs"
bench = false
[[example]]
name = "mdns-query-and-gather"
path = "examples/mdns-query-and-gather/mdns-query-and-gather.rs"
bench = false
[[example]]
name = "perfect-negotiation"
path = "examples/perfect-negotiation/perfect-negotiation.rs"
bench = false
[[example]]
name = "play-from-disk-h26x"
path = "examples/play-from-disk-h26x/play-from-disk-h26x.rs"
bench = false
[[example]]
name = "play-from-disk-playlist-control"
path = "examples/play-from-disk-playlist-control/play-from-disk-playlist-control.rs"
bench = false
[[example]]
name = "play-from-disk-renegotiation"
path = "examples/play-from-disk-renegotiation/play-from-disk-renegotiation.rs"
bench = false
[[example]]
name = "play-from-disk-vpx"
path = "examples/play-from-disk-vpx/play-from-disk-vpx.rs"
bench = false
[[example]]
name = "reflect"
path = "examples/reflect/reflect.rs"
bench = false
[[example]]
name = "rtcp-processing"
path = "examples/rtcp-processing/rtcp-processing.rs"
bench = false
[[example]]
name = "rtcp-processing-boxed"
path = "examples/rtcp-processing-boxed/rtcp-processing-boxed.rs"
bench = false
[[example]]
name = "rtp-forwarder"
path = "examples/rtp-forwarder/rtp-forwarder.rs"
bench = false
[[example]]
name = "rtp-to-webrtc"
path = "examples/rtp-to-webrtc/rtp-to-webrtc.rs"
bench = false
[[example]]
name = "save-to-disk-av1"
path = "examples/save-to-disk-av1/save-to-disk-av1.rs"
bench = false
[[example]]
name = "save-to-disk-h26x"
path = "examples/save-to-disk-h26x/save-to-disk-h26x.rs"
bench = false
[[example]]
name = "save-to-disk-vpx"
path = "examples/save-to-disk-vpx/save-to-disk-vpx.rs"
bench = false
[[example]]
name = "simulcast"
path = "examples/simulcast/simulcast.rs"
bench = false
[[example]]
name = "simulcast_bidirection"
path = "examples/simulcast_bidirection/simulcast_bidirection.rs"
bench = false
[[example]]
name = "stats"
path = "examples/stats/stats.rs"
bench = false
[[example]]
name = "swap-tracks"
path = "examples/swap-tracks/swap-tracks.rs"
bench = false
[[example]]
name = "trickle-ice"
path = "examples/trickle-ice/trickle-ice.rs"
bench = false
[[example]]
name = "trickle-ice-host"
path = "examples/trickle-ice-host/trickle-ice-host.rs"
bench = false
[[example]]
name = "trickle-ice-relay"
path = "examples/trickle-ice-relay/trickle-ice-relay.rs"
bench = false
[[example]]
name = "trickle-ice-srflx"
path = "examples/trickle-ice-srflx/trickle-ice-srflx.rs"
bench = false
[[test]]
name = "codec_negotiation"
path = "tests/codec_negotiation.rs"
[[test]]
name = "data_channel_init_defaults"
path = "tests/data_channel_init_defaults.rs"
[[test]]
name = "data_channel_send_before_open"
path = "tests/data_channel_send_before_open.rs"
[[test]]
name = "data_channels_close_by_rtc_interop"
path = "tests/data_channels_close_by_rtc_interop.rs"
[[test]]
name = "data_channels_close_by_webrtc_interop"
path = "tests/data_channels_close_by_webrtc_interop.rs"
[[test]]
name = "data_channels_create_interop"
path = "tests/data_channels_create_interop.rs"
[[test]]
name = "data_channels_interop"
path = "tests/data_channels_interop.rs"
[[test]]
name = "data_channels_negotiated_rtc2rtc"
path = "tests/data_channels_negotiated_rtc2rtc.rs"
[[test]]
name = "dtls_disable_fingerprint_verification"
path = "tests/dtls_disable_fingerprint_verification.rs"
[[test]]
name = "firefox_simulcast_interop"
path = "tests/firefox_simulcast_interop.rs"
[[test]]
name = "ice_candidate_events_test"
path = "tests/ice_candidate_events_test.rs"
[[test]]
name = "ice_restart_by_rtc_interop"
path = "tests/ice_restart_by_rtc_interop.rs"
[[test]]
name = "ice_restart_by_webrtc_interop"
path = "tests/ice_restart_by_webrtc_interop.rs"
[[test]]
name = "ice_tcp_active_passive"
path = "tests/ice_tcp_active_passive.rs"
[[test]]
name = "interceptor_rtcp_reports_interop"
path = "tests/interceptor_rtcp_reports_interop.rs"
[[test]]
name = "mdns_query_and_gather_interop"
path = "tests/mdns_query_and_gather_interop.rs"
[[test]]
name = "media_only_negotiation_no_sctp"
path = "tests/media_only_negotiation_no_sctp.rs"
[[test]]
name = "media_rejection_interop"
path = "tests/media_rejection_interop.rs"
[[test]]
name = "offer_answer_rtc2rtc"
path = "tests/offer_answer_rtc2rtc.rs"
[[test]]
name = "one_media_section_rtc_to_rtc_simulcast"
path = "tests/one_media_section_rtc_to_rtc_simulcast.rs"
[[test]]
name = "one_media_section_rtc_to_rtc_unicast"
path = "tests/one_media_section_rtc_to_rtc_unicast.rs"
[[test]]
name = "perfect_negotiation_rollback"
path = "tests/perfect_negotiation_rollback.rs"
[[test]]
name = "play_from_disk_rtc_set_remote_before_add_track_interop"
path = "tests/play_from_disk_rtc_set_remote_before_add_track_interop.rs"
[[test]]
name = "play_from_disk_vpx_interop"
path = "tests/play_from_disk_vpx_interop.rs"
[[test]]
name = "reflect_rtc_to_webrtc_interop"
path = "tests/reflect_rtc_to_webrtc_interop.rs"
[[test]]
name = "reflect_webrtc_to_rtc_interop"
path = "tests/reflect_webrtc_to_rtc_interop.rs"
[[test]]
name = "renegotiation_duplicate_mid"
path = "tests/renegotiation_duplicate_mid.rs"
[[test]]
name = "rtcp_processing_boxed_interop"
path = "tests/rtcp_processing_boxed_interop.rs"
[[test]]
name = "rtcp_processing_interop"
path = "tests/rtcp_processing_interop.rs"
[[test]]
name = "save_to_disk_vpx_interop"
path = "tests/save_to_disk_vpx_interop.rs"
[[test]]
name = "set_direction_negotiation_needed"
path = "tests/set_direction_negotiation_needed.rs"
[[test]]
name = "simulcast_rtc_to_rtc_interop"
path = "tests/simulcast_rtc_to_rtc_interop.rs"
[[test]]
name = "simulcast_rtc_to_webrtc_interop"
path = "tests/simulcast_rtc_to_webrtc_interop.rs"
[[test]]
name = "simulcast_webrtc_to_rtc_interop"
path = "tests/simulcast_webrtc_to_rtc_interop.rs"
[[test]]
name = "statistics_rtc_to_rtc"
path = "tests/statistics_rtc_to_rtc.rs"
[[test]]
name = "trickle_ice_interop"
path = "tests/trickle_ice_interop.rs"
[dependencies.aws-lc-rs]
version = "1.17.3"
features = ["aws-lc-sys"]
optional = true
default-features = false
[dependencies.bytes]
version = "1.12.0"
[dependencies.datachannel]
version = "0.20.0"
package = "rtc-datachannel"
[dependencies.dtls]
version = "0.20.0"
default-features = false
package = "rtc-dtls"
[dependencies.hex]
version = "0.4"
features = []
[dependencies.ice]
version = "0.20.0"
default-features = false
package = "rtc-ice"
[dependencies.interceptor]
version = "0.20.0"
package = "rtc-interceptor"
[dependencies.log]
version = "0.4.33"
[dependencies.mdns]
version = "0.20.0"
package = "rtc-mdns"
[dependencies.media]
version = "0.20.0"
package = "rtc-media"
[dependencies.pem]
version = "3"
optional = true
[dependencies.rand]
version = "0.10.1"
[dependencies.rcgen]
version = "0.14.8"
features = ["pem"]
default-features = false
[dependencies.ring]
version = "0.17.14"
optional = true
[dependencies.rtcp]
version = "0.20.0"
package = "rtc-rtcp"
[dependencies.rtp]
version = "0.20.0"
package = "rtc-rtp"
[dependencies.rustls]
version = "0.23.35"
features = ["std"]
default-features = false
[dependencies.sansio]
version = "1"
[dependencies.sctp]
version = "0.20.0"
package = "rtc-sctp"
[dependencies.sdp]
version = "0.20.0"
package = "rtc-sdp"
[dependencies.serde]
version = "1"
[dependencies.serde_json]
version = "1"
features = []
[dependencies.sha2]
version = "0.10"
[dependencies.shared]
version = "0.20.0"
features = [
"crypto",
"marshal",
"replay",
]
default-features = false
package = "rtc-shared"
[dependencies.srtp]
version = "0.20.0"
default-features = false
package = "rtc-srtp"
[dependencies.stun]
version = "0.20.0"
default-features = false
package = "rtc-stun"
[dependencies.turn]
version = "0.20.0"
default-features = false
package = "rtc-turn"
[dependencies.unicase]
version = "2.8"
[dependencies.url]
version = "2"
features = []
[dev-dependencies.anyhow]
version = "1"
[dev-dependencies.bytes]
version = "1.12.0"
[dev-dependencies.chrono]
version = "0.4.45"
[dev-dependencies.clap]
version = "4.6.1"
features = ["derive"]
[dev-dependencies.ctrlc]
version = "3.5.2"
[dev-dependencies.env_logger]
version = "0.11.11"
[dev-dependencies.futures-util]
version = "0.3"
[dev-dependencies.hyper]
version = "0.14.32"
features = ["full"]
[dev-dependencies.ice]
version = "0.20.0"
default-features = false
package = "rtc-ice"
[dev-dependencies.log]
version = "0.4.33"
[dev-dependencies.rand]
version = "0.10.1"
[dev-dependencies.sansio]
version = "1"
[dev-dependencies.serde]
version = "1.0.228"
features = ["derive"]
[dev-dependencies.serde_json]
version = "1.0.145"
[dev-dependencies.shared]
version = "0.20.0"
default-features = false
package = "rtc-shared"
[dev-dependencies.signal]
version = "0.20.0"
package = "rtc-signal"
[dev-dependencies.tokio]
version = "1.52.3"
features = ["full"]
[dev-dependencies.tokio-tungstenite]
version = "0.28.0"
[dev-dependencies.tokio-util]
version = "0.7.17"
features = ["codec"]
[dev-dependencies.webrtc]
version = "0.14.0"
[profile.dev]
opt-level = 0