0.4.0 mostly complete milestone

This commit is contained in:
Brad Stein 2025-06-29 04:17:44 -05:00
parent 32c27efd8d
commit e93b5a7bde
3 changed files with 19 additions and 15 deletions

View File

@ -55,7 +55,10 @@ impl InputAggregator {
WriteFlag::NORMAL, // <-- write access needed for EVIOCGRAB
) {
Ok(d) => d,
Err(e) => { }
Err(e) => {
warn!("❌ open {path}: {e}");
continue;
}
};
// non-blocking so fetch_events never stalls the whole loop

View File

@ -15,7 +15,7 @@ use tokio_stream::wrappers::ReceiverStream;
use tonic::{Request, Response, Status};
use tonic::transport::Server;
use tonic_reflection::server::{Builder as ReflBuilder};
use tracing::{info, warn, error, trace};
use tracing::{info, warn, error, trace, debug};
use tracing_subscriber::{filter::EnvFilter, fmt, prelude::*};
use tracing_appender::non_blocking::WorkerGuard;
@ -175,7 +175,7 @@ impl Relay for Handler {
1 => "/dev/lesavka_r_eye",
_ => return Err(Status::invalid_argument("monitor id must be 0 or 1")),
};
info!("🎥 streaming {dev}");
debug!("🎥 streaming {dev}");
let s = video::eye_ball(dev, id, 6_000)
.await
.map_err(|e| Status::internal(format!("{e:#}")))?;

View File

@ -44,24 +44,25 @@ pub async fn eye_ball(
let eye = EYE_ID[id as usize];
gst::init().context("gst init")?;
let desc = format!(
"v4l2src device=\"{dev}\" io-mode=mmap ! \
queue ! tsdemux name=d ! \
d. ! h264parse disable-passthrough=true config-interval=-1 ! \
video/x-h264,stream-format=byte-stream,alignment=au ! \
appsink name=vsink emit-signals=true max-buffers=32 drop=true"
);
// let desc = format!(
// "v4l2src device={dev} io-mode=mmap ! \
// queue max-size-time=0 ! tsdemux name=d ! \
// d. ! h264parse config-interval=1 ! queue ! appsink name=vsink emit-signals=true \
// d. ! aacparse ! queue ! appsink name=asink emit-signals=true"
// queue max-size-buffers=0 max-size-bytes=0 max-size-time=0 ! tsdemux name=d ! \
// video/x-h264,stream-format=byte-stream,alignment=au,profile=high ! tsdemux name=d ! \
// d. ! h264parse config-interval=1 ! queue ! appsink name=vsink emit-signals=true \
// d. ! aacparse ! queue ! h264parse config-interval=1 ! appsink name=sink \
// emit-signals=true drop=false sync=false"
// );
let desc = format!(
"v4l2src device={dev} io-mode=mmap ! \
queue max-size-buffers=0 max-size-bytes=0 max-size-time=0 ! tsdemux name=d ! \
video/x-h264,stream-format=byte-stream,alignment=au,profile=high ! tsdemux name=d ! \
d. ! h264parse config-interval=1 ! queue ! appsink name=vsink emit-signals=true \
d. ! aacparse ! queue ! h264parse config-interval=1 ! appsink name=sink \
emit-signals=true drop=false sync=false"
);
let pipeline = gst::parse::launch(&desc)?
.downcast::<gst::Pipeline>()
.expect("pipeline down-cast");
.expect("not a pipeline");
let sink = pipeline
.by_name("sink")