From 374d323bf54fd1e27483a32d1cd04ad34cf9cd87 Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Mon, 23 Jun 2025 20:45:21 -0500 Subject: [PATCH] server fix --- server/src/video.rs | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/server/src/video.rs b/server/src/video.rs index 5dfbfa6..5937a6f 100644 --- a/server/src/video.rs +++ b/server/src/video.rs @@ -33,18 +33,38 @@ pub async fn spawn_camera( sink.set_callbacks( gst_app::AppSinkCallbacks::builder() + // .new_sample(move |sink| { + // let sample = sink.pull_sample().map_err(|_| gst::FlowError::Eos)?; + // let buffer = sample.buffer().ok_or(gst::FlowError::Error)?; + + // let map = buffer.map_readable().map_err(|_| gst::FlowError::Error)?; + // let pkt = VideoPacket { + // id, + // pts: buffer.pts().nseconds() / 1_000, // → µs + // data: map.as_slice().to_vec(), + // }; + // // ignore back‑pressure: drop oldest if channel is full + // let _ = tx.try_send(Ok(pkt)); + // Ok(gst::FlowSuccess::Ok) + // }) + // .build(), .new_sample(move |sink| { let sample = sink.pull_sample().map_err(|_| gst::FlowError::Eos)?; let buffer = sample.buffer().ok_or(gst::FlowError::Error)?; + let pts_us = buffer + .pts() + .map(|t| t.nseconds() / 1_000) // ns → µs + .unwrap_or(0); + let map = buffer.map_readable().map_err(|_| gst::FlowError::Error)?; + let pkt = VideoPacket { id, - pts: buffer.pts().nseconds() / 1_000, // → µs + pts: pts_us, data: map.as_slice().to_vec(), }; - // ignore back‑pressure: drop oldest if channel is full - let _ = tx.try_send(Ok(pkt)); + let _ = tx.try_send(Ok(pkt)); // drop on overflow Ok(gst::FlowSuccess::Ok) }) .build(),