From 39c0dcb0d444737003180ee4ee9839610511a671 Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Tue, 16 Aug 2022 10:44:41 -0400 Subject: [PATCH] Plug webrtc in --- Cargo.toml | 6 + README.md | 1 + ci/utils.py | 4 +- dependencies.py | 3 +- docs/plugins/gst_plugins_cache.json | 351 +++ meson.build | 10 +- net/webrtc/Cargo.lock | 2071 ----------------- net/webrtc/Cargo.toml | 72 +- net/webrtc/LICENSE | 373 --- net/webrtc/LICENSE-MPL-2.0 | 1 + net/webrtc/{plugins => }/build.rs | 0 net/webrtc/{plugins => }/examples/README.md | 0 .../examples/webrtcsink-stats-server.rs | 0 .../examples/webrtcsink-stats/.gitignore | 0 .../examples/webrtcsink-stats/README.md | 0 .../examples/webrtcsink-stats/index.html | 0 .../webrtcsink-stats/package-lock.json | 0 .../examples/webrtcsink-stats/package.json | 0 .../webrtcsink-stats/public/favicon.ico | Bin .../examples/webrtcsink-stats/src/App.svelte | 0 .../webrtcsink-stats/src/assets/h264.png | Bin .../webrtcsink-stats/src/assets/svelte.png | Bin .../webrtcsink-stats/src/assets/vp8.png | Bin .../webrtcsink-stats/src/assets/vp9.png | Bin .../src/components/Consumer.svelte | 0 .../src/components/EncoderProps.svelte | 0 .../src/components/Header.svelte | 0 .../src/components/Modal.svelte | 0 .../src/components/PlotConsumerModal.svelte | 0 .../examples/webrtcsink-stats/src/main.ts | 0 .../webrtcsink-stats/src/pages/Home.svelte | 0 .../webrtcsink-stats/src/types/app.ts | 0 .../webrtcsink-stats/src/vite-env.d.ts | 0 .../webrtcsink-stats/svelte.config.js | 0 .../examples/webrtcsink-stats/tsconfig.json | 0 .../examples/webrtcsink-stats/vite.config.js | 0 net/webrtc/plugins/Cargo.toml | 68 - net/webrtc/protocol/Cargo.toml | 2 +- net/webrtc/signalling/Cargo.toml | 2 +- net/webrtc/{plugins => }/src/gcc/imp.rs | 0 net/webrtc/{plugins => }/src/gcc/mod.rs | 0 net/webrtc/{plugins => }/src/lib.rs | 7 +- net/webrtc/{plugins => }/src/signaller/imp.rs | 0 net/webrtc/{plugins => }/src/signaller/mod.rs | 0 .../src/webrtcsink/homegrown_cc.rs | 0 .../{plugins => }/src/webrtcsink/imp.rs | 0 .../{plugins => }/src/webrtcsink/mod.rs | 1 + 47 files changed, 448 insertions(+), 2524 deletions(-) delete mode 100644 net/webrtc/Cargo.lock delete mode 100644 net/webrtc/LICENSE create mode 120000 net/webrtc/LICENSE-MPL-2.0 rename net/webrtc/{plugins => }/build.rs (100%) rename net/webrtc/{plugins => }/examples/README.md (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats-server.rs (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/.gitignore (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/README.md (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/index.html (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/package-lock.json (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/package.json (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/public/favicon.ico (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/src/App.svelte (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/src/assets/h264.png (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/src/assets/svelte.png (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/src/assets/vp8.png (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/src/assets/vp9.png (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/src/components/Consumer.svelte (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/src/components/EncoderProps.svelte (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/src/components/Header.svelte (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/src/components/Modal.svelte (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/src/components/PlotConsumerModal.svelte (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/src/main.ts (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/src/pages/Home.svelte (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/src/types/app.ts (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/src/vite-env.d.ts (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/svelte.config.js (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/tsconfig.json (100%) rename net/webrtc/{plugins => }/examples/webrtcsink-stats/vite.config.js (100%) delete mode 100644 net/webrtc/plugins/Cargo.toml rename net/webrtc/{plugins => }/src/gcc/imp.rs (100%) rename net/webrtc/{plugins => }/src/gcc/mod.rs (100%) rename net/webrtc/{plugins => }/src/lib.rs (87%) rename net/webrtc/{plugins => }/src/signaller/imp.rs (100%) rename net/webrtc/{plugins => }/src/signaller/mod.rs (100%) rename net/webrtc/{plugins => }/src/webrtcsink/homegrown_cc.rs (100%) rename net/webrtc/{plugins => }/src/webrtcsink/imp.rs (100%) rename net/webrtc/{plugins => }/src/webrtcsink/mod.rs (98%) diff --git a/Cargo.toml b/Cargo.toml index 711e9c4e..0275622e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,6 +19,9 @@ members = [ "net/reqwest", "net/rtpav1", "net/webrtc-http", + "net/webrtc", + "net/webrtc/protocol", + "net/webrtc/signalling", "net/ndi", "text/ahead", "text/json", @@ -57,6 +60,9 @@ default-members = [ "net/reqwest", "net/rtpav1", "net/webrtc-http", + "net/webrtc/", + "net/webrtc/protocol", + "net/webrtc/signalling", "net/ndi", "text/ahead", "text/json", diff --git a/README.md b/README.md index 8a341e8d..4dd1d67f 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ You will find the following plugins in this repository: - `raptorq`: Encoder/decoder element for RaptorQ RTP FEC mechanism. - `ndi`: An [NDI](https://www.newtek.com/ndi/) plugin containing a source, sink and device provider. + - `webrtc`: WebRTC elements, with batteries included Sink elements for specific signalling protocols * `audio` - `audiofx`: Elements to apply audio effects to a stream diff --git a/ci/utils.py b/ci/utils.py index c5f0698e..f3d48dd5 100644 --- a/ci/utils.py +++ b/ci/utils.py @@ -6,7 +6,9 @@ RS_PREFIXED = ['audiofx', 'closedcaption', 'dav1d', 'file', 'json', 'onvif', 'regex', 'webp'] OVERRIDE = {'wrap': 'rstextwrap', 'flavors': 'rsflv', 'ahead': 'textahead', 'tracers': 'rstracers', - 'webrtc-http': 'webrtchttp'} + 'webrtc-http': 'webrtchttp', + 'webrtc': 'rswebrtc' + } def iterate_plugins(): diff --git a/dependencies.py b/dependencies.py index a2cfde15..eede7362 100755 --- a/dependencies.py +++ b/dependencies.py @@ -36,6 +36,7 @@ RENAMES = { 'rsclosedcaption': 'closedcaption', 'rsdav1d': 'dav1d', 'webrtchttp': 'webrtc-http', + 'rswebrtc': 'webrtc', } @@ -60,5 +61,5 @@ if __name__ == "__main__": requires = data['package']['metadata']['capi']['pkg_config']['requires_private'] except KeyError: continue - deps.update([i.strip() for i in requires.split(',')]) + deps.update([i.strip().replace('>', "|>").replace('<', "|<").replace("==", "|==") for i in requires.split(',')]) print(','.join(deps)) diff --git a/docs/plugins/gst_plugins_cache.json b/docs/plugins/gst_plugins_cache.json index a7eb8e1c..9819633c 100644 --- a/docs/plugins/gst_plugins_cache.json +++ b/docs/plugins/gst_plugins_cache.json @@ -5359,6 +5359,357 @@ "tracers": {}, "url": "https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs" }, + "rswebrtc": { + "description": "High level GStreamer WebRTC elements and simple signaling server", + "elements": { + "rtpgccbwe": { + "author": "Thibault Saunier ", + "description": "Estimates current network bandwidth using the Google Congestion Control algorithm notifying about it through the 'bitrate' property", + "hierarchy": [ + "GstRTPGCCBwE", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "klass": "Network/WebRTC/RTP/Filter", + "long-name": "Google Congestion Control bandwidth estimator", + "pad-templates": { + "sink": { + "caps": "application/x-rtp:\n", + "direction": "sink", + "presence": "always" + }, + "src": { + "caps": "application/x-rtp:\n", + "direction": "src", + "presence": "always" + } + }, + "properties": { + "estimated-bitrate": { + "blurb": "Currently estimated bitrate. Can be set before starting\n the element to configure the starting bitrate, in which case the\n encoder should also use it as target bitrate", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "2048000", + "max": "-1", + "min": "1", + "mutable": "ready", + "readable": true, + "type": "guint", + "writable": true + }, + "max-bitrate": { + "blurb": "Maximal bitrate to use (in bit/sec) when computing it through the bandwidth estimation algorithm", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "8192000", + "max": "-1", + "min": "1", + "mutable": "ready", + "readable": true, + "type": "guint", + "writable": true + }, + "min-bitrate": { + "blurb": "Minimal bitrate to use (in bit/sec) when computing it through the bandwidth estimation algorithm", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "1000", + "max": "-1", + "min": "1", + "mutable": "ready", + "readable": true, + "type": "guint", + "writable": true + } + }, + "rank": "none" + }, + "webrtcsink": { + "author": "Mathieu Duponchelle ", + "description": "WebRTC sink", + "hierarchy": [ + "RsWebRTCSink", + "GstBin", + "GstElement", + "GstObject", + "GInitiallyUnowned", + "GObject" + ], + "interfaces": [ + "GstChildProxy", + "GstNavigation" + ], + "klass": "Sink/Network/WebRTC", + "long-name": "WebRTCSink", + "pad-templates": { + "audio_%%u": { + "caps": "audio/x-raw:\n", + "direction": "sink", + "presence": "request" + }, + "video_%%u": { + "caps": "video/x-raw:\n\nvideo/x-raw(memory:CUDAMemory):\n\nvideo/x-raw(memory:GLMemory):\n\nvideo/x-raw(memory:NVMM):\n", + "direction": "sink", + "presence": "request" + } + }, + "properties": { + "audio-caps": { + "blurb": "Governs what audio codecs will be proposed", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "audio/x-opus", + "mutable": "ready", + "readable": true, + "type": "GstCaps", + "writable": true + }, + "congestion-control": { + "blurb": "Defines how congestion is controlled, if at all", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "gcc (2)", + "mutable": "ready", + "readable": true, + "type": "GstWebRTCSinkCongestionControl", + "writable": true + }, + "do-fec": { + "blurb": "Whether the element should negotiate and send FEC data", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "true", + "mutable": "ready", + "readable": true, + "type": "gboolean", + "writable": true + }, + "do-retransmission": { + "blurb": "Whether the element should offer to honor retransmission requests", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "true", + "mutable": "ready", + "readable": true, + "type": "gboolean", + "writable": true + }, + "enable-data-channel-navigation": { + "blurb": "Enable navigation events through a dedicated WebRTCDataChannel", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "false", + "mutable": "ready", + "readable": true, + "type": "gboolean", + "writable": true + }, + "max-bitrate": { + "blurb": "Minimal bitrate to use (in bit/sec) when computing it through the congestion control algorithm", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "8192000", + "max": "-1", + "min": "1", + "mutable": "ready", + "readable": true, + "type": "guint", + "writable": true + }, + "meta": { + "blurb": "Free form metadata about the producer", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "mutable": "null", + "readable": true, + "type": "GstStructure", + "writable": true + }, + "min-bitrate": { + "blurb": "Minimal bitrate to use (in bit/sec) when computing it through the congestion control algorithm", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "1000", + "max": "-1", + "min": "1", + "mutable": "ready", + "readable": true, + "type": "guint", + "writable": true + }, + "start-bitrate": { + "blurb": "Start bitrate to use (in bit/sec)", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "2048000", + "max": "-1", + "min": "1", + "mutable": "ready", + "readable": true, + "type": "guint", + "writable": true + }, + "stats": { + "blurb": "Statistics for the current consumers", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "application/x-webrtcsink-stats;", + "mutable": "null", + "readable": true, + "type": "GstStructure", + "writable": false + }, + "stun-server": { + "blurb": "The STUN server of the form stun://hostname:port", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "stun://stun.l.google.com:19302", + "mutable": "null", + "readable": true, + "type": "gchararray", + "writable": true + }, + "turn-server": { + "blurb": "The TURN server of the form turn(s)://username:password@host:port.", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "NULL", + "mutable": "null", + "readable": true, + "type": "gchararray", + "writable": true + }, + "video-caps": { + "blurb": "Governs what video codecs will be proposed", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "video/x-vp8; video/x-h264; video/x-vp9; video/x-h265", + "mutable": "ready", + "readable": true, + "type": "GstCaps", + "writable": true + } + }, + "rank": "none", + "signals": { + "consumer-added": { + "args": [ + { + "name": "arg0", + "type": "gchararray" + }, + { + "name": "arg1", + "type": "GstElement" + } + ], + "return-type": "void", + "when": "last" + }, + "consumer-removed": { + "args": [ + { + "name": "arg0", + "type": "gchararray" + }, + { + "name": "arg1", + "type": "GstElement" + } + ], + "return-type": "void", + "when": "last" + }, + "encoder-setup": { + "args": [ + { + "name": "arg0", + "type": "gchararray" + }, + { + "name": "arg1", + "type": "gchararray" + }, + { + "name": "arg2", + "type": "GstElement" + } + ], + "return-type": "gboolean", + "when": "last" + }, + "get-sessions": { + "action": true, + "args": [], + "return-type": "GStrv", + "when": "last" + } + } + } + }, + "filename": "gstrswebrtc", + "license": "MPL-2.0", + "other-types": { + "GstWebRTCSinkCongestionControl": { + "kind": "enum", + "values": [ + { + "desc": "Disabled: no congestion control is applied", + "name": "disabled", + "value": "0" + }, + { + "desc": "Homegrown: simple sender-side heuristic", + "name": "homegrown", + "value": "1" + }, + { + "desc": "Google Congestion Control algorithm", + "name": "gcc", + "value": "2" + } + ] + } + }, + "package": "gst-plugin-webrtc", + "source": "gst-plugin-webrtc", + "tracers": {}, + "url": "https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs" + }, "rtpav1": { "description": "AV1 RTP (De)payloader Plugins", "elements": { diff --git a/meson.build b/meson.build index ea0e04f3..85710c70 100644 --- a/meson.build +++ b/meson.build @@ -66,6 +66,7 @@ plugins = { 'gst-plugin-textahead': 'libgsttextahead', 'gst-plugin-onvif': 'libgstrsonvif', 'gst-plugin-tracers': 'libgstrstracers', + 'gst-plugin-webrtc': 'libgstrswebrtc', 'gst-plugin-webrtchttp': 'libgstwebrtchttp', 'gst-plugin-rtpav1': 'libgstrtpav1', 'gst-plugin-ndi': 'libgstndi', @@ -233,10 +234,17 @@ foreach plugin : plugins capture: true, check: true) foreach dep_name : p.stdout().strip().split(',') + dep_name_version = dep_name.split('|') + dep_name = dep_name_version.get(0) + if dep_name_version.length() > 1 + extras = {'version': dep_name_version.get(1)} + else + extras = {} + endif if deps_cache.has_key(dep_name) plugin_deps += deps_cache[dep_name] else - dep = dependency(dep_name, required: false) + dep = dependency(dep_name, required: false, kwargs: extras) plugin_deps += dep deps_cache += {dep_name: dep} endif diff --git a/net/webrtc/Cargo.lock b/net/webrtc/Cargo.lock deleted file mode 100644 index a7f6c23f..00000000 --- a/net/webrtc/Cargo.lock +++ /dev/null @@ -1,2071 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "anyhow" -version = "1.0.65" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602" - -[[package]] -name = "async-attributes" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" -dependencies = [ - "quote", - "syn", -] - -[[package]] -name = "async-channel" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14485364214912d3b19cc3435dde4df66065127f05fa0d75c712f36f12c2f28" -dependencies = [ - "concurrent-queue", - "event-listener", - "futures-core", -] - -[[package]] -name = "async-executor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "once_cell", - "slab", -] - -[[package]] -name = "async-global-executor" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0da5b41ee986eed3f524c380e6d64965aea573882a8907682ad100f7859305ca" -dependencies = [ - "async-channel", - "async-executor", - "async-io", - "async-lock", - "blocking", - "futures-lite", - "once_cell", -] - -[[package]] -name = "async-io" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83e21f3a490c72b3b0cf44962180e60045de2925d8dff97918f7ee43c8f637c7" -dependencies = [ - "autocfg", - "concurrent-queue", - "futures-lite", - "libc", - "log", - "once_cell", - "parking", - "polling", - "slab", - "socket2", - "waker-fn", - "winapi", -] - -[[package]] -name = "async-lock" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6" -dependencies = [ - "event-listener", -] - -[[package]] -name = "async-native-tls" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d57d4cec3c647232e1094dc013546c0b33ce785d8aeb251e1f20dfaf8a9a13fe" -dependencies = [ - "futures-util", - "native-tls", - "thiserror", - "url", -] - -[[package]] -name = "async-process" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02111fd8655a613c25069ea89fc8d9bb89331fa77486eb3bc059ee757cfa481c" -dependencies = [ - "async-io", - "autocfg", - "blocking", - "cfg-if", - "event-listener", - "futures-lite", - "libc", - "once_cell", - "signal-hook", - "winapi", -] - -[[package]] -name = "async-std" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" -dependencies = [ - "async-attributes", - "async-channel", - "async-global-executor", - "async-io", - "async-lock", - "async-process", - "crossbeam-utils", - "futures-channel", - "futures-core", - "futures-io", - "futures-lite", - "gloo-timers", - "kv-log-macro", - "log", - "memchr", - "once_cell", - "pin-project-lite", - "pin-utils", - "slab", - "wasm-bindgen-futures", -] - -[[package]] -name = "async-task" -version = "4.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" - -[[package]] -name = "async-tungstenite" -version = "0.17.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b71b31561643aa8e7df3effe284fa83ab1a840e52294c5f4bd7bfd8b2becbb" -dependencies = [ - "async-native-tls", - "async-std", - "futures-io", - "futures-util", - "log", - "pin-project-lite", - "tungstenite", -] - -[[package]] -name = "atomic-waker" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" - -[[package]] -name = "atomic_refcell" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b5e5f48b927f04e952dedc932f31995a65a0bf65ec971c74436e51bf6e970d" - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "base64" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "block-buffer" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" -dependencies = [ - "generic-array", -] - -[[package]] -name = "blocking" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc" -dependencies = [ - "async-channel", - "async-task", - "atomic-waker", - "fastrand", - "futures-lite", - "once_cell", -] - -[[package]] -name = "bumpalo" -version = "3.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d" - -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - -[[package]] -name = "bytes" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" - -[[package]] -name = "cache-padded" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" - -[[package]] -name = "cc" -version = "1.0.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" - -[[package]] -name = "cfg-expr" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aacacf4d96c24b2ad6eb8ee6df040e4f27b0d0b39a5710c30091baa830485db" -dependencies = [ - "smallvec", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1" -dependencies = [ - "iana-time-zone", - "num-integer", - "num-traits", - "winapi", -] - -[[package]] -name = "clap" -version = "4.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ef582e2c00a63a0c0aa1fb4a4870781c4f5729f51196d3537fa7c1c1992eaa3" -dependencies = [ - "atty", - "bitflags", - "clap_derive", - "clap_lex", - "once_cell", - "strsim", - "termcolor", -] - -[[package]] -name = "clap_derive" -version = "4.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f169caba89a7d512b5418b09864543eeb4d497416c917d7137863bd2076ad" -dependencies = [ - "heck", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "clap_lex" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8" -dependencies = [ - "os_str_bytes", -] - -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] - -[[package]] -name = "concurrent-queue" -version = "1.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c" -dependencies = [ - "cache-padded", -] - -[[package]] -name = "core-foundation" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" - -[[package]] -name = "cpufeatures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" -dependencies = [ - "libc", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "ctor" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdffe87e1d521a10f9696f833fe502293ea446d7f256c06128293a4119bdf4cb" -dependencies = [ - "quote", - "syn", -] - -[[package]] -name = "cxx" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f83d0ebf42c6eafb8d7c52f7e5f2d3003b89c7aa4fd2b79229209459a849af8" -dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07d050484b55975889284352b0ffc2ecbda25c0c55978017c132b29ba0818a86" -dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2", - "quote", - "scratch", - "syn", -] - -[[package]] -name = "cxxbridge-flags" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d2199b00553eda8012dfec8d3b1c75fce747cf27c169a270b3b99e3448ab78" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb67a6de1f602736dd7eaead0080cf3435df806c61b24b13328db128c58868f" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "digest" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - -[[package]] -name = "fastrand" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" -dependencies = [ - "instant", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futures" -version = "0.3.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f21eda599937fba36daeb58a22e8f5cee2d14c4a17b5b7739c7c8e5e3b8230c" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30bdd20c28fadd505d0fd6712cdfcb0d4b5648baf45faef7f852afb2399bb050" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e5aa3de05362c3fb88de6531e6296e85cde7739cccad4b9dfeeb7f6ebce56bf" - -[[package]] -name = "futures-executor" -version = "0.3.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ff63c23854bee61b6e9cd331d523909f238fc7636290b96826e9cfa5faa00ab" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbf4d2a7a308fd4578637c0b17c7e1c7ba127b8f6ba00b29f717e9655d85eb68" - -[[package]] -name = "futures-lite" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] - -[[package]] -name = "futures-macro" -version = "0.3.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42cd15d1c7456c04dbdf7e88bcd69760d74f3a798d6444e16974b505b0e62f17" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "futures-sink" -version = "0.3.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b20ba5a92e727ba30e72834706623d94ac93a725410b6a6b6fbc1b07f7ba56" - -[[package]] -name = "futures-task" -version = "0.3.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6508c467c73851293f390476d4491cf4d227dbabcd4170f3bb6044959b294f1" - -[[package]] -name = "futures-util" -version = "0.3.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44fb6cb1be61cc1d2e43b262516aafcf63b241cffdb1d3fa115f91d9c7b09c90" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "generic-array" -version = "0.14.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "gio-sys" -version = "0.16.0" -source = "git+https://github.com/gtk-rs/gtk-rs-core#bc63686118d9382a5e46260ed040e2028e88321c" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", - "winapi", -] - -[[package]] -name = "glib" -version = "0.16.0" -source = "git+https://github.com/gtk-rs/gtk-rs-core#bc63686118d9382a5e46260ed040e2028e88321c" -dependencies = [ - "bitflags", - "futures-channel", - "futures-core", - "futures-executor", - "futures-task", - "futures-util", - "gio-sys", - "glib-macros", - "glib-sys", - "gobject-sys", - "libc", - "once_cell", - "smallvec", - "thiserror", -] - -[[package]] -name = "glib-macros" -version = "0.16.0" -source = "git+https://github.com/gtk-rs/gtk-rs-core#bc63686118d9382a5e46260ed040e2028e88321c" -dependencies = [ - "anyhow", - "heck", - "proc-macro-crate", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "glib-sys" -version = "0.16.0" -source = "git+https://github.com/gtk-rs/gtk-rs-core#bc63686118d9382a5e46260ed040e2028e88321c" -dependencies = [ - "libc", - "system-deps", -] - -[[package]] -name = "gloo-timers" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fb7d06c1c8cc2a29bee7ec961009a0b2caa0793ee4900c2ffb348734ba1c8f9" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "gobject-sys" -version = "0.16.0" -source = "git+https://github.com/gtk-rs/gtk-rs-core#bc63686118d9382a5e46260ed040e2028e88321c" -dependencies = [ - "glib-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gst-plugin-version-helper" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a6a4dd1cb931cc6b49af354a68f21b3aee46b5b07370215d942f3a71542123f" -dependencies = [ - "chrono", -] - -[[package]] -name = "gstreamer" -version = "0.19.0" -source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#7721030c15c9692bae262e2d5a4e696a743ec96e" -dependencies = [ - "bitflags", - "cfg-if", - "futures-channel", - "futures-core", - "futures-util", - "glib", - "gstreamer-sys", - "libc", - "muldiv", - "num-integer", - "num-rational", - "once_cell", - "option-operations", - "paste", - "pretty-hex", - "serde", - "serde_bytes", - "thiserror", -] - -[[package]] -name = "gstreamer-app" -version = "0.19.0" -source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#7721030c15c9692bae262e2d5a4e696a743ec96e" -dependencies = [ - "bitflags", - "futures-core", - "futures-sink", - "glib", - "gstreamer", - "gstreamer-app-sys", - "gstreamer-base", - "libc", - "once_cell", -] - -[[package]] -name = "gstreamer-app-sys" -version = "0.19.0" -source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#7721030c15c9692bae262e2d5a4e696a743ec96e" -dependencies = [ - "glib-sys", - "gstreamer-base-sys", - "gstreamer-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gstreamer-base" -version = "0.19.0" -source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#7721030c15c9692bae262e2d5a4e696a743ec96e" -dependencies = [ - "atomic_refcell", - "bitflags", - "cfg-if", - "glib", - "gstreamer", - "gstreamer-base-sys", - "libc", -] - -[[package]] -name = "gstreamer-base-sys" -version = "0.19.0" -source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#7721030c15c9692bae262e2d5a4e696a743ec96e" -dependencies = [ - "glib-sys", - "gobject-sys", - "gstreamer-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gstreamer-rtp" -version = "0.19.0" -source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#7721030c15c9692bae262e2d5a4e696a743ec96e" -dependencies = [ - "bitflags", - "glib", - "gstreamer", - "gstreamer-rtp-sys", - "libc", - "once_cell", -] - -[[package]] -name = "gstreamer-rtp-sys" -version = "0.19.0" -source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#7721030c15c9692bae262e2d5a4e696a743ec96e" -dependencies = [ - "glib-sys", - "gstreamer-base-sys", - "gstreamer-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gstreamer-sdp" -version = "0.19.0" -source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#7721030c15c9692bae262e2d5a4e696a743ec96e" -dependencies = [ - "glib", - "gstreamer", - "gstreamer-sdp-sys", -] - -[[package]] -name = "gstreamer-sdp-sys" -version = "0.19.0" -source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#7721030c15c9692bae262e2d5a4e696a743ec96e" -dependencies = [ - "glib-sys", - "gstreamer-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gstreamer-sys" -version = "0.19.0" -source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#7721030c15c9692bae262e2d5a4e696a743ec96e" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gstreamer-utils" -version = "0.19.0" -source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#7721030c15c9692bae262e2d5a4e696a743ec96e" -dependencies = [ - "gstreamer", - "gstreamer-app", - "gstreamer-video", - "once_cell", - "thiserror", -] - -[[package]] -name = "gstreamer-video" -version = "0.19.0" -source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#7721030c15c9692bae262e2d5a4e696a743ec96e" -dependencies = [ - "bitflags", - "cfg-if", - "futures-channel", - "glib", - "gstreamer", - "gstreamer-base", - "gstreamer-video-sys", - "libc", - "once_cell", - "serde", -] - -[[package]] -name = "gstreamer-video-sys" -version = "0.19.0" -source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#7721030c15c9692bae262e2d5a4e696a743ec96e" -dependencies = [ - "glib-sys", - "gobject-sys", - "gstreamer-base-sys", - "gstreamer-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gstreamer-webrtc" -version = "0.19.0" -source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#7721030c15c9692bae262e2d5a4e696a743ec96e" -dependencies = [ - "glib", - "gstreamer", - "gstreamer-sdp", - "gstreamer-webrtc-sys", - "libc", -] - -[[package]] -name = "gstreamer-webrtc-sys" -version = "0.19.0" -source = "git+https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#7721030c15c9692bae262e2d5a4e696a743ec96e" -dependencies = [ - "glib-sys", - "gstreamer-sdp-sys", - "gstreamer-sys", - "libc", - "system-deps", -] - -[[package]] -name = "heck" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "http" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "httparse" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" - -[[package]] -name = "human_bytes" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a0d4dc39ec942e44c1c306aa196da67f2bd6a30dc7b4a475465c13ccf28817" - -[[package]] -name = "iana-time-zone" -version = "0.1.51" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5a6ef98976b22b3b7f2f3a806f858cb862044cfa66805aa3ad84cb3d3b785ed" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "winapi", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" -dependencies = [ - "cxx", - "cxx-build", -] - -[[package]] -name = "idna" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "itoa" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" - -[[package]] -name = "js-sys" -version = "0.3.60" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "kv-log-macro" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" -dependencies = [ - "log", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.135" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c" - -[[package]] -name = "link-cplusplus" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" -dependencies = [ - "cc", -] - -[[package]] -name = "log" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", - "value-bag", -] - -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata", -] - -[[package]] -name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "muldiv" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5136edda114182728ccdedb9f5eda882781f35fa6e80cc360af12a8932507f3" - -[[package]] -name = "native-tls" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9" -dependencies = [ - "lazy_static", - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - -[[package]] -name = "num-integer" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", - "serde", -] - -[[package]] -name = "num-traits" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" -dependencies = [ - "autocfg", -] - -[[package]] -name = "once_cell" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" - -[[package]] -name = "openssl" -version = "0.10.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13" -dependencies = [ - "bitflags", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5230151e44c0f05157effb743e8d517472843121cf9243e8b81393edb5acd9ce" -dependencies = [ - "autocfg", - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "option-operations" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c26d27bb1aeab65138e4bf7666045169d1717febcc9ff870166be8348b223d0" -dependencies = [ - "paste", -] - -[[package]] -name = "os_str_bytes" -version = "6.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff" - -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - -[[package]] -name = "parking" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" - -[[package]] -name = "paste" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1" - -[[package]] -name = "percent-encoding" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" - -[[package]] -name = "pin-project-lite" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" - -[[package]] -name = "polling" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899b00b9c8ab553c743b3e11e87c5c7d423b2a2de229ba95b24a756344748011" -dependencies = [ - "autocfg", - "cfg-if", - "libc", - "log", - "wepoll-ffi", - "winapi", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" - -[[package]] -name = "pretty-hex" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa0831dd7cc608c38a5e323422a0077678fa5744aa2be4ad91c4ece8eec8d5" - -[[package]] -name = "proc-macro-crate" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" -dependencies = [ - "once_cell", - "thiserror", - "toml", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro2" -version = "1.0.47" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags", -] - -[[package]] -name = "regex" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" -dependencies = [ - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.6.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" - -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi", -] - -[[package]] -name = "ryu" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" - -[[package]] -name = "schannel" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" -dependencies = [ - "lazy_static", - "windows-sys", -] - -[[package]] -name = "scratch" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" - -[[package]] -name = "security-framework" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" -dependencies = [ - "bitflags", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "serde" -version = "1.0.145" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_bytes" -version = "0.11.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfc50e8183eeeb6178dcb167ae34a8051d63535023ae38b5d8d12beae193d37b" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_derive" -version = "1.0.145" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41feea4228a6f1cd09ec7a3593a682276702cd67b5273544757dae23c096f074" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sha-1" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sharded-slab" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "signal-hook" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d" -dependencies = [ - "libc", - "signal-hook-registry", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" -dependencies = [ - "libc", -] - -[[package]] -name = "slab" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" - -[[package]] -name = "socket2" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "syn" -version = "1.0.102" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "system-deps" -version = "6.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a45a1c4c9015217e12347f2a411b57ce2c4fc543913b14b6fe40483328e709" -dependencies = [ - "cfg-expr", - "heck", - "pkg-config", - "toml", - "version-compare", -] - -[[package]] -name = "tempfile" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" -dependencies = [ - "cfg-if", - "fastrand", - "libc", - "redox_syscall", - "remove_dir_all", - "winapi", -] - -[[package]] -name = "termcolor" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "test-log" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f0c854faeb68a048f0f2dc410c5ddae3bf83854ef0e4977d58306a5edef50e" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "thiserror" -version = "1.0.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "thread_local" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" -dependencies = [ - "once_cell", -] - -[[package]] -name = "tinyvec" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" - -[[package]] -name = "toml" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" -dependencies = [ - "serde", -] - -[[package]] -name = "tracing" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" -dependencies = [ - "cfg-if", - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tracing-core" -version = "0.1.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" -dependencies = [ - "lazy_static", - "log", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" -dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "tungstenite" -version = "0.17.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e27992fd6a8c29ee7eef28fc78349aa244134e10ad447ce3b9f0ac0ed0fa4ce0" -dependencies = [ - "base64", - "byteorder", - "bytes", - "http", - "httparse", - "log", - "native-tls", - "rand", - "sha-1", - "thiserror", - "url", - "utf-8", -] - -[[package]] -name = "typenum" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" - -[[package]] -name = "unicode-bidi" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" - -[[package]] -name = "unicode-ident" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" - -[[package]] -name = "unicode-normalization" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-width" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" - -[[package]] -name = "url" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - -[[package]] -name = "uuid" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feb41e78f93363bb2df8b0e86a2ca30eed7806ea16ea0c790d757cf93f79be83" -dependencies = [ - "getrandom", -] - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "value-bag" -version = "1.0.0-alpha.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" -dependencies = [ - "ctor", - "version_check", -] - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version-compare" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "waker-fn" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" - -[[package]] -name = "web-sys" -version = "0.3.60" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webrtcsink" -version = "0.1.0" -dependencies = [ - "anyhow", - "async-native-tls", - "async-std", - "async-tungstenite", - "chrono", - "clap", - "fastrand", - "futures", - "gst-plugin-version-helper", - "gstreamer", - "gstreamer-app", - "gstreamer-rtp", - "gstreamer-sdp", - "gstreamer-utils", - "gstreamer-video", - "gstreamer-webrtc", - "human_bytes", - "once_cell", - "serde", - "serde_json", - "smallvec", - "thiserror", - "tracing", - "tracing-log", - "tracing-subscriber", - "uuid", - "webrtcsink-protocol", -] - -[[package]] -name = "webrtcsink-protocol" -version = "0.1.0" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "webrtcsink-signalling" -version = "0.1.0" -dependencies = [ - "anyhow", - "async-native-tls", - "async-std", - "async-tungstenite", - "clap", - "futures", - "pin-project-lite", - "serde", - "serde_json", - "test-log", - "thiserror", - "tracing", - "tracing-log", - "tracing-subscriber", - "uuid", - "webrtcsink-protocol", -] - -[[package]] -name = "wepoll-ffi" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" -dependencies = [ - "cc", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-sys" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" -dependencies = [ - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" - -[[package]] -name = "windows_i686_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" - -[[package]] -name = "windows_i686_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" diff --git a/net/webrtc/Cargo.toml b/net/webrtc/Cargo.toml index b8454061..6467fea1 100644 --- a/net/webrtc/Cargo.toml +++ b/net/webrtc/Cargo.toml @@ -1,7 +1,67 @@ -[workspace] +[package] +name = "gst-plugin-webrtc" +version = "0.9.0" +edition = "2021" +authors = ["Mathieu Duponchelle ", "Thibault Saunier "] +license = "MPL-2.0" +description = "High level GStreamer WebRTC elements and simple signaling server" +repository = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs" +rust-version = "1.57" -members = [ - "plugins", - "protocol", - "signalling", -] +[dependencies] +gst = { git="https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", package = "gstreamer", features = ["v1_20", "serde"] } +gst-app = { git="https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", package = "gstreamer-app", features = ["v1_20"] } +gst-video = { git="https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", package = "gstreamer-video", features = ["v1_20", "serde"] } +gst-webrtc = { git="https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", package = "gstreamer-webrtc", features = ["v1_20"] } +gst-sdp = { git="https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", package = "gstreamer-sdp", features = ["v1_20"] } +gst-rtp = { git="https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", package = "gstreamer-rtp", features = ["v1_20"] } +gst-utils = { git="https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", package = "gstreamer-utils" } +once_cell = "1.0" +chrono = { version = "0.4", default-features = false } +anyhow = "1" +thiserror = "1" +futures = "0.3" +async-std = { version = "1", features = ["unstable"] } +async-native-tls = { version = "0.4.0" } +async-tungstenite = { version = "0.17", features = ["async-std-runtime", "async-native-tls"] } +serde = "1" +serde_json = "1" +fastrand = "1.0" +webrtcsink-protocol = { version = "0.1", path="protocol" } +human_bytes = "0.3.1" + +[dev-dependencies] +tracing = { version = "0.1", features = ["log"] } +tracing-subscriber = { version = "0.3", features = ["registry", "env-filter"] } +tracing-log = "0.1" +uuid = { version = "1", features = ["v4"] } +clap = { version = "4", features = ["derive"] } + +[lib] +name = "gstrswebrtc" +crate-type = ["cdylib", "rlib"] +path = "src/lib.rs" + +[build-dependencies] +gst-plugin-version-helper = "0.7" + +[features] +static = [] +capi = [] +gst1_22 = ["gst/v1_22", "gst-app/v1_22", "gst-video/v1_22", "gst-webrtc/v1_22", "gst-sdp/v1_22", "gst-rtp/v1_22"] + +[package.metadata.capi] +min_version = "0.8.0" + +[package.metadata.capi.header] +enabled = false + +[package.metadata.capi.library] +install_subdir = "gstreamer-1.0" +versioning = 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" diff --git a/net/webrtc/LICENSE b/net/webrtc/LICENSE deleted file mode 100644 index 14e2f777..00000000 --- a/net/webrtc/LICENSE +++ /dev/null @@ -1,373 +0,0 @@ -Mozilla Public License Version 2.0 -================================== - -1. Definitions --------------- - -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. - -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -1.8. "License" - means this document. - -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -1.10. "Modifications" - means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -1.13. "Source Code Form" - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants and Conditions --------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination --------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -************************************************************************ -* * -* 6. Disclaimer of Warranty * -* ------------------------- * -* * -* Covered Software is provided under this License on an "as is" * -* basis, without warranty of any kind, either expressed, implied, or * -* statutory, including, without limitation, warranties that the * -* Covered Software is free of defects, merchantable, fit for a * -* particular purpose or non-infringing. The entire risk as to the * -* quality and performance of the Covered Software is with You. * -* Should any Covered Software prove defective in any respect, You * -* (not any Contributor) assume the cost of any necessary servicing, * -* repair, or correction. This disclaimer of warranty constitutes an * -* essential part of this License. No use of any Covered Software is * -* authorized under this License except under this disclaimer. * -* * -************************************************************************ - -************************************************************************ -* * -* 7. Limitation of Liability * -* -------------------------- * -* * -* Under no circumstances and under no legal theory, whether tort * -* (including negligence), contract, or otherwise, shall any * -* Contributor, or anyone who distributes Covered Software as * -* permitted above, be liable to You for any direct, indirect, * -* special, incidental, or consequential damages of any character * -* including, without limitation, damages for lost profits, loss of * -* goodwill, work stoppage, computer failure or malfunction, or any * -* and all other commercial damages or losses, even if such party * -* shall have been informed of the possibility of such damages. This * -* limitation of liability shall not apply to liability for death or * -* personal injury resulting from such party's negligence to the * -* extent applicable law prohibits such limitation. Some * -* jurisdictions do not allow the exclusion or limitation of * -* incidental or consequential damages, so this exclusion and * -* limitation may not apply to You. * -* * -************************************************************************ - -8. Litigation -------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous ----------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License ---------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------- - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice ---------------------------------------------------------- - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. diff --git a/net/webrtc/LICENSE-MPL-2.0 b/net/webrtc/LICENSE-MPL-2.0 new file mode 120000 index 00000000..eb5d24fe --- /dev/null +++ b/net/webrtc/LICENSE-MPL-2.0 @@ -0,0 +1 @@ +../../LICENSE-MPL-2.0 \ No newline at end of file diff --git a/net/webrtc/plugins/build.rs b/net/webrtc/build.rs similarity index 100% rename from net/webrtc/plugins/build.rs rename to net/webrtc/build.rs diff --git a/net/webrtc/plugins/examples/README.md b/net/webrtc/examples/README.md similarity index 100% rename from net/webrtc/plugins/examples/README.md rename to net/webrtc/examples/README.md diff --git a/net/webrtc/plugins/examples/webrtcsink-stats-server.rs b/net/webrtc/examples/webrtcsink-stats-server.rs similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats-server.rs rename to net/webrtc/examples/webrtcsink-stats-server.rs diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/.gitignore b/net/webrtc/examples/webrtcsink-stats/.gitignore similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/.gitignore rename to net/webrtc/examples/webrtcsink-stats/.gitignore diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/README.md b/net/webrtc/examples/webrtcsink-stats/README.md similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/README.md rename to net/webrtc/examples/webrtcsink-stats/README.md diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/index.html b/net/webrtc/examples/webrtcsink-stats/index.html similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/index.html rename to net/webrtc/examples/webrtcsink-stats/index.html diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/package-lock.json b/net/webrtc/examples/webrtcsink-stats/package-lock.json similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/package-lock.json rename to net/webrtc/examples/webrtcsink-stats/package-lock.json diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/package.json b/net/webrtc/examples/webrtcsink-stats/package.json similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/package.json rename to net/webrtc/examples/webrtcsink-stats/package.json diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/public/favicon.ico b/net/webrtc/examples/webrtcsink-stats/public/favicon.ico similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/public/favicon.ico rename to net/webrtc/examples/webrtcsink-stats/public/favicon.ico diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/src/App.svelte b/net/webrtc/examples/webrtcsink-stats/src/App.svelte similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/src/App.svelte rename to net/webrtc/examples/webrtcsink-stats/src/App.svelte diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/src/assets/h264.png b/net/webrtc/examples/webrtcsink-stats/src/assets/h264.png similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/src/assets/h264.png rename to net/webrtc/examples/webrtcsink-stats/src/assets/h264.png diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/src/assets/svelte.png b/net/webrtc/examples/webrtcsink-stats/src/assets/svelte.png similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/src/assets/svelte.png rename to net/webrtc/examples/webrtcsink-stats/src/assets/svelte.png diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/src/assets/vp8.png b/net/webrtc/examples/webrtcsink-stats/src/assets/vp8.png similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/src/assets/vp8.png rename to net/webrtc/examples/webrtcsink-stats/src/assets/vp8.png diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/src/assets/vp9.png b/net/webrtc/examples/webrtcsink-stats/src/assets/vp9.png similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/src/assets/vp9.png rename to net/webrtc/examples/webrtcsink-stats/src/assets/vp9.png diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/src/components/Consumer.svelte b/net/webrtc/examples/webrtcsink-stats/src/components/Consumer.svelte similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/src/components/Consumer.svelte rename to net/webrtc/examples/webrtcsink-stats/src/components/Consumer.svelte diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/src/components/EncoderProps.svelte b/net/webrtc/examples/webrtcsink-stats/src/components/EncoderProps.svelte similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/src/components/EncoderProps.svelte rename to net/webrtc/examples/webrtcsink-stats/src/components/EncoderProps.svelte diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/src/components/Header.svelte b/net/webrtc/examples/webrtcsink-stats/src/components/Header.svelte similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/src/components/Header.svelte rename to net/webrtc/examples/webrtcsink-stats/src/components/Header.svelte diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/src/components/Modal.svelte b/net/webrtc/examples/webrtcsink-stats/src/components/Modal.svelte similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/src/components/Modal.svelte rename to net/webrtc/examples/webrtcsink-stats/src/components/Modal.svelte diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/src/components/PlotConsumerModal.svelte b/net/webrtc/examples/webrtcsink-stats/src/components/PlotConsumerModal.svelte similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/src/components/PlotConsumerModal.svelte rename to net/webrtc/examples/webrtcsink-stats/src/components/PlotConsumerModal.svelte diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/src/main.ts b/net/webrtc/examples/webrtcsink-stats/src/main.ts similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/src/main.ts rename to net/webrtc/examples/webrtcsink-stats/src/main.ts diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/src/pages/Home.svelte b/net/webrtc/examples/webrtcsink-stats/src/pages/Home.svelte similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/src/pages/Home.svelte rename to net/webrtc/examples/webrtcsink-stats/src/pages/Home.svelte diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/src/types/app.ts b/net/webrtc/examples/webrtcsink-stats/src/types/app.ts similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/src/types/app.ts rename to net/webrtc/examples/webrtcsink-stats/src/types/app.ts diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/src/vite-env.d.ts b/net/webrtc/examples/webrtcsink-stats/src/vite-env.d.ts similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/src/vite-env.d.ts rename to net/webrtc/examples/webrtcsink-stats/src/vite-env.d.ts diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/svelte.config.js b/net/webrtc/examples/webrtcsink-stats/svelte.config.js similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/svelte.config.js rename to net/webrtc/examples/webrtcsink-stats/svelte.config.js diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/tsconfig.json b/net/webrtc/examples/webrtcsink-stats/tsconfig.json similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/tsconfig.json rename to net/webrtc/examples/webrtcsink-stats/tsconfig.json diff --git a/net/webrtc/plugins/examples/webrtcsink-stats/vite.config.js b/net/webrtc/examples/webrtcsink-stats/vite.config.js similarity index 100% rename from net/webrtc/plugins/examples/webrtcsink-stats/vite.config.js rename to net/webrtc/examples/webrtcsink-stats/vite.config.js diff --git a/net/webrtc/plugins/Cargo.toml b/net/webrtc/plugins/Cargo.toml deleted file mode 100644 index 51debdda..00000000 --- a/net/webrtc/plugins/Cargo.toml +++ /dev/null @@ -1,68 +0,0 @@ -[package] -name = "webrtcsink" -version = "0.1.0" -edition = "2018" -authors = ["Mathieu Duponchelle "] -license = "MPL-2.0" -description = "GStreamer WebRTC sink" -repository = "https://github.com/centricular/webrtcsink/" -build = "build.rs" - -[dependencies] -gst = { git="https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", package = "gstreamer", features = ["v1_20", "serde"] } -gst-app = { git="https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", package = "gstreamer-app", features = ["v1_20"] } -gst-video = { git="https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", package = "gstreamer-video", features = ["v1_20", "serde"] } -gst-webrtc = { git="https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", package = "gstreamer-webrtc", features = ["v1_20"] } -gst-sdp = { git="https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", package = "gstreamer-sdp", features = ["v1_20"] } -gst-rtp = { git="https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", package = "gstreamer-rtp", features = ["v1_20"] } -gst-utils = { git="https://gitlab.freedesktop.org/gstreamer/gstreamer-rs", package = "gstreamer-utils" } -once_cell = "1.0" -chrono = { version = "0.4", default-features = false } -smallvec = "1" -anyhow = "1" -thiserror = "1" -futures = "0.3" -async-std = { version = "1", features = ["unstable"] } -async-native-tls = { version = "0.4.0" } -async-tungstenite = { version = "0.17", features = ["async-std-runtime", "async-native-tls"] } -serde = "1" -serde_json = "1" -fastrand = "1.0" -webrtcsink-protocol = { version = "0.1", path="../protocol" } -human_bytes = "0.3.1" - -[dev-dependencies] -tracing = { version = "0.1", features = ["log"] } -tracing-subscriber = { version = "0.3", features = ["registry", "env-filter"] } -tracing-log = "0.1" -uuid = { version = "1", features = ["v4"] } -clap = { version = "4", features = ["derive"] } - -[lib] -name = "webrtcsink" -crate-type = ["cdylib", "rlib"] -path = "src/lib.rs" - -[build-dependencies] -gst-plugin-version-helper = "0.7" - -[features] -static = [] -capi = [] -gst1_22 = ["gst/v1_22", "gst-app/v1_22", "gst-video/v1_22", "gst-webrtc/v1_22", "gst-sdp/v1_22", "gst-rtp/v1_22"] - -[package.metadata.capi] -min_version = "0.8.0" - -[package.metadata.capi.header] -enabled = false - -[package.metadata.capi.library] -install_subdir = "gstreamer-1.0" -versioning = false - -[package.metadata.capi.pkg_config] -requires_private = "gstreamer-rtp >= 1.20, gstreamer-webrtc >= 1.20, gstreamer-1.0 >= 1.20, gstreamer-app >= 1.20, gstreamer-video >= 1.20, gstreamer-sdp >= 1.20, gobject-2.0, glib-2.0, gmodule-2.0" - -[[example]] -name = "webrtcsink-stats-server" diff --git a/net/webrtc/protocol/Cargo.toml b/net/webrtc/protocol/Cargo.toml index e3e3099c..e4905711 100644 --- a/net/webrtc/protocol/Cargo.toml +++ b/net/webrtc/protocol/Cargo.toml @@ -5,7 +5,7 @@ edition = "2018" authors = ["Mathieu Duponchelle "] license = "MPL-2.0" description = "GStreamer WebRTC sink default protocol" -repository = "https://github.com/centricular/webrtcsink/" +repository = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs" [dependencies] serde = { version = "1", features = ["derive"] } diff --git a/net/webrtc/signalling/Cargo.toml b/net/webrtc/signalling/Cargo.toml index 986c47f3..1008b819 100644 --- a/net/webrtc/signalling/Cargo.toml +++ b/net/webrtc/signalling/Cargo.toml @@ -5,7 +5,7 @@ edition = "2018" authors = ["Mathieu Duponchelle "] license = "MPL-2.0" description = "GStreamer WebRTC sink signalling server" -repository = "https://github.com/centricular/webrtcsink/" +repository = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs" [dependencies] anyhow = "1" diff --git a/net/webrtc/plugins/src/gcc/imp.rs b/net/webrtc/src/gcc/imp.rs similarity index 100% rename from net/webrtc/plugins/src/gcc/imp.rs rename to net/webrtc/src/gcc/imp.rs diff --git a/net/webrtc/plugins/src/gcc/mod.rs b/net/webrtc/src/gcc/mod.rs similarity index 100% rename from net/webrtc/plugins/src/gcc/mod.rs rename to net/webrtc/src/gcc/mod.rs diff --git a/net/webrtc/plugins/src/lib.rs b/net/webrtc/src/lib.rs similarity index 87% rename from net/webrtc/plugins/src/lib.rs rename to net/webrtc/src/lib.rs index 81a65cea..e2e20308 100644 --- a/net/webrtc/plugins/src/lib.rs +++ b/net/webrtc/src/lib.rs @@ -1,3 +1,8 @@ +/** + * plugin-rswebrtc: + * + * Since: plugins-rs-0.9 + */ use gst::glib; pub mod gcc; @@ -12,7 +17,7 @@ fn plugin_init(plugin: &gst::Plugin) -> Result<(), glib::BoolError> { } gst::plugin_define!( - webrtcsink, + rswebrtc, env!("CARGO_PKG_DESCRIPTION"), plugin_init, concat!(env!("CARGO_PKG_VERSION"), "-", env!("COMMIT_ID")), diff --git a/net/webrtc/plugins/src/signaller/imp.rs b/net/webrtc/src/signaller/imp.rs similarity index 100% rename from net/webrtc/plugins/src/signaller/imp.rs rename to net/webrtc/src/signaller/imp.rs diff --git a/net/webrtc/plugins/src/signaller/mod.rs b/net/webrtc/src/signaller/mod.rs similarity index 100% rename from net/webrtc/plugins/src/signaller/mod.rs rename to net/webrtc/src/signaller/mod.rs diff --git a/net/webrtc/plugins/src/webrtcsink/homegrown_cc.rs b/net/webrtc/src/webrtcsink/homegrown_cc.rs similarity index 100% rename from net/webrtc/plugins/src/webrtcsink/homegrown_cc.rs rename to net/webrtc/src/webrtcsink/homegrown_cc.rs diff --git a/net/webrtc/plugins/src/webrtcsink/imp.rs b/net/webrtc/src/webrtcsink/imp.rs similarity index 100% rename from net/webrtc/plugins/src/webrtcsink/imp.rs rename to net/webrtc/src/webrtcsink/imp.rs diff --git a/net/webrtc/plugins/src/webrtcsink/mod.rs b/net/webrtc/src/webrtcsink/mod.rs similarity index 98% rename from net/webrtc/plugins/src/webrtcsink/mod.rs rename to net/webrtc/src/webrtcsink/mod.rs index 9d6913c9..9790fa26 100644 --- a/net/webrtc/plugins/src/webrtcsink/mod.rs +++ b/net/webrtc/src/webrtcsink/mod.rs @@ -155,6 +155,7 @@ enum WebRTCSinkMitigationMode { } pub fn register(plugin: &gst::Plugin) -> Result<(), glib::BoolError> { + WebRTCSinkCongestionControl::static_type().mark_as_plugin_api(gst::PluginAPIFlags::empty()); gst::Element::register( Some(plugin), "webrtcsink",