Repository navigation
LIZARD 0.2 (alpha)
Pre-release
Pre-release
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.apkand 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 inLICENSES.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.