No description
Find a file
peppidesu 26a827ba14
feat: jpg buffer (#13)
Added a buffer to the FlutGrid to store encoded jpeg data of the canvas. This buffer is stored behind a RwLock to allow for arbitrary concurrent read operations.

save_image_frames has also been rewritten to make use of this buffer rather than encoding the jpeg on the fly.

An update thread has been added to regularly (currently every 20 ms) update the contents of the buffer.
2024-10-19 16:09:58 +02:00
.github/workflows remove clippy pedantic 2024-10-19 15:09:15 +02:00
.vscode initial commit 2024-07-11 19:05:37 +02:00
src missing import + ci fixes 2024-10-19 16:02:55 +02:00
.envrc feat: true async 2024-07-12 15:59:27 +02:00
.gitignore add result to gitignore 2024-10-18 16:49:58 +02:00
Cargo.lock Revert "added webapi sketch" 2024-10-19 15:37:51 +02:00
Cargo.toml Revert "added webapi sketch" 2024-10-19 15:37:51 +02:00
config.toml refactor: split grid into mod 2024-07-25 16:45:15 +02:00
flake.lock flake.lock: Update 2024-10-18 16:49:38 +02:00
flake.nix use nightly in devShell 2024-10-19 14:06:29 +02:00
protocol.md initial commit 2024-07-11 19:05:37 +02:00
README.md feat: swap from u16_le to u16 2024-10-10 09:37:43 +02:00

Flurry is a pixelflut compatible server written in rust with a focus on minimizing latency while keeping high performance.

Protocols

Multiple protocols are supported:

  • Text: The default protocol, it is compliant with pixelflut but it defines some extra commands
    • CANVAS <id>: used to change to a completely seperate canvas, the amount and size is defined by the host
    • PROTOCOL <protocol name>: used to change to different protocols, the useable names are:
      • text: goes to the Text protocol
      • binary: goes to the Binary protocol
  • Binary: A binary analog to the text version, about twice as efficient with bandwidth, the commands are
    • size: 0x73 <u8 canvas> -> <u16 x> <u16 y>
    • help: 0x68 -> help message (in UTF-8)
    • get pixel: 0x20 <u8 canvas> <u16 x> <u16 y> -> <u8 red> <u8 green> <u8 blue>
    • set pixel rgb: 0x80 <u8 canvas> <u16 x> <u16 y> <u8 red> <u8 green> <u8 blue>
    • blend pixel rgba: 0x81 <u8 canvas> <u16 x> <u16 y> <u8 red> <u8 green> <u8 blue> <u8 blend>
    • set pixel grayscale: 0x82 <u8 canvas> <u16 x> <u16 y> <u8 white>