diff --git a/net/aws/src/s3hlssink/imp.rs b/net/aws/src/s3hlssink/imp.rs index 825920d1..ab9e1c79 100644 --- a/net/aws/src/s3hlssink/imp.rs +++ b/net/aws/src/s3hlssink/imp.rs @@ -740,7 +740,11 @@ impl ObjectImpl for S3HlsSink { // The signature on delete-fragment signal is different for // hlssink2 and hlssink3. - if self_.hlssink.factory().unwrap().name().contains("hlssink3") { + if self_ + .hlssink + .factory() + .is_some_and(|factory| factory.name() == "hlssink3") + { if res.is_ok() { Some(true.to_value()) } else { diff --git a/net/webrtc/examples/webrtcsink-high-quality-tune.rs b/net/webrtc/examples/webrtcsink-high-quality-tune.rs index 8c0ab9a1..17a4045a 100644 --- a/net/webrtc/examples/webrtcsink-high-quality-tune.rs +++ b/net/webrtc/examples/webrtcsink-high-quality-tune.rs @@ -40,11 +40,12 @@ fn main() -> Result<(), Error> { pipeline.connect("deep-element-added", false, |values| { let element = values[2].get::().unwrap(); - if let Some(factory) = element.factory() { - if factory.name().as_str() == "videoscale" { - println!("Tuning videoscale"); - element.set_property_from_str("method", "lanczos"); - } + if element + .factory() + .is_some_and(|factory| factory.name() == "videoscale") + { + println!("Tuning videoscale"); + element.set_property_from_str("method", "lanczos"); } None @@ -61,9 +62,9 @@ fn main() -> Result<(), Error> { webrtcsink.connect("encoder-setup", true, |values| { let encoder = values[3].get::().unwrap(); - println!("Encoder: {}", encoder.factory().unwrap().name()); - if let Some(factory) = encoder.factory() { + println!("Encoder: {}", factory.name()); + match factory.name().as_str() { "x264enc" => { println!("Applying extra configuration to x264enc"); diff --git a/net/webrtc/examples/webrtcsink-stats-server.rs b/net/webrtc/examples/webrtcsink-stats-server.rs index 1da38e35..3511c9ea 100644 --- a/net/webrtc/examples/webrtcsink-stats-server.rs +++ b/net/webrtc/examples/webrtcsink-stats-server.rs @@ -137,9 +137,8 @@ async fn run(args: Args) -> Result<(), Error> { ws.connect("encoder-setup", false, |values| { let encoder = values[3].get::().unwrap(); - info!("Encoder: {}", encoder.factory().unwrap().name()); - let configured = if let Some(factory) = encoder.factory() { + info!("Encoder: {}", factory.name()); matches!(factory.name().as_str(), "does-not-exist") } else { false diff --git a/net/webrtc/src/webrtcsink/imp.rs b/net/webrtc/src/webrtcsink/imp.rs index 0ce5a9bc..3ae185fe 100644 --- a/net/webrtc/src/webrtcsink/imp.rs +++ b/net/webrtc/src/webrtcsink/imp.rs @@ -559,7 +559,7 @@ fn make_converter_for_video_caps(caps: &gst::Caps, codec: &Codec) -> Result { - pay.set_property_from_str("picture-id-mode", "15-bit"); + if let Some(factory) = pay.factory() { + match factory.name().as_str() { + "rtpvp8pay" | "rtpvp9pay" => { + pay.set_property_from_str("picture-id-mode", "15-bit"); + } + "rtph264pay" | "rtph265pay" => { + pay.set_property_from_str("aggregate-mode", "zero-latency"); + pay.set_property("config-interval", -1i32); + } + _ => (), } - "rtph264pay" | "rtph265pay" => { - pay.set_property_from_str("aggregate-mode", "zero-latency"); - pay.set_property("config-interval", -1i32); - } - _ => (), } } @@ -950,13 +952,7 @@ impl VideoEncoder { ) -> Option { let halved_framerate = video_info.fps().mul(gst::Fraction::new(1, 2)); Some(Self { - factory_name: encoding_elements - .encoder - .as_ref()? - .factory() - .unwrap() - .name() - .into(), + factory_name: encoding_elements.encoder.as_ref()?.factory()?.name().into(), codec_name: codec_name.to_string(), element: encoding_elements.encoder.as_ref()?.clone(), filter: encoding_elements.raw_filter.as_ref()?.clone(), @@ -2634,7 +2630,7 @@ impl BaseWebRTCSink { glib::closure!(@watch element, @strong session_id => move |_webrtcbin: gst::Element, _bin: gst::Bin, e: gst::Element| { - if e.factory().map_or(false, |f| f.name() == "rtprtxsend") { + if e.factory().is_some_and(|f| f.name() == "rtprtxsend") { if e.has_property("stuffing-kbps", Some(i32::static_type())) { element.imp().set_rtptrxsend(element, &session_id, e); } else {