threadshare: standalone examples: log stats on EOS

... not on stop as it added extra noise to the parked duration report.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2524>
This commit is contained in:
François Laignel 2025-08-29 11:16:44 +02:00
parent 8807eefd32
commit e92250847d
3 changed files with 23 additions and 16 deletions

View file

@ -116,6 +116,9 @@ impl PadSinkHandler for AsyncPadSinkHandler {
let is_main_elem = elem.imp().settings.lock().unwrap().is_main_elem; let is_main_elem = elem.imp().settings.lock().unwrap().is_main_elem;
if is_main_elem { if is_main_elem {
gst::info!(CAT, obj = elem, "EOS"); gst::info!(CAT, obj = elem, "EOS");
if let Some(ref mut stats) = self.0.lock().await.stats {
stats.log_global();
}
let _ = elem.post_message( let _ = elem.post_message(
gst::message::Application::builder(gst::Structure::new_empty( gst::message::Application::builder(gst::Structure::new_empty(
"ts-standalone-sink/eos", "ts-standalone-sink/eos",
@ -181,11 +184,7 @@ impl AsyncPadSinkHandler {
fn stop(&self) { fn stop(&self) {
futures::executor::block_on(async move { futures::executor::block_on(async move {
let mut inner = self.0.lock().await; self.0.lock().await.is_flushing = true;
if let Some(ref mut stats) = inner.stats {
stats.log_global();
}
inner.is_flushing = true;
}); });
} }
} }

View file

@ -115,6 +115,9 @@ impl PadSinkHandler for SyncPadSinkHandler {
let is_main_elem = elem.imp().settings.lock().unwrap().is_main_elem; let is_main_elem = elem.imp().settings.lock().unwrap().is_main_elem;
if is_main_elem { if is_main_elem {
gst::info!(CAT, obj = elem, "EOS"); gst::info!(CAT, obj = elem, "EOS");
if let Some(ref mut stats) = self.0.lock().unwrap().stats {
stats.log_global();
}
let _ = elem.post_message( let _ = elem.post_message(
gst::message::Application::builder(gst::Structure::new_empty( gst::message::Application::builder(gst::Structure::new_empty(
"ts-standalone-sink/eos", "ts-standalone-sink/eos",
@ -175,11 +178,7 @@ impl SyncPadSinkHandler {
} }
fn stop(&self) { fn stop(&self) {
let mut inner = self.0.lock().unwrap(); self.0.lock().unwrap().is_flushing = true;
if let Some(ref mut stats) = inner.stats {
stats.log_global();
}
inner.is_flushing = true;
} }
} }

View file

@ -60,6 +60,12 @@ impl PadSinkHandler for TaskPadSinkHandler {
if is_main_elem { if is_main_elem {
gst::info!(CAT, obj = elem, "EOS"); gst::info!(CAT, obj = elem, "EOS");
let _ = elem
.imp()
.clone_item_sender()
.send_async(StreamItem::Event(event))
.await;
let _ = elem.post_message( let _ = elem.post_message(
gst::message::Application::builder(gst::Structure::new_empty( gst::message::Application::builder(gst::Structure::new_empty(
"ts-standalone-sink/eos", "ts-standalone-sink/eos",
@ -157,9 +163,6 @@ impl TaskImpl for TaskSinkTask {
async fn stop(&mut self) -> Result<(), gst::ErrorMessage> { async fn stop(&mut self) -> Result<(), gst::ErrorMessage> {
log_or_trace!(CAT, self.is_main_elem, obj = self.elem, "Stopping Task"); log_or_trace!(CAT, self.is_main_elem, obj = self.elem, "Stopping Task");
if let Some(ref mut stats) = self.stats {
stats.log_global();
}
self.flush(); self.flush();
Ok(()) Ok(())
} }
@ -207,11 +210,17 @@ impl TaskImpl for TaskSinkTask {
log_or_trace!(CAT, self.is_main_elem, obj = self.elem, "Buffer processed"); log_or_trace!(CAT, self.is_main_elem, obj = self.elem, "Buffer processed");
} }
StreamItem::Event(evt) => { StreamItem::Event(evt) => match evt.view() {
if let EventView::Segment(evt) = evt.view() { EventView::Eos(_) => {
if let Some(ref mut stats) = self.stats {
stats.log_global();
}
}
EventView::Segment(evt) => {
self.segment = evt.segment().downcast_ref::<gst::ClockTime>().cloned(); self.segment = evt.segment().downcast_ref::<gst::ClockTime>().cloned();
} }
} _ => (),
},
} }
Ok(()) Ok(())