[package]
edition = "2024"
name = "webrtc"
version = "0.20.0"
authors = ["Rain Liu <yliu@webrtc.rs>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Async-friendly WebRTC implementation in Rust"
homepage = "https://webrtc.rs"
documentation = "https://docs.rs/webrtc"
readme = "README.md"
keywords = [
"sansio",
"networking",
"protocols",
]
categories = ["network-programming"]
license = "MIT/Apache-2.0"
repository = "https://github.com/webrtc-rs/webrtc"
[features]
default = ["runtime-tokio"]
runtime-mock = []
runtime-smol = ["dep:smol"]
runtime-tokio = ["dep:tokio"]
[lib]
name = "webrtc"
path = "src/lib.rs"
[[example]]
name = "broadcast"
path = "examples/broadcast/broadcast.rs"
bench = false
[[example]]
name = "custom-runtime"
path = "examples/custom-runtime/custom-runtime.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
required-features = ["runtime-tokio"]
[[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-flow-control-multi"
path = "examples/data-channels-flow-control-multi/data-channels-flow-control-multi.rs"
bench = false
[[example]]
name = "data-channels-offer"
path = "examples/data-channels-offer-answer/data-channels-offer.rs"
bench = false
required-features = ["runtime-tokio"]
[[example]]
name = "data-channels-simple"
path = "examples/data-channels-simple/data-channels-simple.rs"
bench = false
required-features = ["runtime-tokio"]
[[example]]
name = "data-channels-stress-bench"
path = "examples/data-channels-stress-bench/data-channels-stress-bench.rs"
bench = false
[[example]]
name = "ice-restart"
path = "examples/ice-restart/ice-restart.rs"
bench = false
required-features = ["runtime-tokio"]
[[example]]
name = "ice-tcp"
path = "examples/ice-tcp/ice-tcp.rs"
bench = false
required-features = ["runtime-tokio"]
[[example]]
name = "ice-tcp-active-offer"
path = "examples/ice-tcp-active-passive/ice-tcp-active-offer.rs"
bench = false
required-features = ["runtime-tokio"]
[[example]]
name = "ice-tcp-passive-answer"
path = "examples/ice-tcp-active-passive/ice-tcp-passive-answer.rs"
bench = false
required-features = ["runtime-tokio"]
[[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 = "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
required-features = ["runtime-tokio"]
[[example]]
name = "play-from-disk-renegotiation"
path = "examples/play-from-disk-renegotiation/play-from-disk-renegotiation.rs"
bench = false
required-features = ["runtime-tokio"]
[[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 = "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_add_transceiver_from_kind"
path = "examples/simulcast_add_transceiver_from_kind/simulcast_add_transceiver_from_kind.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 = "configuration_test"
path = "tests/configuration_test.rs"
[[test]]
name = "custom_runtime_interop"
path = "tests/custom_runtime_interop.rs"
[[test]]
name = "data_channel_close_wakes_send"
path = "tests/data_channel_close_wakes_send.rs"
[[test]]
name = "data_channel_send_after_close"
path = "tests/data_channel_send_after_close.rs"
[[test]]
name = "data_channel_send_backpressure"
path = "tests/data_channel_send_backpressure.rs"
[[test]]
name = "data_channel_send_blocking"
path = "tests/data_channel_send_blocking.rs"
[[test]]
name = "data_channel_send_unbounded"
path = "tests/data_channel_send_unbounded.rs"
[[test]]
name = "data_channel_survives_send_failure"
path = "tests/data_channel_survives_send_failure.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 = "dedicated_reactor_data_channel"
path = "tests/dedicated_reactor_data_channel.rs"
[[test]]
name = "dedicated_reactor_drop"
path = "tests/dedicated_reactor_drop.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_test"
path = "tests/ice_test.rs"
[[test]]
name = "mdns_query_and_gather_webrtc2webrtc"
path = "tests/mdns_query_and_gather_webrtc2webrtc.rs"
[[test]]
name = "media_only_negotiation_no_sctp"
path = "tests/media_only_negotiation_no_sctp.rs"
[[test]]
name = "media_rejection"
path = "tests/media_rejection.rs"
[[test]]
name = "offer_answer_webrtc2webrtc"
path = "tests/offer_answer_webrtc2webrtc.rs"
[[test]]
name = "on_data_channel_only_for_remote"
path = "tests/on_data_channel_only_for_remote.rs"
[[test]]
name = "on_track_codings_ready"
path = "tests/on_track_codings_ready.rs"
[[test]]
name = "peer_connection_test"
path = "tests/peer_connection_test.rs"
[[test]]
name = "play_save_disk"
path = "tests/play_save_disk.rs"
[[test]]
name = "remote_certificate_fingerprint"
path = "tests/remote_certificate_fingerprint.rs"
[[test]]
name = "renegotiation"
path = "tests/renegotiation.rs"
[[test]]
name = "rtcp_processing_webrtc2webrtc"
path = "tests/rtcp_processing_webrtc2webrtc.rs"
[[test]]
name = "sctp_receive_buffer"
path = "tests/sctp_receive_buffer.rs"
[[test]]
name = "simulcast_rtc_to_webrtc_interop"
path = "tests/simulcast_rtc_to_webrtc_interop.rs"
[[test]]
name = "statistics"
path = "tests/statistics.rs"
[[test]]
name = "turn_credential_rotation"
path = "tests/turn_credential_rotation.rs"
[dependencies.async-broadcast]
version = "0.7.2"
[dependencies.async-channel]
version = "2.5.0"
[dependencies.async-trait]
version = "0.1.89"
[dependencies.bytes]
version = "1.12.0"
[dependencies.event-listener]
version = "5.4.1"
[dependencies.futures]
version = "0.3.32"
[dependencies.log]
version = "0.4.33"
[dependencies.quinn-udp]
version = "0.6.1"
features = ["log"]
default-features = false
[dependencies.rtc]
version = "0.20.0"
[dependencies.smol]
version = "2.0.2"
optional = true
[dependencies.tokio]
version = "1.52.3"
features = [
"net",
"time",
"sync",
"rt",
"rt-multi-thread",
]
optional = true
[dev-dependencies.anyhow]
version = "1.0.103"
[dev-dependencies.async-executor]
version = "1.14.0"
[dev-dependencies.async-io]
version = "2.6.0"
[dev-dependencies.base64]
version = "0.22.1"
[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-lite]
version = "2.6.1"
[dev-dependencies.hyper]
version = "0.14.32"
features = ["full"]
[dev-dependencies.rand]
version = "0.10.1"
[dev-dependencies.serde_json]
version = "1.0.150"
[dev-dependencies.signal]
version = "0.20.0"
package = "rtc-signal"