server fix

This commit is contained in:
Brad Stein 2025-06-23 20:45:21 -05:00
parent 9b8a01a32e
commit 374d323bf5

View File

@ -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 backpressure: 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 backpressure: 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(),