server fix
This commit is contained in:
parent
9b8a01a32e
commit
374d323bf5
@ -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(),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user