gst-plugins-rs/generic/inter/src/sink/mod.rs
Mathieu Duponchelle e905299eba generic: expose inter plugin
This new plugin exposes two elements, intersink and intersrc. These act
as wormholes for data in the same process and can be used to forward
data from one pipeline to another.

The implementation makes use of gstreamer-utils' StreamProducer, and
supports dynamically adding and removing consumers, before and after
producers, and changing producer names while PLAYING, both on the sink
and the src.

This initial implementation comes with a small demo, and a few tests.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1257>
2023-08-14 08:13:12 +00:00

36 lines
873 B
Rust

// SPDX-License-Identifier: MPL-2.0
use glib::prelude::*;
use gst::glib;
mod imp;
/**
* SECTION:element-intersink
*
* #intersink is an element that can be used to produce data for
* multiple #intersrc elements to consume.
*
* You can access the underlying appsink element through the static name
* "appsink".
*
* #intersink should not reside in the same pipeline as the #intersrc
* that consumes from it, here is an example of how to use those elements
* in separate pipelines:
*
* {{ generic/inter/examples/basic.rs }}
*/
glib::wrapper! {
pub struct InterSink(ObjectSubclass<imp::InterSink>) @extends gst::Bin, gst::Element, gst::Object;
}
pub fn register(plugin: &gst::Plugin) -> Result<(), glib::BoolError> {
gst::Element::register(
Some(plugin),
"intersink",
gst::Rank::None,
InterSink::static_type(),
)
}