diff --git a/Cargo.toml b/Cargo.toml index 0af8a443..3b851df7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -88,6 +88,7 @@ default-members = [ "net/webrtc/protocol", "net/webrtc/signalling", "net/ndi", + "net/quinn", "text/ahead", "text/json", diff --git a/README.md b/README.md index dc107d15..3dcac73b 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,9 @@ You will find the following plugins in this repository: - `onvif`: Various elements for parsing, RTP (de)payloading, overlaying of ONVIF timed metadata. + - `quinn`: Transfer data over the network using QUIC + - `quinnquicsink`/`quinnquicsrc`: Send and receive data using QUIC + - `raptorq`: Encoder/decoder element for RaptorQ RTP FEC mechanism. - `reqwest`: An HTTP source element based on the [reqwest](https://github.com/seanmonstar/reqwest) library. diff --git a/docs/plugins/gst_plugins_cache.json b/docs/plugins/gst_plugins_cache.json index 6526cc80..ad008d5b 100644 --- a/docs/plugins/gst_plugins_cache.json +++ b/docs/plugins/gst_plugins_cache.json @@ -3896,7 +3896,7 @@ "author": "Sanchayan Maity ", "description": "Send data over the network via QUIC", "hierarchy": [ - "GstQuinnQUICSink", + "GstQuinnQuicSink", "GstBaseSink", "GstElement", "GstObject", @@ -4056,7 +4056,7 @@ "author": "Sanchayan Maity ", "description": "Receive data over the network via QUIC", "hierarchy": [ - "GstQuinnQUICSrc", + "GstQuinnQuicSrc", "GstBaseSrc", "GstElement", "GstObject", diff --git a/net/quinn/src/quinnquicsink/imp.rs b/net/quinn/src/quinnquicsink/imp.rs index 888facbd..c1aa730f 100644 --- a/net/quinn/src/quinnquicsink/imp.rs +++ b/net/quinn/src/quinnquicsink/imp.rs @@ -324,7 +324,7 @@ impl ObjectImpl for QuinnQuicSink { #[glib::object_subclass] impl ObjectSubclass for QuinnQuicSink { - const NAME: &'static str = "GstQuinnQUICSink"; + const NAME: &'static str = "GstQuinnQuicSink"; type Type = super::QuinnQuicSink; type ParentType = gst_base::BaseSink; } diff --git a/net/quinn/src/quinnquicsink/mod.rs b/net/quinn/src/quinnquicsink/mod.rs index 198ddd94..53a1c814 100644 --- a/net/quinn/src/quinnquicsink/mod.rs +++ b/net/quinn/src/quinnquicsink/mod.rs @@ -7,6 +7,19 @@ // // SPDX-License-Identifier: MPL-2.0 +/** + * element-quinnquicsink: + * @short-description: Send data over the network via QUIC + * + * ## Example sender pipeline + * ```bash + * gst-launch-1.0 -v -e audiotestsrc num-buffers=512 ! \ + * audio/x-raw,format=S16LE,rate=48000,channels=2,layout=interleaved ! opusenc ! \ + * quinnquicsink server-name="quic.net" client-address="127.0.0.1" client-port=6001 \ + * server-address="127.0.0.1" server-port=6000 certificate-file="certificates/fullchain.pem" \ + * private-key-file="certificates/privkey.pem" + * ``` + */ use gst::glib; use gst::prelude::*; diff --git a/net/quinn/src/quinnquicsrc/imp.rs b/net/quinn/src/quinnquicsrc/imp.rs index 23f36190..9af42d23 100644 --- a/net/quinn/src/quinnquicsrc/imp.rs +++ b/net/quinn/src/quinnquicsrc/imp.rs @@ -315,7 +315,7 @@ impl ObjectImpl for QuinnQuicSrc { #[glib::object_subclass] impl ObjectSubclass for QuinnQuicSrc { - const NAME: &'static str = "GstQuinnQUICSrc"; + const NAME: &'static str = "GstQuinnQuicSrc"; type Type = super::QuinnQuicSrc; type ParentType = gst_base::BaseSrc; } diff --git a/net/quinn/src/quinnquicsrc/mod.rs b/net/quinn/src/quinnquicsrc/mod.rs index 0acf7876..203095fa 100644 --- a/net/quinn/src/quinnquicsrc/mod.rs +++ b/net/quinn/src/quinnquicsrc/mod.rs @@ -7,6 +7,19 @@ // // SPDX-License-Identifier: MPL-2.0 +/** + * element-quinnquicsrc: + * @short-description: Receive data over the network via QUIC + * + * ## Example receiver pipeline + * ```bash + * gst-launch-1.0 -v -e quinnquicsrc caps=audio/x-opus server-name="quic.net" \ + * certificate-file="certificates/fullchain.pem" private-key-file="certificates/privkey.pem" \ + * server-address="127.0.0.1" server-port=6000 ! opusparse ! opusdec ! \ + * audio/x-raw,format=S16LE,rate=48000,channels=2,layout=interleaved ! \ + * audioconvert ! autoaudiosink + * ``` + */ use gst::glib; use gst::prelude::*;