From 7246b1b14735561a34f073de6e5123f32a4cb69b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Tue, 6 Aug 2019 18:48:24 +0300 Subject: [PATCH] Don't do anything in BaseSrc::negotiate() We can't negotiate anything meaningful with downstream and will always set the caps based on the data we receive in ::create() later. --- src/ndiaudiosrc.rs | 13 ++++++++----- src/ndivideosrc.rs | 13 ++++++++----- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/ndiaudiosrc.rs b/src/ndiaudiosrc.rs index 6ddcdb8a..880c90b4 100644 --- a/src/ndiaudiosrc.rs +++ b/src/ndiaudiosrc.rs @@ -375,7 +375,13 @@ impl ElementImpl for NdiAudioSrc { } impl BaseSrcImpl for NdiAudioSrc { - fn unlock(&self, element: &gst_base::BaseSrc) -> std::result::Result<(), gst::ErrorMessage> { + fn negotiate(&self, _element: &gst_base::BaseSrc) -> Result<(), gst::LoggableError> { + // Always succeed here without doing anything: we will set the caps once we received a + // buffer, there's nothing we can negotiate + Ok(()) + } + + fn unlock(&self, element: &gst_base::BaseSrc) -> Result<(), gst::ErrorMessage> { gst_debug!(self.cat, obj: element, "Unlocking",); if let Some(ref controller) = *self.receiver_controller.lock().unwrap() { controller.set_flushing(true); @@ -383,10 +389,7 @@ impl BaseSrcImpl for NdiAudioSrc { Ok(()) } - fn unlock_stop( - &self, - element: &gst_base::BaseSrc, - ) -> std::result::Result<(), gst::ErrorMessage> { + fn unlock_stop(&self, element: &gst_base::BaseSrc) -> Result<(), gst::ErrorMessage> { gst_debug!(self.cat, obj: element, "Stop unlocking",); if let Some(ref controller) = *self.receiver_controller.lock().unwrap() { controller.set_flushing(false); diff --git a/src/ndivideosrc.rs b/src/ndivideosrc.rs index 2a25f10b..6ae64016 100644 --- a/src/ndivideosrc.rs +++ b/src/ndivideosrc.rs @@ -410,7 +410,13 @@ impl ElementImpl for NdiVideoSrc { } impl BaseSrcImpl for NdiVideoSrc { - fn unlock(&self, element: &gst_base::BaseSrc) -> std::result::Result<(), gst::ErrorMessage> { + fn negotiate(&self, _element: &gst_base::BaseSrc) -> Result<(), gst::LoggableError> { + // Always succeed here without doing anything: we will set the caps once we received a + // buffer, there's nothing we can negotiate + Ok(()) + } + + fn unlock(&self, element: &gst_base::BaseSrc) -> Result<(), gst::ErrorMessage> { gst_debug!(self.cat, obj: element, "Unlocking",); if let Some(ref controller) = *self.receiver_controller.lock().unwrap() { controller.set_flushing(true); @@ -418,10 +424,7 @@ impl BaseSrcImpl for NdiVideoSrc { Ok(()) } - fn unlock_stop( - &self, - element: &gst_base::BaseSrc, - ) -> std::result::Result<(), gst::ErrorMessage> { + fn unlock_stop(&self, element: &gst_base::BaseSrc) -> Result<(), gst::ErrorMessage> { gst_debug!(self.cat, obj: element, "Stop unlocking",); if let Some(ref controller) = *self.receiver_controller.lock().unwrap() { controller.set_flushing(false);