Skip to content

LIZARD 0.2 (alpha)

Pre-release
Pre-release

Choose a tag to compare

@FNWTalon FNWTalon released this 10 Oct 18:54

The second alpha of the Android app. It receives a file shown as a LIZARD code on another screen, and sends one the
same way. It decodes on the GPU through Vulkan where the phone runs it, else on the CPU.

  • Android 10 or later, arm64.
  • Install: download lizard-0.2-alpha.apk and open it; Android asks to allow installs from that source. It is signed
    with the same development key as 0.1, so it installs over it.
  • It does not read 0.1's codes: the format changed (below). Send from fosslabs.dev, which
    serves this release's sender, or from the desktop sender built from this commit.
  • Measured on one phone (Samsung S26 Ultra), two codes side by side from the desktop sender at 60 pictures a second on a
    1080p monitor: 3.8 MB/s median and 4.0 max over 13 minutes. The README says what bounds that.
  • Built from 5033648. The third-party licenses it carries are in LICENSES.txt.

Since 0.1:

  • The code rate follows the frequency: four LDPC codes, from 7/8 on the inner sub-channels to 1/2 on the outer, with
    optimised tables.
  • A fourth ring size, 256 band cells a side, for a camera held still close to the screen. The 128 stays the default.
  • Files are compressed with zstd, a 4 MiB chunk at a time, where that makes them smaller.
  • A file's header and manifest are spread over the frame, so a large file no longer stalls when one part of the code
    reads badly.
  • The camera's phase is held to the display's by pilots in every picture, always on.
  • The camera's image enhancements (edge enhancement, hot pixel correction and the like) are off where the lens allows.
  • The GPU decoder no longer waits to fill a batch.
  • Sending paints ahead on the GPU and presents on a fixed schedule, every picture one refresh.
  • A received file shows its time and speed; deleting it makes the receiver forget it whole.
  • Camera settings are kept per lens.

An alpha: the format still changes, and a sender and a receiver need the same release.