Compare commits

..

1 commit

Author SHA1 Message Date
Vinzenz Schroeter 63a2fd00b9 update to the (unreleased) version of servicepoint
All checks were successful
Rust / build (pull_request) Successful in 8m2s
2025-05-01 20:42:15 +02:00
10 changed files with 99 additions and 320 deletions

241
Cargo.lock generated
View file

@ -204,15 +204,6 @@ version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
[[package]]
name = "block-buffer"
version = "0.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
dependencies = [
"generic-array",
]
[[package]]
name = "built"
version = "0.7.7"
@ -243,12 +234,6 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"
[[package]]
name = "bytes"
version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9"
[[package]]
name = "cc"
version = "1.2.16"
@ -455,15 +440,6 @@ dependencies = [
"libc",
]
[[package]]
name = "cpufeatures"
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
dependencies = [
"libc",
]
[[package]]
name = "crc32fast"
version = "1.4.2"
@ -504,16 +480,6 @@ version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929"
[[package]]
name = "crypto-common"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
dependencies = [
"generic-array",
"typenum",
]
[[package]]
name = "ctrlc"
version = "3.4.5"
@ -524,12 +490,6 @@ dependencies = [
"windows-sys",
]
[[package]]
name = "data-encoding"
version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "575f75dfd25738df5b91b8e43e14d44bda14637a58fae779fd2b064f8bf3e010"
[[package]]
name = "dbus"
version = "0.9.7"
@ -541,16 +501,6 @@ dependencies = [
"winapi",
]
[[package]]
name = "digest"
version = "0.10.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
dependencies = [
"block-buffer",
"crypto-common",
]
[[package]]
name = "dispatch"
version = "0.2.0"
@ -649,12 +599,6 @@ dependencies = [
"miniz_oxide",
]
[[package]]
name = "fnv"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "foreign-types"
version = "0.5.0"
@ -777,16 +721,6 @@ dependencies = [
"slab",
]
[[package]]
name = "generic-array"
version = "0.14.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
dependencies = [
"typenum",
"version_check",
]
[[package]]
name = "getrandom"
version = "0.2.15"
@ -795,19 +729,7 @@ checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
dependencies = [
"cfg-if",
"libc",
"wasi 0.11.0+wasi-snapshot-preview1",
]
[[package]]
name = "getrandom"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8"
dependencies = [
"cfg-if",
"libc",
"wasi 0.13.3+wasi-0.2.2",
"windows-targets",
"wasi",
]
[[package]]
@ -848,23 +770,6 @@ version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
name = "http"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea"
dependencies = [
"bytes",
"fnv",
"itoa",
]
[[package]]
name = "httparse"
version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a"
[[package]]
name = "humantime"
version = "2.1.0"
@ -946,12 +851,6 @@ dependencies = [
"either",
]
[[package]]
name = "itoa"
version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
[[package]]
name = "jobserver"
version = "0.1.32"
@ -1363,7 +1262,7 @@ version = "0.2.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
dependencies = [
"zerocopy 0.7.35",
"zerocopy",
]
[[package]]
@ -1431,19 +1330,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
"rand_chacha 0.3.1",
"rand_core 0.6.4",
]
[[package]]
name = "rand"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94"
dependencies = [
"rand_chacha 0.9.0",
"rand_core 0.9.2",
"zerocopy 0.8.21",
"rand_chacha",
"rand_core",
]
[[package]]
@ -1453,17 +1341,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
"rand_core 0.6.4",
]
[[package]]
name = "rand_chacha"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
dependencies = [
"ppv-lite86",
"rand_core 0.9.2",
"rand_core",
]
[[package]]
@ -1472,17 +1350,7 @@ version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
"getrandom 0.2.15",
]
[[package]]
name = "rand_core"
version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a509b1a2ffbe92afab0e55c8fd99dea1c280e8171bd2d88682bb20bc41cbc2c"
dependencies = [
"getrandom 0.3.1",
"zerocopy 0.8.21",
"getrandom",
]
[[package]]
@ -1511,8 +1379,8 @@ dependencies = [
"once_cell",
"paste",
"profiling",
"rand 0.8.5",
"rand_chacha 0.3.1",
"rand",
"rand_chacha",
"simd_helpers",
"system-deps",
"thiserror 1.0.69",
@ -1632,7 +1500,7 @@ dependencies = [
"dbus",
"objc",
"pipewire",
"rand 0.8.5",
"rand",
"screencapturekit",
"screencapturekit-sys",
"sysinfo",
@ -1701,15 +1569,14 @@ dependencies = [
[[package]]
name = "servicepoint"
version = "0.13.2"
source = "git+https://git.berlin.ccc.de/servicepoint/servicepoint/?branch=next#300bb5d6474f0f6152ab04feed4478995fcb3ec8"
version = "0.14.0"
source = "git+https://git.berlin.ccc.de/servicepoint/servicepoint/?branch=next#8ddbaeaaa64a4abb8ffb8b08a3a84cc1135e312f"
dependencies = [
"bitvec",
"log",
"once_cell",
"rust-lzma",
"thiserror 2.0.11",
"tungstenite",
]
[[package]]
@ -1725,17 +1592,6 @@ dependencies = [
"servicepoint",
]
[[package]]
name = "sha1"
version = "0.10.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
dependencies = [
"cfg-if",
"cpufeatures",
"digest",
]
[[package]]
name = "shlex"
version = "1.3.0"
@ -1926,29 +1782,6 @@ dependencies = [
"winnow",
]
[[package]]
name = "tungstenite"
version = "0.26.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4793cb5e56680ecbb1d843515b23b6de9a75eb04b66643e256a396d43be33c13"
dependencies = [
"bytes",
"data-encoding",
"http",
"httparse",
"log",
"rand 0.9.0",
"sha1",
"thiserror 2.0.11",
"utf-8",
]
[[package]]
name = "typenum"
version = "1.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
[[package]]
name = "unicode-ident"
version = "1.0.17"
@ -1967,12 +1800,6 @@ version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
[[package]]
name = "utf-8"
version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
[[package]]
name = "utf8parse"
version = "0.2.2"
@ -2002,27 +1829,12 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b"
[[package]]
name = "version_check"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "wasi"
version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasi"
version = "0.13.3+wasi-0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2"
dependencies = [
"wit-bindgen-rt",
]
[[package]]
name = "wasm-bindgen"
version = "0.2.100"
@ -2288,15 +2100,6 @@ dependencies = [
"memchr",
]
[[package]]
name = "wit-bindgen-rt"
version = "0.33.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c"
dependencies = [
"bitflags 2.8.0",
]
[[package]]
name = "wyz"
version = "0.5.1"
@ -2322,16 +2125,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
dependencies = [
"byteorder",
"zerocopy-derive 0.7.35",
]
[[package]]
name = "zerocopy"
version = "0.8.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dcf01143b2dd5d134f11f545cf9f1431b13b749695cb33bcce051e7568f99478"
dependencies = [
"zerocopy-derive 0.8.21",
"zerocopy-derive",
]
[[package]]
@ -2345,17 +2139,6 @@ dependencies = [
"syn",
]
[[package]]
name = "zerocopy-derive"
version = "0.8.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712c8386f4f4299382c9abee219bee7084f78fb939d88b6840fcc1320d5f6da2"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "zune-core"
version = "0.4.12"

View file

@ -13,10 +13,20 @@ homepage = "https://crates.io/crates/servicepoint-cli"
keywords = ["cccb", "cccb-servicepoint", "cli"]
[dependencies]
servicepoint = {features = ["protocol_websocket"] , git = "https://git.berlin.ccc.de/servicepoint/servicepoint/", branch = "next"}
clap = { version = "4.5", features = ["derive"] }
env_logger = "0.11"
log = "0.4"
scap = "0.0.8"
image = "0.25.5"
fast_image_resize = { version = "5.1.2", features = ["image"] }
[dependencies.servicepoint]
package = "servicepoint"
version = "0.14.0"
git = "https://git.berlin.ccc.de/servicepoint/servicepoint/"
branch = "next"
[profile.release]
lto = true # Enable link-time optimization
codegen-units = 1 # Reduce number of codegen units to increase optimizations
strip = true # Strip symbols from binary

View file

@ -1,8 +1,9 @@
use std::net::UdpSocket;
use crate::cli::BrightnessCommand;
use log::info;
use servicepoint::{Brightness, Connection};
use servicepoint::{Brightness, GlobalBrightnessCommand, SendCommandExt};
pub(crate) fn brightness(connection: &impl Connection, brightness_command: BrightnessCommand) {
pub(crate) fn brightness(connection: &UdpSocket, brightness_command: BrightnessCommand) {
match brightness_command {
BrightnessCommand::Max => brightness_set(connection, Brightness::MAX),
BrightnessCommand::Min => brightness_set(connection, Brightness::MIN),
@ -12,9 +13,9 @@ pub(crate) fn brightness(connection: &impl Connection, brightness_command: Brigh
}
}
pub(crate) fn brightness_set(connection: &impl Connection, brightness: Brightness) {
pub(crate) fn brightness_set(connection: &UdpSocket, brightness: Brightness) {
connection
.send(servicepoint::BrightnessCommand::from(brightness))
.send_command(GlobalBrightnessCommand::from(brightness))
.expect("Failed to set brightness");
info!("set brightness to {brightness:?}");
}

View file

@ -12,14 +12,14 @@ pub struct Cli {
default_value = "127.0.0.1:2342"
)]
pub destination: String,
#[arg(
short,
long,
help = "protocol to use for communication with display",
value_enum,
default_value = "udp"
)]
pub transport: Protocol,
//#[arg(
// short,
// long,
// help = "protocol to use for communication with display",
// value_enum,
// default_value = "udp"
//)]
//pub transport: Protocol,
#[clap(subcommand)]
pub command: Mode,
#[clap(short, long, help = "verbose logging")]
@ -103,12 +103,12 @@ pub enum BrightnessCommand {
Min,
}
#[derive(clap::ValueEnum, Clone, Debug)]
pub enum Protocol {
Udp,
WebSocket,
Fake,
}
//#[derive(clap::ValueEnum, Clone, Debug)]
//pub enum Protocol {
// Udp,
// WebSocket,
// Fake,
//}
#[derive(clap::Parser, std::fmt::Debug)]
#[clap(about = "Commands for sending text to the screen")]

View file

@ -1,7 +1,7 @@
//! Based on https://github.com/WarkerAnhaltRanger/CCCB_Ledwand
use image::GrayImage;
use servicepoint::{BitVec, Bitmap, PIXEL_HEIGHT};
use servicepoint::{BitVecU8Msb0, Bitmap, PIXEL_HEIGHT};
type GrayHistogram = [usize; 256];
@ -169,7 +169,7 @@ pub(crate) fn ostromoukhov_dither(source: GrayImage, bias: u8) -> Bitmap {
assert_eq!(width % 8, 0);
let mut source = source.into_raw();
let mut destination = BitVec::repeat(false, source.len());
let mut destination = BitVecU8Msb0::repeat(false, source.len());
for y in 0..height as usize {
let start = y * width as usize;
@ -206,7 +206,7 @@ pub(crate) fn ostromoukhov_dither(source: GrayImage, bias: u8) -> Bitmap {
#[inline]
fn ostromoukhov_dither_pixel(
source: &mut [u8],
destination: &mut BitVec,
destination: &mut BitVecU8Msb0,
position: usize,
width: usize,
last_row: bool,

View file

@ -1,12 +1,13 @@
use std::net::UdpSocket;
use crate::{
brightness::{brightness, brightness_set},
cli::{Cli, Mode, Protocol},
cli::{Cli, Mode},
pixels::{pixels, pixels_off},
text::text
};
use clap::Parser;
use log::debug;
use servicepoint::{Brightness, Connection, FakeConnection, UdpConnection, WebsocketConnection};
use servicepoint::{Brightness, UdpSocketExt};
mod brightness;
mod cli;
@ -22,23 +23,14 @@ fn main() {
init_logging(cli.verbose);
debug!("running with arguments: {:?}", cli);
match cli.transport {
Protocol::Udp => {
let connection = UdpConnection::open(cli.destination).expect("Failed to open UDP connection");
execute_mode(cli.command, connection);},
Protocol::WebSocket => {
let url = cli.destination.parse().expect(
"provided destination is not a valid url - make sure it starts with 'ws://'",
);
let connection = WebsocketConnection::open(url).expect("Failed to open WebSocket connection");
execute_mode(cli.command, connection);
}
Protocol::Fake => execute_mode(cli.command, FakeConnection),
}
let connection = UdpSocket::bind_connect(cli.destination)
.expect("Failed to connect");
debug!("connection established: {:#?}", connection);
execute_mode(cli.command, connection);
}
pub fn execute_mode(mode: Mode, connection: impl Connection) {
pub fn execute_mode(mode: Mode, connection: UdpSocket) {
match mode {
Mode::ResetEverything => {
brightness_set(&connection, Brightness::MAX);

View file

@ -1,15 +1,13 @@
use std::net::UdpSocket;
use crate::{
cli::{ImageProcessingOptions, PixelCommand, SendImageOptions},
image_processing::ImageProcessingPipeline,
stream_window::stream_window,
cli::{ImageProcessingOptions, PixelCommand, SendImageOptions},
stream_window::stream_window
};
use log::info;
use servicepoint::{
BinaryOperation, BitVec, BitVecCommand, BitmapCommand, ClearCommand, CompressionCode,
Connection, Origin, PIXEL_COUNT,
};
use servicepoint::{BinaryOperation, BitVecCommand, BitVecU8Msb0, BitmapCommand, ClearCommand, CompressionCode, Origin, SendCommandExt, PIXEL_COUNT};
pub(crate) fn pixels(connection: &impl Connection, pixel_command: PixelCommand) {
pub(crate) fn pixels(connection: &UdpSocket, pixel_command: PixelCommand) {
match pixel_command {
PixelCommand::Off => pixels_off(connection),
PixelCommand::Flip => pixels_invert(connection),
@ -25,37 +23,33 @@ pub(crate) fn pixels(connection: &impl Connection, pixel_command: PixelCommand)
}
}
fn pixels_on(connection: &impl Connection) {
let command = BitVecCommand {
offset: 0,
bitvec: BitVec::repeat(true, PIXEL_COUNT),
compression: CompressionCode::Lzma,
operation: BinaryOperation::Or,
};
connection.send(command).expect("could not send command");
fn pixels_on(connection: &UdpSocket) {
let mask = BitVecU8Msb0::repeat(true, PIXEL_COUNT);
let command = BitVecCommand{offset: 0, bitvec: mask, compression: CompressionCode::Lzma, operation: BinaryOperation::Overwrite};
connection
.send_command(command)
.expect("could not send command");
info!("turned on all pixels")
}
fn pixels_invert(connection: &impl Connection) {
let command = BitVecCommand {
offset: 0,
bitvec: BitVec::repeat(true, PIXEL_COUNT),
compression: CompressionCode::Lzma,
operation: BinaryOperation::Xor,
};
connection.send(command).expect("could not send command");
fn pixels_invert(connection: &UdpSocket) {
let mask = BitVecU8Msb0::repeat(true, PIXEL_COUNT);
let command = BitVecCommand{offset: 0, bitvec: mask, compression: CompressionCode::Lzma, operation: BinaryOperation::Xor};
connection
.send_command(command)
.expect("could not send command");
info!("inverted all pixels");
}
pub(crate) fn pixels_off(connection: &impl Connection) {
pub(crate) fn pixels_off(connection: &UdpSocket) {
connection
.send(ClearCommand)
.send_command(ClearCommand)
.expect("failed to clear pixels");
info!("reset pixels");
}
fn pixels_image(
connection: &impl Connection,
connection: &UdpSocket,
options: SendImageOptions,
processing_options: ImageProcessingOptions,
) {
@ -63,7 +57,7 @@ fn pixels_image(
let mut pipeline = ImageProcessingPipeline::new(processing_options);
let bitmap = pipeline.process(image);
connection
.send(BitmapCommand {
.send_command(BitmapCommand {
origin: Origin::ZERO,
bitmap,
compression: CompressionCode::default(),

View file

@ -1,8 +1,9 @@
use std::net::UdpSocket;
use log::warn;
use servicepoint::*;
use std::thread::sleep;
pub(crate) fn stream_stdin(connection: &impl Connection, slow: bool) {
pub(crate) fn stream_stdin(connection: &UdpSocket, slow: bool) {
warn!("This mode will break when using multi-byte characters and does not support ANSI escape sequences yet.");
let mut app = App {
connection,
@ -13,17 +14,17 @@ pub(crate) fn stream_stdin(connection: &impl Connection, slow: bool) {
app.run()
}
struct App<'t, TConnection: Connection> {
connection: &'t TConnection,
struct App<'t> {
connection: &'t UdpSocket,
mirror: CharGrid,
y: usize,
slow: bool,
}
impl<TConnection: Connection> App<'_, TConnection> {
impl App<'_> {
fn run(&mut self) {
self.connection
.send(ClearCommand)
.send_command(ClearCommand)
.expect("couldn't clear screen");
let last_y = self.mirror.height() - 1;
for line in std::io::stdin().lines() {
@ -62,12 +63,11 @@ impl<TConnection: Connection> App<'_, TConnection> {
}
fn send_mirror(&self) {
let command = CharGridCommand {
origin: Origin::ZERO,
grid: self.mirror.clone(),
};
self.connection
.send(command)
.send_command(CharGridCommand {
origin: Origin::ZERO,
grid: self.mirror.clone(),
})
.expect("couldn't send screen to display");
}
@ -76,12 +76,11 @@ impl<TConnection: Connection> App<'_, TConnection> {
line_grid.fill(' ');
Self::line_onto_grid(&mut line_grid, 0, line);
Self::line_onto_grid(&mut self.mirror, self.y, line);
let command = CharGridCommand {
origin: Origin::new(0, self.y),
grid: line_grid,
};
self.connection
.send(command)
.send_command(CharGridCommand {
origin: Origin::new(0, self.y),
grid: line_grid
})
.expect("couldn't send single line to screen");
}
}

View file

@ -1,3 +1,4 @@
use std::net::UdpSocket;
use crate::{
cli::{ImageProcessingOptions, StreamScreenOptions},
image_processing::ImageProcessingPipeline,
@ -9,11 +10,11 @@ use scap::{
frame::convert_bgra_to_rgb,
frame::Frame,
};
use servicepoint::{BitmapCommand, CompressionCode, Connection, Origin, FRAME_PACING};
use servicepoint::{BitmapCommand, CompressionCode, Origin, SendCommandExt, FRAME_PACING};
use std::time::{Duration, Instant};
pub fn stream_window(
connection: &impl Connection,
connection: &UdpSocket,
options: StreamScreenOptions,
processing_options: ImageProcessingOptions,
) {
@ -35,13 +36,12 @@ pub fn stream_window(
trace!("bitmap ready to send in: {:?}", start.elapsed());
let command = BitmapCommand {
compression: CompressionCode::default(),
bitmap: bitmap.clone(),
origin: Origin::ZERO,
};
connection
.send(command)
.send_command(BitmapCommand {
origin: Origin::ZERO,
bitmap: bitmap.clone(),
compression: CompressionCode::default(),
})
.expect("failed to send frame to display");
debug!("frame time: {:?}", start.elapsed());

View file

@ -1,7 +1,7 @@
use servicepoint::Connection;
use std::net::UdpSocket;
use crate::cli::TextCommand;
use crate::stream_stdin::stream_stdin;
pub fn text(connection: &impl Connection, command: TextCommand) {
pub fn text(connection: &UdpSocket, command: TextCommand) {
match command { TextCommand::Stdin { slow } => stream_stdin(connection, slow), }
}