From 855390bc18584b90a2b3cfc5266502a8371a8ccc Mon Sep 17 00:00:00 2001 From: Jan Schmidt Date: Tue, 17 Sep 2024 21:54:14 +1000 Subject: [PATCH] onvifmetadatapay: Set output caps earlier As soon as input caps arrive, we can set output caps. This means upstream can send gap events earlier, before there is any actual metadata to send Part-of: --- net/onvif/src/onvifmetadatapay/imp.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/net/onvif/src/onvifmetadatapay/imp.rs b/net/onvif/src/onvifmetadatapay/imp.rs index 93aba5ac..c6969dec 100644 --- a/net/onvif/src/onvifmetadatapay/imp.rs +++ b/net/onvif/src/onvifmetadatapay/imp.rs @@ -4,6 +4,14 @@ use gst_rtp::prelude::*; use gst_rtp::subclass::prelude::*; use once_cell::sync::Lazy; +static CAT: Lazy = Lazy::new(|| { + gst::DebugCategory::new( + "rtponvifmetadatapay", + gst::DebugColorFlags::empty(), + Some("RTP ONVIF metadata payloader"), + ) +}); + #[derive(Default)] pub struct OnvifMetadataPay {} @@ -186,7 +194,8 @@ impl RTPBasePayloadImpl for OnvifMetadataPay { fn set_caps(&self, _caps: &gst::Caps) -> Result<(), gst::LoggableError> { self.obj() .set_options("application", true, "VND.ONVIF.METADATA", 90000); - - Ok(()) + self.obj() + .set_outcaps(None) + .map_err(|_| gst::loggable_error!(CAT, "Failed to set output caps")) } }