0.4.0 mostly complete milestone
This commit is contained in:
parent
32c27efd8d
commit
e93b5a7bde
@ -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
|
||||
|
||||
@ -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:#}")))?;
|
||||
|
||||
@ -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 ! \
|
||||
// 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 ! appsink name=asink 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")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user