sdroege / gst-plugin-rs
Rust crate for writing GStreamer plugins and various plugins - This repository moved to https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs
View on GitHubAI Architecture Analysis
This repository is indexed by RepoMind. By analyzing sdroege/gst-plugin-rs in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Overview (README excerpt)
Crawler viewgst-plugins-rs Repository containing various GStreamer plugins and elements written in the Rust programming language. The plugins build upon the GStreamer Rust bindings. Check the README.md of that repository also for details about how to set-up your development environment. Releases and git tags Releases from this repository are done from the versioned release branches, i.e. right now, and there's a tag for each release, e.g. . Plugins that are ready for general usage are also published to crates.io. Distributors should make use of these versions. In addition there are tags in this repository. These tags are for internal use by cerbero and are used for the binary releases published by the GStreamer project. These tags are not supposed to be used by distributors. Why is this separate from the GStreamer monorepo with an independent release schedule? The GStreamer Rust bindings ( ) and the GStreamer plugins written in Rust ( ) use separate git repositories and an independent release schedule, unlike for example the Python bindings which are part of the main GStreamer repository. This will not change in the foreseeable future. This separation does not mean that and are not part of the GStreamer project or second-class citizens in GStreamer. The separation is due to technical reasons. • **Release cycle alignment**: Both repositories depend on for GLib and GObject bindings. Since follows GNOME's six-monthly release cycle, and are aligned to this release cycle as well. This ensures that the APIs stay synchronized as breaking API changes happen every 6, 12 or 18 months. The crates follow 's semantic versioning rules to make these breaking API changes easier to handle for users. • **cargo ecosystem integration**: Cargo-based Rust projects expect to be able to pull in functionality via crates, and to facilitate that, each plugin in is published as a crate. When a project wants to use the git version of a plugin, or the bindings, forcing them to pull in the entire GStreamer mono repository is excessive. Doing so would introduce unnecessary overhead in network bandwidth, disk usage and build times. Note that depending on plugins as cargo dependency is explicitly supported and widely used for Rust projects to statically link plugins into applications. For this purpose all plugins are also published to crates.io but depending on git versions is supported as well. Plugins You will find the following plugins in this repository: • - : A Rust implementation of the standard and elements • : General purpose lossless compression plugin. • flate: compress and decompress data using zlib and deflate • brotli: compress and decompress data using brotli • : Stores a minimum duration of data delimited by discrete GOPs (Group of Picture). • : 1:N wormhole for sending data from one pipeline to another within the same process using the API. • : send data to one or more within the same process. • : receive data from an in the same process. • : • : Saves a reference to the buffer in a meta so it can later be restored again after transformations such as downscaling before inference. • : Restores the original buffer previously saved by . • : Elements to perform encryption and decryption using libsodium. • : Filter element that makes all the incoming streams use the same group-id. • : Some popular threaded elements reimplemented using common thread-sharing infrastructure. • - : Various elements for Amazon AWS services using the AWS SDK library • / : A source and sink element to talk to the Amazon S3 object storage system. • : A sink element to talk to Amazon S3. Uses instead of multi-part upload like . • : A sink element to store HLS streams on Amazon S3. • : an element wrapping the AWS Transcriber service. • : an element parsing the packets of the AWS Transcriber service. • : Wrapper elements to talk to the Deepgram API • : an element wrapping the Deepgram Speech-to-Text service • : An element for generating MPEG-DASH streams. • : Create multi-variant HLS playlists with alternate renditions and variant streams. • : An element for generating MPEG-TS HLS streams. • : • : shout2send-like element to send audio to an Icecast server • : • : Wraps MPEG-TS sources such as or and provides a live clock based on the stream's PCR. • : An NDI plugin containing a source, sink and device provider. • : Various elements for parsing, RTP (de)payloading, overlaying of ONVIF timed metadata. • : Transfer data over the network using QUIC • / : Send and receive data using QUIC • / : Multiplex and de-multiplex streams and datagram using QUIC • / : Multiplex and de-multiplex RTP streams over QUIC • : Encoder/decoder element for RaptorQ RTP FEC mechanism. • : An HTTP source element based on the reqwest library. • : • / : RTP (de)payloader for the AV1 video codec. • : RTP bandwidth estimator based on the Google Congestion Control algorithm. • : • : New Rust implementation of a Real Time Streaming Protocol (RTSP) (RFC 2326, 7826) source element. • : • : New version of the with a lot better performance. • : WebRTC elements, with batteries included Sink elements for specific signalling protocols. • : Simple WebRTC HTTP elements (WHIP/WHEP). • - : Elements to apply audio effects to a stream • : a simple echo/reverb filter. • : audio normalization filter. • : Filter for removing noise. • : Filter for measuring audio loudness according to EBU R-128. • : Filter for rendering audio according to a head-related transfer function. • : Audio parser elements • : Parser for SMPTE S302M audio elementary streams. • : A FLAC decoder based on the Claxon library. • : A plugin to implement audio effects using the Csound library. • : An audio source separation plugin using demucs. • : • : Generate audio speech from text using the ElevenLabs API/service. • : A Vorbis decoder based on the lewton library. • : • : Speech to text transcription using Speechmatics • : A plugin to access content from Spotify based on the librespot library. • : • : Spe…