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
|
WriteFlag::NORMAL, // <-- write access needed for EVIOCGRAB
|
||||||
) {
|
) {
|
||||||
Ok(d) => d,
|
Ok(d) => d,
|
||||||
Err(e) => { … }
|
Err(e) => {
|
||||||
|
warn!("❌ open {path}: {e}");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// non-blocking so fetch_events never stalls the whole loop
|
// 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::{Request, Response, Status};
|
||||||
use tonic::transport::Server;
|
use tonic::transport::Server;
|
||||||
use tonic_reflection::server::{Builder as ReflBuilder};
|
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_subscriber::{filter::EnvFilter, fmt, prelude::*};
|
||||||
use tracing_appender::non_blocking::WorkerGuard;
|
use tracing_appender::non_blocking::WorkerGuard;
|
||||||
|
|
||||||
@ -175,7 +175,7 @@ impl Relay for Handler {
|
|||||||
1 => "/dev/lesavka_r_eye",
|
1 => "/dev/lesavka_r_eye",
|
||||||
_ => return Err(Status::invalid_argument("monitor id must be 0 or 1")),
|
_ => 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)
|
let s = video::eye_ball(dev, id, 6_000)
|
||||||
.await
|
.await
|
||||||
.map_err(|e| Status::internal(format!("{e:#}")))?;
|
.map_err(|e| Status::internal(format!("{e:#}")))?;
|
||||||
|
|||||||
@ -44,24 +44,25 @@ pub async fn eye_ball(
|
|||||||
let eye = EYE_ID[id as usize];
|
let eye = EYE_ID[id as usize];
|
||||||
gst::init().context("gst init")?;
|
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!(
|
// let desc = format!(
|
||||||
// "v4l2src device={dev} io-mode=mmap ! \
|
// "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 ! \
|
||||||
// d. ! h264parse config-interval=1 ! queue ! appsink name=vsink emit-signals=true \
|
// video/x-h264,stream-format=byte-stream,alignment=au,profile=high ! tsdemux name=d ! \
|
||||||
// d. ! aacparse ! queue ! appsink name=asink emit-signals=true"
|
// 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)?
|
let pipeline = gst::parse::launch(&desc)?
|
||||||
.downcast::<gst::Pipeline>()
|
.downcast::<gst::Pipeline>()
|
||||||
.expect("pipeline down-cast");
|
.expect("not a pipeline");
|
||||||
|
|
||||||
let sink = pipeline
|
let sink = pipeline
|
||||||
.by_name("sink")
|
.by_name("sink")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user