diff options
| author | dyknon dyknonr5fjp | 2025-02-28 01:26:55 +0900 |
|---|---|---|
| committer | dyknon dyknonr5fjp | 2025-02-28 01:26:55 +0900 |
| commit | 55cae3e208dcc5579470f90d16a49ad7331b6b23 (patch) | |
| tree | e780061c0a7040782c4ba920219fad91e4acc9a9 /src/bin/sshcamera.rs | |
| parent | cdbcbd22d7508df4bbaf9a95ac0ea8ebeea5ef87 (diff) | |
make less delay (but not works correctly)
Diffstat (limited to 'src/bin/sshcamera.rs')
| -rw-r--r-- | src/bin/sshcamera.rs | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/src/bin/sshcamera.rs b/src/bin/sshcamera.rs index 270700a..1add8cd 100644 --- a/src/bin/sshcamera.rs +++ b/src/bin/sshcamera.rs @@ -2,11 +2,12 @@ use anyhow::{anyhow, Result}; use sshcamera::v4l2::{Device as V4l2, Field}; use sshcamera::v4l2cairo::V4l2Cairo; use sshcamera::gtk; -use sshcamera::v4l2abst::{CaptStream, RemoteCam}; +use sshcamera::v4l2abst::RemoteCam; use sshcamera::io::RWBundle; +use sshcamera::source; use gtk4::glib::ExitCode; use std::env; -use std::io::{self, Read as _, Write as _}; +use std::io; use std::process::{Command, Stdio}; fn main() -> Result<ExitCode>{ @@ -21,7 +22,7 @@ fn main() -> Result<ExitCode>{ let v = V4l2::open(arg1)?; // TODO: It should be better. - let mut c = v.captstream_builder()? + let c = v.captstream_builder()? .set_pixelformat("MJPG".into()) //.set_pixelformat("YUYV".into()) .set_field(Field::None) @@ -29,19 +30,8 @@ fn main() -> Result<ExitCode>{ assert!(["YUYV", "MJPG"].contains(&c.pixelformat().as_str())); assert!(c.field() == Field::None); - let mut io = RWBundle(io::stdin(), io::stdout()); - loop{ - CaptStream::next(&mut c, |frame|{ - frame.serialize(&mut io)?; - io.flush()?; - let mut rb = [0]; - io.read_exact(&mut rb)?; - if rb[0] != 0x2e{ - return Err(anyhow!("protocol error")); - } - Ok(()) - })??; - } + let io = RWBundle(io::stdin(), io::stdout()); + source::main(c, io).and(Ok(ExitCode::SUCCESS)) }else{ let child = Command::new(arg1) .args(args) |
