mod signaller; // from outside the plugin repository, one would need to add plugin package as follows: // [dependencies] // gstrswebrtc = { package = "gst-plugin-webrtc", git = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/" } extern crate gstrswebrtc; use anyhow::Error; use gst::prelude::*; use gstrswebrtc::signaller as signaller_interface; use gstrswebrtc::webrtcsink; fn main() -> Result<(), Error> { gst::init()?; let custom_signaller = signaller::MyCustomSignaller::new(); let webrtcsink = webrtcsink::BaseWebRTCSink::with_signaller( signaller_interface::Signallable::from(custom_signaller), ); let pipeline = gst::Pipeline::new(); let video_src = gst::ElementFactory::make("videotestsrc").build().unwrap(); pipeline .add_many([&video_src, webrtcsink.upcast_ref()]) .unwrap(); video_src .link(webrtcsink.upcast_ref::()) .unwrap(); let bus = pipeline.bus().unwrap(); pipeline.set_state(gst::State::Playing).unwrap(); let _msg = bus.timed_pop_filtered(gst::ClockTime::NONE, &[gst::MessageType::Eos]); pipeline.set_state(gst::State::Null).unwrap(); Ok(()) }