gst-plugins-rs/net/webrtc/Cargo.toml
François Laignel 83d70d3471 webrtc: add RFC 7273 support
This commit implements [RFC 7273] (NTP & PTP clock signalling & synchronization)
for `webrtcsink` by adding the "ts-refclk" & "mediaclk" SDP media attributes to
identify the clock. These attributes are handled by `rtpjitterbuffer` on the
consumer side. They MUST be part of the SDP offer.

When used with an NTP or PTP clock, "mediaclk" indicates the RTP offset at the
clock's origin. Because the payloaders are not instantiated when the offer is
sent to the consumer, the RTP offset is set to 0 and the payloader
`timstamp-offset`s are set accordingly when they are created.

The `webrtc-precise-sync` examples were updated to be able to start with an NTP
(default), a PTP or the system clock (on the receiver only). The rtp jitter
buffer will synchronize with the clock signalled in the SDP offer provided the
sender is started with `--do-clock-signalling` & the receiver with
`--expect-clock-signalling`.

[RFC 7273]: https://datatracker.ietf.org/doc/html/rfc7273

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1500>
2024-04-12 14:18:09 +02:00

114 lines
3.3 KiB
TOML

[package]
name = "gst-plugin-webrtc"
version.workspace = true
edition.workspace = true
authors = ["Mathieu Duponchelle <mathieu@centricular.com>", "Thibault Saunier <tsaunier@igalia.com>"]
license = "MPL-2.0"
description = "GStreamer plugin for high level WebRTC elements and a simple signaling server"
repository.workspace = true
rust-version.workspace = true
[dependencies]
gst = { workspace = true, features = ["v1_20", "serde"] }
gst-app = { workspace = true, features = ["v1_20"] }
gst-audio = { workspace = true, features = ["v1_20", "serde"] }
gst-video = { workspace = true, features = ["v1_20", "serde"] }
gst-net = { workspace = true, features = ["v1_20"] }
gst-webrtc = { workspace = true, features = ["v1_20"] }
gst-sdp = { workspace = true, features = ["v1_20"] }
gst-rtp = { workspace = true, features = ["v1_20"] }
gst-utils.workspace = true
gst-base.workspace = true
uuid = { version = "1", features = ["v4"] }
anyhow = "1"
thiserror = "1"
futures = "0.3"
tokio = { version = "1", features = ["fs", "macros", "rt-multi-thread", "time"] }
tokio-native-tls = "0.3.0"
tokio-stream = "0.1.11"
async-tungstenite = { version = "0.25", features = ["tokio-runtime", "tokio-native-tls"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
fastrand = "2.0"
gst_plugin_webrtc_protocol = { path="protocol", package = "gst-plugin-webrtc-signalling-protocol" }
human_bytes = "0.4"
url = "2"
aws-config = "1.0"
aws-types = "1.0"
aws-credential-types = "1.0"
aws-sigv4 = "1.0"
aws-smithy-http = { version = "0.60", features = [ "rt-tokio" ] }
aws-smithy-types = "1.0"
aws-sdk-kinesisvideo = "1.0"
aws-sdk-kinesisvideosignaling = "1.0"
http = "1.0"
chrono = "0.4"
data-encoding = "2.3.3"
url-escape = "0.1.1"
regex = "1"
reqwest = { version = "0.11", features = ["default-tls"] }
parse_link_header = {version = "0.3", features = ["url"]}
async-recursion = "1.0.0"
livekit-protocol = { version = "0.3" }
livekit-api = { version = "0.3", default-features = false, features = ["signal-client", "access-token", "native-tls"] }
warp = "0.3"
crossbeam-channel = "0.5"
rand = "0.8"
once_cell.workspace = true
[dev-dependencies]
gst-plugin-rtp = { path = "../rtp" }
tracing = { version = "0.1", features = ["log"] }
tracing-subscriber = { version = "0.3", features = ["registry", "env-filter"] }
tracing-log = "0.2"
clap = { version = "4", features = ["derive"] }
[lib]
name = "gstrswebrtc"
crate-type = ["cdylib", "rlib"]
path = "src/lib.rs"
[build-dependencies]
gst-plugin-version-helper.workspace = true
[features]
default = ["v1_22"]
static = []
capi = []
v1_22 = ["gst/v1_22", "gst-app/v1_22", "gst-video/v1_22", "gst-webrtc/v1_22", "gst-sdp/v1_22", "gst-rtp/v1_22"]
doc = []
[package.metadata.capi]
min_version = "0.9.21"
[package.metadata.capi.header]
enabled = false
[package.metadata.capi.library]
install_subdir = "gstreamer-1.0"
versioning = false
import_library = false
[package.metadata.capi.pkg_config]
requires_private = "gstreamer-rtp-1.0 >= 1.20, gstreamer-webrtc-1.0 >= 1.20, gstreamer-1.0 >= 1.20, gstreamer-app-1.0 >= 1.20, gstreamer-video-1.0 >= 1.20, gstreamer-sdp-1.0 >= 1.20, gobject-2.0, glib-2.0, gmodule-2.0"
[[example]]
name = "webrtcsink-stats-server"
[[example]]
name = "webrtcsink-high-quality-tune"
[[example]]
name = "webrtcsink-custom-signaller"
[[example]]
name = "webrtc-precise-sync-send"
[[example]]
name = "webrtc-precise-sync-recv"