Video Fix
This commit is contained in:
parent
c5ce41bb9a
commit
d5323232fb
@ -21,8 +21,8 @@ pub async fn eye_ball(
|
|||||||
|
|
||||||
let desc = format!(
|
let desc = format!(
|
||||||
"v4l2src device={dev} io-mode=mmap ! \
|
"v4l2src device={dev} io-mode=mmap ! \
|
||||||
video/x-h264,stream-format=byte-stream,alignment=au ! \
|
video/x-h264,stream-format=byte-stream,alignment=au,profile=high ! \
|
||||||
h264parse config-interval=1 ! \
|
h264parse config-interval=-1 ! \
|
||||||
appsink name=sink emit-signals=true drop=true sync=false"
|
appsink name=sink emit-signals=true drop=true sync=false"
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -45,6 +45,9 @@ pub async fn eye_ball(
|
|||||||
let sample = sink.pull_sample().map_err(|_| gst::FlowError::Eos)?;
|
let sample = sink.pull_sample().map_err(|_| gst::FlowError::Eos)?;
|
||||||
let buffer = sample.buffer().ok_or(gst::FlowError::Error)?;
|
let buffer = sample.buffer().ok_or(gst::FlowError::Error)?;
|
||||||
|
|
||||||
|
/* -------- map once, reuse ----- */
|
||||||
|
let map = buffer.map_readable().map_err(|_| gst::FlowError::Error)?;
|
||||||
|
|
||||||
/* -------- basic counters ------ */
|
/* -------- basic counters ------ */
|
||||||
static FRAME: std::sync::atomic::AtomicU64 =
|
static FRAME: std::sync::atomic::AtomicU64 =
|
||||||
std::sync::atomic::AtomicU64::new(0);
|
std::sync::atomic::AtomicU64::new(0);
|
||||||
@ -52,11 +55,12 @@ pub async fn eye_ball(
|
|||||||
if n % 120 == 0 {
|
if n % 120 == 0 {
|
||||||
// trace!("eye{id}: delivered {n} frames");
|
// trace!("eye{id}: delivered {n} frames");
|
||||||
trace!(target: "lesavka_server::video", "eye{id}: delivered {n} frames");
|
trace!(target: "lesavka_server::video", "eye{id}: delivered {n} frames");
|
||||||
|
if enabled!(Level::TRACE) {
|
||||||
|
let path = format!("/tmp/eye{id}-srv-{:05}.h264", n);
|
||||||
|
std::fs::write(&path, map.as_slice()).ok();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------- map once, reuse ----- */
|
|
||||||
let map = buffer.map_readable().map_err(|_| gst::FlowError::Error)?;
|
|
||||||
|
|
||||||
// write first IDR to disk (quick sanity check)
|
// write first IDR to disk (quick sanity check)
|
||||||
if n == 0 {
|
if n == 0 {
|
||||||
// let map = buffer.map_readable().map_err(|_| gst::FlowError::Error)?;
|
// let map = buffer.map_readable().map_err(|_| gst::FlowError::Error)?;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user