Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2022-10-19 19:18:43 +0300
committerSebastian Dröge <sebastian@centricular.com>2022-10-19 19:43:29 +0300
commit12400b6b87e75cfdfa7701b62cf8698c11e14a73 (patch)
treedf8f49f8258a34e961b8f9710671fc0d97bf7c58 /utils
parent9ce8e93c6374a712a6c8981557c726a3fc04273b (diff)
Update everything for element factory builder API changes
And set properties as part of object construction wherever it makes sense.
Diffstat (limited to 'utils')
-rw-r--r--utils/fallbackswitch/examples/gtk_fallbackswitch.rs14
-rw-r--r--utils/fallbackswitch/src/fallbacksrc/imp.rs179
-rw-r--r--utils/fallbackswitch/tests/fallbackswitch.rs50
-rw-r--r--utils/togglerecord/examples/gtk_recording.rs80
-rw-r--r--utils/togglerecord/tests/tests.rs48
-rw-r--r--utils/tracers/src/queue_levels/imp.rs12
-rw-r--r--utils/uriplaylistbin/examples/playlist.rs8
-rw-r--r--utils/uriplaylistbin/src/uriplaylistbin/imp.rs28
-rw-r--r--utils/uriplaylistbin/tests/uriplaylistbin.rs19
9 files changed, 246 insertions, 192 deletions
diff --git a/utils/fallbackswitch/examples/gtk_fallbackswitch.rs b/utils/fallbackswitch/examples/gtk_fallbackswitch.rs
index 7f9787d54..82eab8b8a 100644
--- a/utils/fallbackswitch/examples/gtk_fallbackswitch.rs
+++ b/utils/fallbackswitch/examples/gtk_fallbackswitch.rs
@@ -32,11 +32,13 @@ fn create_pipeline() -> (gst::Pipeline, gst::Pad, gst::Element) {
.unwrap()
.upcast();
- let fallbackswitch = gst::ElementFactory::make("fallbackswitch", None).unwrap();
- fallbackswitch.set_property("timeout", gst::ClockTime::SECOND);
+ let fallbackswitch = gst::ElementFactory::make("fallbackswitch")
+ .property("timeout", gst::ClockTime::SECOND)
+ .build()
+ .unwrap();
- let decodebin = gst::ElementFactory::make("decodebin", None).unwrap();
- let videoconvert = gst::ElementFactory::make("videoconvert", None).unwrap();
+ let decodebin = gst::ElementFactory::make("decodebin").build().unwrap();
+ let videoconvert = gst::ElementFactory::make("videoconvert").build().unwrap();
let videoconvert_clone = videoconvert.clone();
decodebin.connect_pad_added(move |_, pad| {
@@ -50,7 +52,9 @@ fn create_pipeline() -> (gst::Pipeline, gst::Pad, gst::Element) {
}
});
- let video_sink = gst::ElementFactory::make("gtk4paintablesink", None).unwrap();
+ let video_sink = gst::ElementFactory::make("gtk4paintablesink")
+ .build()
+ .unwrap();
pipeline
.add_many(&[
diff --git a/utils/fallbackswitch/src/fallbacksrc/imp.rs b/utils/fallbackswitch/src/fallbacksrc/imp.rs
index e8f2ff939..3ec4f757e 100644
--- a/utils/fallbackswitch/src/fallbacksrc/imp.rs
+++ b/utils/fallbackswitch/src/fallbacksrc/imp.rs
@@ -896,30 +896,35 @@ impl FallbackSrc {
fn create_dummy_audio_source(filter_caps: &gst::Caps, min_latency: gst::ClockTime) -> gst::Bin {
let bin = gst::Bin::new(None);
- let audiotestsrc = gst::ElementFactory::make("audiotestsrc", Some("audiosrc"))
+ let audiotestsrc = gst::ElementFactory::make("audiotestsrc")
+ .name("audiosrc")
+ .property_from_str("wave", "silence")
+ .property("is-live", true)
+ .build()
.expect("No audiotestsrc found");
- let audioconvert = gst::ElementFactory::make("audioconvert", Some("audio_audioconvert"))
+ let audioconvert = gst::ElementFactory::make("audioconvert")
+ .name("audio_audioconvert")
+ .build()
.expect("No audioconvert found");
- let audioresample = gst::ElementFactory::make("audioresample", Some("audio_audioresample"))
+ let audioresample = gst::ElementFactory::make("audioresample")
+ .name("audio_audioresample")
+ .build()
.expect("No audioresample found");
- let capsfilter = gst::ElementFactory::make("capsfilter", Some("audio_capsfilter"))
+ let capsfilter = gst::ElementFactory::make("capsfilter")
+ .name("audio_capsfilter")
+ .property("caps", filter_caps)
+ .build()
.expect("No capsfilter found");
- let queue = gst::ElementFactory::make("queue", None).expect("No queue found");
-
- audiotestsrc.set_property_from_str("wave", "silence");
- audiotestsrc.set_property("is-live", true);
-
- capsfilter.set_property("caps", filter_caps);
-
- queue.set_properties(&[
- ("max-size-bytes", &0u32),
- ("max-size-buffers", &0u32),
- ("max-size-time", &(cmp::max(min_latency, 1.seconds()))),
- ]);
+ let queue = gst::ElementFactory::make("queue")
+ .property("max-size-bytes", 0u32)
+ .property("max-size-buffers", 0u32)
+ .property("max-size-time", cmp::max(min_latency, 1.seconds()))
+ .build()
+ .expect("No queue found");
bin.add_many(&[
&audiotestsrc,
@@ -950,30 +955,35 @@ impl FallbackSrc {
fn create_dummy_video_source(filter_caps: &gst::Caps, min_latency: gst::ClockTime) -> gst::Bin {
let bin = gst::Bin::new(None);
- let videotestsrc = gst::ElementFactory::make("videotestsrc", Some("videosrc"))
+ let videotestsrc = gst::ElementFactory::make("videotestsrc")
+ .name("videosrc")
+ .property_from_str("pattern", "black")
+ .property("is-live", true)
+ .build()
.expect("No videotestsrc found");
- let videoconvert = gst::ElementFactory::make("videoconvert", Some("video_videoconvert"))
+ let videoconvert = gst::ElementFactory::make("videoconvert")
+ .name("video_videoconvert")
+ .build()
.expect("No videoconvert found");
- let videoscale = gst::ElementFactory::make("videoscale", Some("video_videoscale"))
+ let videoscale = gst::ElementFactory::make("videoscale")
+ .name("video_videoscale")
+ .build()
.expect("No videoscale found");
- let capsfilter = gst::ElementFactory::make("capsfilter", Some("video_capsfilter"))
+ let capsfilter = gst::ElementFactory::make("capsfilter")
+ .name("video_capsfilter")
+ .property("caps", filter_caps)
+ .build()
.expect("No capsfilter found");
- let queue = gst::ElementFactory::make("queue", None).expect("No queue found");
-
- videotestsrc.set_property_from_str("pattern", "black");
- videotestsrc.set_property("is-live", true);
-
- capsfilter.set_property("caps", filter_caps);
-
- queue.set_properties(&[
- ("max-size-bytes", &0u32),
- ("max-size-buffers", &0u32),
- ("max-size-time", &(cmp::max(min_latency, 1.seconds()))),
- ]);
+ let queue = gst::ElementFactory::make("queue")
+ .property("max-size-bytes", 0u32)
+ .property("max-size-buffers", 0u32)
+ .property("max-size-time", cmp::max(min_latency, 1.seconds()))
+ .build()
+ .expect("No queue found");
bin.add_many(&[
&videotestsrc,
@@ -1006,16 +1016,17 @@ impl FallbackSrc {
let source = match source {
Source::Uri(ref uri) => {
- let source = gst::ElementFactory::make("uridecodebin3", Some("uridecodebin"))
- .expect("No uridecodebin3 found");
-
let uri = self
.instance()
.emit_by_name::<glib::GString>("update-uri", &[uri]);
- source.set_property("uri", uri);
- source.set_property("use-buffering", true);
- source.set_property("buffer-duration", buffer_duration);
+ let source = gst::ElementFactory::make("uridecodebin3")
+ .name("uridecodebin")
+ .property("uri", uri)
+ .property("use-buffering", true)
+ .property("buffer-duration", buffer_duration)
+ .build()
+ .expect("No uridecodebin3 found");
source
}
@@ -1081,11 +1092,13 @@ impl FallbackSrc {
) -> Option<SourceBin> {
let source: gst::Element = match fallback_uri {
Some(uri) => {
- let dbin = gst::ElementFactory::make("uridecodebin3", Some("uridecodebin"))
+ let dbin = gst::ElementFactory::make("uridecodebin3")
+ .name("uridecodebin")
+ .property("uri", uri)
+ .property("use-buffering", true)
+ .property("buffer-duration", buffer_duration)
+ .build()
.expect("No uridecodebin3 found");
- dbin.set_property("uri", uri);
- dbin.set_property("use-buffering", true);
- dbin.set_property("buffer-duration", buffer_duration);
dbin
}
@@ -1156,15 +1169,15 @@ impl FallbackSrc {
dummy_source: &gst::Bin,
filter_caps: &gst::Caps,
) -> Stream {
- let switch =
- gst::ElementFactory::make("fallbackswitch", None).expect("No fallbackswitch found");
+ let switch = gst::ElementFactory::make("fallbackswitch")
+ .property("timeout", timeout.nseconds())
+ .property("min-upstream-latency", min_latency.nseconds())
+ .property("immediate-fallback", immediate_fallback)
+ .build()
+ .expect("No fallbackswitch found");
self.instance().add(&switch).unwrap();
- switch.set_property("timeout", timeout.nseconds());
- switch.set_property("min-upstream-latency", min_latency.nseconds());
- switch.set_property("immediate-fallback", immediate_fallback);
-
let dummy_srcpad = dummy_source.static_pad("src").unwrap();
let dummy_sinkpad = switch.request_pad_simple("sink_%u").unwrap();
dummy_srcpad.link(&dummy_sinkpad).unwrap();
@@ -1686,14 +1699,19 @@ impl FallbackSrc {
let converters = if is_video {
let bin = gst::Bin::new(None);
- let videoconvert =
- gst::ElementFactory::make("videoconvert", Some("video_videoconvert"))
- .expect("No videoconvert found");
+ let videoconvert = gst::ElementFactory::make("videoconvert")
+ .name("video_videoconvert")
+ .build()
+ .expect("No videoconvert found");
- let videoscale = gst::ElementFactory::make("videoscale", Some("video_videoscale"))
+ let videoscale = gst::ElementFactory::make("videoscale")
+ .name("video_videoscale")
+ .build()
.expect("No videoscale found");
- let capsfilter = gst::ElementFactory::make("capsfilter", Some("video_capsfilter"))
+ let capsfilter = gst::ElementFactory::make("capsfilter")
+ .name("video_capsfilter")
+ .build()
.expect("No capsfilter found");
if fallback_source {
@@ -1721,15 +1739,19 @@ impl FallbackSrc {
} else {
let bin = gst::Bin::new(None);
- let audioconvert =
- gst::ElementFactory::make("audioconvert", Some("audio_audioconvert"))
- .expect("No audioconvert found");
+ let audioconvert = gst::ElementFactory::make("audioconvert")
+ .name("audio_audioconvert")
+ .build()
+ .expect("No audioconvert found");
- let audioresample =
- gst::ElementFactory::make("audioresample", Some("audio_audioresample"))
- .expect("No audioresample found");
+ let audioresample = gst::ElementFactory::make("audioresample")
+ .name("audio_audioresample")
+ .build()
+ .expect("No audioresample found");
- let capsfilter = gst::ElementFactory::make("capsfilter", Some("audio_capsfilter"))
+ let capsfilter = gst::ElementFactory::make("capsfilter")
+ .name("audio_capsfilter")
+ .build()
.expect("No capsfilter found");
if fallback_source {
@@ -1756,20 +1778,24 @@ impl FallbackSrc {
bin.upcast()
};
- let queue = gst::ElementFactory::make("queue", None).unwrap();
- queue.set_properties(&[
- ("max-size-bytes", &0u32),
- ("max-size-buffers", &0u32),
- (
+ let queue = gst::ElementFactory::make("queue")
+ .property("max-size-bytes", 0u32)
+ .property("max-size-buffers", 0u32)
+ .property(
"max-size-time",
- &(cmp::max(state.settings.min_latency, 1.seconds())),
- ),
- ]);
- let clocksync = gst::ElementFactory::make("clocksync", None).unwrap_or_else(|_| {
- let identity = gst::ElementFactory::make("identity", None).unwrap();
- identity.set_property("sync", true);
- identity
- });
+ cmp::max(state.settings.min_latency, 1.seconds()),
+ )
+ .build()
+ .unwrap();
+ let clocksync = gst::ElementFactory::make("clocksync")
+ .build()
+ .unwrap_or_else(|_| {
+ let identity = gst::ElementFactory::make("identity")
+ .property("sync", true)
+ .build()
+ .unwrap();
+ identity
+ });
source
.source
@@ -1790,10 +1816,11 @@ impl FallbackSrc {
let imagefreeze = if is_image {
gst::debug!(CAT, imp: self, "Image stream, inserting imagefreeze");
- let imagefreeze =
- gst::ElementFactory::make("imagefreeze", None).expect("no imagefreeze found");
+ let imagefreeze = gst::ElementFactory::make("imagefreeze")
+ .property("is-live", true)
+ .build()
+ .expect("no imagefreeze found");
source.source.add(&imagefreeze).unwrap();
- imagefreeze.set_property("is-live", true);
if imagefreeze.sync_state_with_parent().is_err() {
gst::error!(CAT, imp: self, "imagefreeze failed to change state",);
diff --git a/utils/fallbackswitch/tests/fallbackswitch.rs b/utils/fallbackswitch/tests/fallbackswitch.rs
index 1c35fb05c..089d725d7 100644
--- a/utils/fallbackswitch/tests/fallbackswitch.rs
+++ b/utils/fallbackswitch/tests/fallbackswitch.rs
@@ -473,25 +473,30 @@ fn setup_pipeline(
pipeline.set_base_time(gst::ClockTime::SECOND);
pipeline.set_start_time(gst::ClockTime::NONE);
- let src = gst::ElementFactory::make("appsrc", Some("src"))
+ let src = gst::ElementFactory::make("appsrc")
+ .name("src")
+ .build()
.unwrap()
.downcast::<gst_app::AppSrc>()
.unwrap();
- src.set_property("is-live", true);
- src.set_property("format", gst::Format::Time);
- src.set_property("min-latency", LATENCY.nseconds() as i64);
- src.set_property(
- "caps",
- gst_video::VideoCapsBuilder::new()
+ src.set_is_live(true);
+ src.set_format(gst::Format::Time);
+ src.set_min_latency(LATENCY.nseconds() as i64);
+ src.set_caps(Some(
+ &gst_video::VideoCapsBuilder::new()
.format(gst_video::VideoFormat::Argb)
.width(320)
.height(240)
.framerate((0, 1).into())
.build(),
- );
+ ));
+
+ let switch = gst::ElementFactory::make("fallbackswitch")
+ .name("switch")
+ .property("timeout", 3.seconds())
+ .build()
+ .unwrap();
- let switch = gst::ElementFactory::make("fallbackswitch", Some("switch")).unwrap();
- switch.set_property("timeout", 3.seconds());
if let Some(imm) = immediate_fallback {
switch.set_property("immediate-fallback", imm);
}
@@ -499,13 +504,15 @@ fn setup_pipeline(
switch.set_property("auto-switch", auto_switch);
}
- let sink = gst::ElementFactory::make("appsink", Some("sink"))
+ let sink = gst::ElementFactory::make("appsink")
+ .name("sink")
+ .build()
.unwrap()
.downcast::<gst_app::AppSink>()
.unwrap();
- sink.set_property("sync", false);
+ sink.set_sync(false);
- let queue = gst::ElementFactory::make("queue", None).unwrap();
+ let queue = gst::ElementFactory::make("queue").build().unwrap();
pipeline
.add_many(&[src.upcast_ref(), &switch, &queue, sink.upcast_ref()])
@@ -518,22 +525,23 @@ fn setup_pipeline(
sink_pad.set_property("priority", 0u32);
if let Some(live) = with_live_fallback {
- let fallback_src = gst::ElementFactory::make("appsrc", Some("fallback-src"))
+ let fallback_src = gst::ElementFactory::make("appsrc")
+ .name("fallback-src")
+ .build()
.unwrap()
.downcast::<gst_app::AppSrc>()
.unwrap();
- fallback_src.set_property("is-live", live);
- fallback_src.set_property("format", gst::Format::Time);
- fallback_src.set_property("min-latency", LATENCY.nseconds() as i64);
- fallback_src.set_property(
- "caps",
- gst_video::VideoCapsBuilder::new()
+ fallback_src.set_is_live(live);
+ fallback_src.set_format(gst::Format::Time);
+ fallback_src.set_min_latency(LATENCY.nseconds() as i64);
+ fallback_src.set_caps(Some(
+ &gst_video::VideoCapsBuilder::new()
.format(gst_video::VideoFormat::Argb)
.width(160)
.height(120)
.framerate((0, 1).into())
.build(),
- );
+ ));
pipeline.add(&fallback_src).unwrap();
diff --git a/utils/togglerecord/examples/gtk_recording.rs b/utils/togglerecord/examples/gtk_recording.rs
index a5ce8d1d1..5816eefda 100644
--- a/utils/togglerecord/examples/gtk_recording.rs
+++ b/utils/togglerecord/examples/gtk_recording.rs
@@ -23,54 +23,66 @@ fn create_pipeline() -> (
) {
let pipeline = gst::Pipeline::new(None);
- let video_src = gst::ElementFactory::make("videotestsrc", None).unwrap();
- video_src.set_property("is-live", true);
- video_src.set_property_from_str("pattern", "ball");
+ let video_src = gst::ElementFactory::make("videotestsrc")
+ .property("is-live", true)
+ .property_from_str("pattern", "ball")
+ .build()
+ .unwrap();
- let timeoverlay = gst::ElementFactory::make("timeoverlay", None).unwrap();
- timeoverlay.set_property("font-desc", "Monospace 20");
+ let timeoverlay = gst::ElementFactory::make("timeoverlay")
+ .property("font-desc", "Monospace 20")
+ .build()
+ .unwrap();
- let video_tee = gst::ElementFactory::make("tee", None).unwrap();
- let video_queue1 = gst::ElementFactory::make("queue", None).unwrap();
- let video_queue2 = gst::ElementFactory::make("queue", None).unwrap();
+ let video_tee = gst::ElementFactory::make("tee").build().unwrap();
+ let video_queue1 = gst::ElementFactory::make("queue").build().unwrap();
+ let video_queue2 = gst::ElementFactory::make("queue").build().unwrap();
- let video_convert1 = gst::ElementFactory::make("videoconvert", None).unwrap();
- let video_convert2 = gst::ElementFactory::make("videoconvert", None).unwrap();
+ let video_convert1 = gst::ElementFactory::make("videoconvert").build().unwrap();
+ let video_convert2 = gst::ElementFactory::make("videoconvert").build().unwrap();
- let video_sink = gst::ElementFactory::make("gtk4paintablesink", None).unwrap();
+ let video_sink = gst::ElementFactory::make("gtk4paintablesink")
+ .build()
+ .unwrap();
- let video_enc = gst::ElementFactory::make("x264enc", None).unwrap();
- video_enc.set_property("rc-lookahead", 10i32);
- video_enc.set_property("key-int-max", 30u32);
- let video_parse = gst::ElementFactory::make("h264parse", None).unwrap();
+ let video_enc = gst::ElementFactory::make("x264enc")
+ .property("rc-lookahead", 10i32)
+ .property("key-int-max", 30u32)
+ .build()
+ .unwrap();
+ let video_parse = gst::ElementFactory::make("h264parse").build().unwrap();
- let audio_src = gst::ElementFactory::make("audiotestsrc", None).unwrap();
- audio_src.set_property("is-live", true);
- audio_src.set_property_from_str("wave", "ticks");
+ let audio_src = gst::ElementFactory::make("audiotestsrc")
+ .property("is-live", true)
+ .property_from_str("wave", "ticks")
+ .build()
+ .unwrap();
- let audio_tee = gst::ElementFactory::make("tee", None).unwrap();
- let audio_queue1 = gst::ElementFactory::make("queue", None).unwrap();
- let audio_queue2 = gst::ElementFactory::make("queue", None).unwrap();
+ let audio_tee = gst::ElementFactory::make("tee").build().unwrap();
+ let audio_queue1 = gst::ElementFactory::make("queue").build().unwrap();
+ let audio_queue2 = gst::ElementFactory::make("queue").build().unwrap();
- let audio_convert1 = gst::ElementFactory::make("audioconvert", None).unwrap();
- let audio_convert2 = gst::ElementFactory::make("audioconvert", None).unwrap();
+ let audio_convert1 = gst::ElementFactory::make("audioconvert").build().unwrap();
+ let audio_convert2 = gst::ElementFactory::make("audioconvert").build().unwrap();
- let audio_sink = gst::ElementFactory::make("autoaudiosink", None).unwrap();
+ let audio_sink = gst::ElementFactory::make("autoaudiosink").build().unwrap();
- let audio_enc = gst::ElementFactory::make("lamemp3enc", None).unwrap();
- let audio_parse = gst::ElementFactory::make("mpegaudioparse", None).unwrap();
+ let audio_enc = gst::ElementFactory::make("lamemp3enc").build().unwrap();
+ let audio_parse = gst::ElementFactory::make("mpegaudioparse").build().unwrap();
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
- let mux_queue1 = gst::ElementFactory::make("queue", None).unwrap();
- let mux_queue2 = gst::ElementFactory::make("queue", None).unwrap();
+ let mux_queue1 = gst::ElementFactory::make("queue").build().unwrap();
+ let mux_queue2 = gst::ElementFactory::make("queue").build().unwrap();
- let mux = gst::ElementFactory::make("mp4mux", None).unwrap();
+ let mux = gst::ElementFactory::make("mp4mux").build().unwrap();
- let file_sink = gst::ElementFactory::make("filesink", None).unwrap();
- file_sink.set_property("location", "recording.mp4");
- file_sink.set_property("async", false);
- file_sink.set_property("sync", false);
+ let file_sink = gst::ElementFactory::make("filesink")
+ .property("location", "recording.mp4")
+ .property("async", false)
+ .property("sync", false)
+ .build()
+ .unwrap();
pipeline
.add_many(&[
diff --git a/utils/togglerecord/tests/tests.rs b/utils/togglerecord/tests/tests.rs
index 8e16990d6..e5511f5f3 100644
--- a/utils/togglerecord/tests/tests.rs
+++ b/utils/togglerecord/tests/tests.rs
@@ -43,8 +43,10 @@ fn setup_sender_receiver(
mpsc::Receiver<Either<gst::Buffer, gst::Event>>,
thread::JoinHandle<()>,
) {
- let fakesink = gst::ElementFactory::make("fakesink", None).unwrap();
- fakesink.set_property("async", false);
+ let fakesink = gst::ElementFactory::make("fakesink")
+ .property("async", false)
+ .build()
+ .unwrap();
pipeline.add(&fakesink).unwrap();
let main_stream = pad == "src";
@@ -250,13 +252,13 @@ fn recv_buffers(
#[test]
fn test_create() {
init();
- assert!(gst::ElementFactory::make("togglerecord", None).is_ok());
+ assert!(gst::ElementFactory::make("togglerecord").build().is_ok());
}
#[test]
fn test_create_pads() {
init();
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
let sinkpad = togglerecord.request_pad_simple("sink_%u").unwrap();
let srcpad = sinkpad.iterate_internal_links().next().unwrap().unwrap();
@@ -274,7 +276,7 @@ fn test_one_stream_open() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input, _, receiver_output, thread) =
@@ -306,7 +308,7 @@ fn test_one_stream_gaps_open() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input, _, receiver_output, thread) =
@@ -339,7 +341,7 @@ fn test_one_stream_close_open() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input, receiver_input_done, receiver_output, thread) =
@@ -373,7 +375,7 @@ fn test_one_stream_open_close() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input, receiver_input_done, receiver_output, thread) =
@@ -408,7 +410,7 @@ fn test_one_stream_open_close_open() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input, receiver_input_done, receiver_output, thread) =
@@ -452,7 +454,7 @@ fn test_two_stream_open() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input_1, receiver_input_done_1, receiver_output_1, thread_1) =
@@ -505,7 +507,7 @@ fn test_two_stream_open_shift() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input_1, receiver_input_done_1, receiver_output_1, thread_1) =
@@ -562,7 +564,7 @@ fn test_two_stream_open_shift_main() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input_1, receiver_input_done_1, receiver_output_1, thread_1) =
@@ -627,7 +629,7 @@ fn test_two_stream_open_close() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input_1, receiver_input_done_1, receiver_output_1, thread_1) =
@@ -696,7 +698,7 @@ fn test_two_stream_close_open() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input_1, receiver_input_done_1, receiver_output_1, thread_1) =
@@ -765,7 +767,7 @@ fn test_two_stream_open_close_open() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input_1, receiver_input_done_1, receiver_output_1, thread_1) =
@@ -859,7 +861,7 @@ fn test_two_stream_open_close_open_gaps() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input_1, receiver_input_done_1, receiver_output_1, thread_1) =
@@ -959,7 +961,7 @@ fn test_two_stream_close_open_close_delta() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input_1, receiver_input_done_1, receiver_output_1, thread_1) =
@@ -1048,7 +1050,7 @@ fn test_three_stream_open_close_open() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input_1, receiver_input_done_1, receiver_output_1, thread_1) =
@@ -1172,7 +1174,7 @@ fn test_two_stream_main_eos() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input_1, receiver_input_done_1, receiver_output_1, thread_1) =
@@ -1247,7 +1249,7 @@ fn test_two_stream_secondary_eos_first() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input_1, receiver_input_done_1, receiver_output_1, thread_1) =
@@ -1315,7 +1317,7 @@ fn test_three_stream_main_eos() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input_1, receiver_input_done_1, receiver_output_1, thread_1) =
@@ -1416,7 +1418,7 @@ fn test_three_stream_main_and_second_eos() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input_1, receiver_input_done_1, receiver_output_1, thread_1) =
@@ -1517,7 +1519,7 @@ fn test_three_stream_secondary_eos_first() {
init();
let pipeline = gst::Pipeline::new(None);
- let togglerecord = gst::ElementFactory::make("togglerecord", None).unwrap();
+ let togglerecord = gst::ElementFactory::make("togglerecord").build().unwrap();
pipeline.add(&togglerecord).unwrap();
let (sender_input_1, receiver_input_done_1, receiver_output_1, thread_1) =
diff --git a/utils/tracers/src/queue_levels/imp.rs b/utils/tracers/src/queue_levels/imp.rs
index 626305c92..1662d05fb 100644
--- a/utils/tracers/src/queue_levels/imp.rs
+++ b/utils/tracers/src/queue_levels/imp.rs
@@ -64,8 +64,8 @@ static CAT: Lazy<gst::DebugCategory> = Lazy::new(|| {
});
static QUEUE_TYPE: Lazy<glib::Type> = Lazy::new(|| {
- if let Ok(queue) = gst::ElementFactory::make("queue", None) {
- queue.type_()
+ if let Some(queue) = gst::ElementFactory::find("queue").and_then(|f| f.load().ok()) {
+ queue.element_type()
} else {
gst::warning!(CAT, "Can't instantiate queue element");
glib::Type::INVALID
@@ -73,8 +73,8 @@ static QUEUE_TYPE: Lazy<glib::Type> = Lazy::new(|| {
});
static QUEUE2_TYPE: Lazy<glib::Type> = Lazy::new(|| {
- if let Ok(queue) = gst::ElementFactory::make("queue2", None) {
- queue.type_()
+ if let Some(queue) = gst::ElementFactory::find("queue2").and_then(|f| f.load().ok()) {
+ queue.element_type()
} else {
gst::warning!(CAT, "Can't instantiate queue2 element");
glib::Type::INVALID
@@ -82,8 +82,8 @@ static QUEUE2_TYPE: Lazy<glib::Type> = Lazy::new(|| {
});
static MULTIQUEUE_TYPE: Lazy<glib::Type> = Lazy::new(|| {
- if let Ok(queue) = gst::ElementFactory::make("multiqueue", None) {
- queue.type_()
+ if let Some(queue) = gst::ElementFactory::find("multiqueue").and_then(|f| f.load().ok()) {
+ queue.element_type()
} else {
gst::warning!(CAT, "Can't instantiate multiqueue element");
glib::Type::INVALID
diff --git a/utils/uriplaylistbin/examples/playlist.rs b/utils/uriplaylistbin/examples/playlist.rs
index 3ea879c64..6b23a211b 100644
--- a/utils/uriplaylistbin/examples/playlist.rs
+++ b/utils/uriplaylistbin/examples/playlist.rs
@@ -25,13 +25,13 @@ struct Opt {
fn create_pipeline(uris: Vec<String>, iterations: u32) -> anyhow::Result<gst::Pipeline> {
let pipeline = gst::Pipeline::new(None);
- let playlist = gst::ElementFactory::make("uriplaylistbin", None)?;
+ let playlist = gst::ElementFactory::make("uriplaylistbin")
+ .property("uris", &uris)
+ .property("iterations", &iterations)
+ .build()?;
pipeline.add(&playlist)?;
- playlist.set_property("uris", &uris);
- playlist.set_property("iterations", &iterations);
-
let sink_bins = Arc::new(Mutex::new(HashMap::new()));
let sink_bins_clone = sink_bins.clone();
diff --git a/utils/uriplaylistbin/src/uriplaylistbin/imp.rs b/utils/uriplaylistbin/src/uriplaylistbin/imp.rs
index 890b42665..a47bdf7b3 100644
--- a/utils/uriplaylistbin/src/uriplaylistbin/imp.rs
+++ b/utils/uriplaylistbin/src/uriplaylistbin/imp.rs
@@ -441,12 +441,11 @@ impl Item {
fn set_waiting_for_stream_collection(&self) -> Result<(), PlaylistError> {
let mut inner = self.inner.lock().unwrap();
- let uridecodebin = gst::ElementFactory::make(
- "uridecodebin3",
- Some(&format!("playlist-decodebin-{}", inner.index)),
- )
- .map_err(|e| PlaylistError::PluginMissing { error: e.into() })?;
- uridecodebin.set_property("uri", &inner.uri);
+ let uridecodebin = gst::ElementFactory::make("uridecodebin3")
+ .name(&format!("playlist-decodebin-{}", inner.index))
+ .property("uri", &inner.uri)
+ .build()
+ .map_err(|e| PlaylistError::PluginMissing { error: e.into() })?;
assert!(matches!(inner.state, ItemState::Pending));
inner.state = ItemState::WaitingForStreamCollection { uridecodebin };
@@ -974,9 +973,10 @@ impl UriPlaylistBin {
let mut state_guard = self.state.lock().unwrap();
assert!(state_guard.is_none());
- let streamsynchronizer =
- gst::ElementFactory::make("streamsynchronizer", Some("playlist-streamsync"))
- .map_err(|e| PlaylistError::PluginMissing { error: e.into() })?;
+ let streamsynchronizer = gst::ElementFactory::make("streamsynchronizer")
+ .name("playlist-streamsync")
+ .build()
+ .map_err(|e| PlaylistError::PluginMissing { error: e.into() })?;
self.instance().add(&streamsynchronizer).unwrap();
@@ -1261,14 +1261,14 @@ impl UriPlaylistBin {
item.index()
);
- let concat = match gst::ElementFactory::make(
- "concat",
- Some(&format!(
+ let concat = match gst::ElementFactory::make("concat")
+ .name(&format!(
"playlist-concat-{}-{}",
stream_type.name(),
stream_index
- )),
- ) {
+ ))
+ .build()
+ {
Ok(concat) => concat,
Err(_) => {
drop(state_guard);
diff --git a/utils/uriplaylistbin/tests/uriplaylistbin.rs b/utils/uriplaylistbin/tests/uriplaylistbin.rs
index f86005b2f..fca4fa476 100644
--- a/utils/uriplaylistbin/tests/uriplaylistbin.rs
+++ b/utils/uriplaylistbin/tests/uriplaylistbin.rs
@@ -81,18 +81,19 @@ fn test(
let playlist_len = medias.len() * (iterations as usize);
- let pipeline = gst::Pipeline::new(None);
- let playlist = gst::ElementFactory::make("uriplaylistbin", None).unwrap();
- let mq = gst::ElementFactory::make("multiqueue", None).unwrap();
-
- pipeline.add_many(&[&playlist, &mq]).unwrap();
-
let total_len: gst::ClockTime = medias.iter().map(|t| t.len * (iterations as u64)).sum();
let uris: Vec<String> = medias.iter().map(|t| t.uri.clone()).collect();
- playlist.set_property("uris", &uris);
- playlist.set_property("iterations", &iterations);
+ let pipeline = gst::Pipeline::new(None);
+ let playlist = gst::ElementFactory::make("uriplaylistbin")
+ .property("uris", &uris)
+ .property("iterations", &iterations)
+ .build()
+ .unwrap();
+ let mq = gst::ElementFactory::make("multiqueue").build().unwrap();
+
+ pipeline.add_many(&[&playlist, &mq]).unwrap();
assert_eq!(playlist.property::<u32>("current-iteration"), 0);
assert_eq!(playlist.property::<u64>("current-uri-index"), 0);
@@ -114,7 +115,7 @@ fn test(
None => return,
};
- let sink = gst::ElementFactory::make("fakesink", None).unwrap();
+ let sink = gst::ElementFactory::make("fakesink").build().unwrap();
pipeline.add(&sink).unwrap();
sink.sync_state_with_parent().unwrap();