diff --git a/backends/gstreamer/src/player.rs b/backends/gstreamer/src/player.rs index 01a9ab10..8267a0a8 100644 --- a/backends/gstreamer/src/player.rs +++ b/backends/gstreamer/src/player.rs @@ -94,8 +94,6 @@ struct PlayerInner { subscribers: Vec>, renderers: Vec>>, last_metadata: Option, - /// Data that was pushed to the player before we were ready. - queued_data: Vec, } impl PlayerInner { @@ -214,31 +212,14 @@ impl PlayerInner { } pub fn push_data(&mut self, data: Vec) -> Result<(), BackendError> { - let buffer = - gst::Buffer::from_slice(data).ok_or_else(|| BackendError::PlayerPushDataFailed)?; - - match self.appsrc { - None => self.queued_data.push(buffer), - Some(ref mut appsrc) => { - if appsrc.push_buffer(buffer) != gst::FlowReturn::Ok { - return Err(BackendError::PlayerPushDataFailed); - } - } - }; - - Ok(()) - } - - pub fn flush_queued_data(&mut self) -> Result<(), BackendError> { - if self.appsrc.is_none() { - return Err(BackendError::PlayerPushDataFailed); - } - for buffer in self.queued_data.drain(..) { - if self.appsrc.as_ref().unwrap().push_buffer(buffer) != gst::FlowReturn::Ok { - return Err(BackendError::PlayerPushDataFailed); + if let Some(ref mut appsrc) = self.appsrc { + let buffer = + gst::Buffer::from_slice(data).ok_or_else(|| BackendError::PlayerPushDataFailed)?; + if appsrc.push_buffer(buffer) == gst::FlowReturn::Ok { + return Ok(()); } } - Ok(()) + Err(BackendError::PlayerPushDataFailed) } pub fn set_app_src(&mut self, appsrc: gst_app::AppSrc) { @@ -316,7 +297,6 @@ impl GStreamerPlayer { subscribers: Vec::new(), renderers: Vec::new(), last_metadata: None, - queued_data: Vec::new(), }))); let inner = self.inner.borrow(); @@ -515,10 +495,6 @@ impl GStreamerPlayer { inner.set_app_src(appsrc); - if inner.flush_queued_data().is_err() { - eprintln!("Could not flush queued data"); - } - None });