Repository navigation
PJA 0.0.8
The pja command takes Photoshop's progressive JPEGs, and uses every processor on Linux and macOS.
- Photoshop ends the EOB runs of a progressive JPEG's refinement scans at
about 256 correction bits, where libjpeg ends them at 937. The
coefficients are the same; only where the runs end differs, so these
files did not come back byte for byte and pja refused them. The decoder
now finds the smallest limit that rebuilds each scan, and stream version
6 keeps it (the CORRECTION flag, next to the DRI quirk). The one such
file found in the corpus: 77.45% (as bytes) before, 61.46% now. Every
other file's stream is 0.0.7's, byte for byte (doc/CODEC.md). - FreePascal 3.2.2 counts one processor on every Unix, so the command's
default (every processor, up to 8) was one thread on Linux and macOS
unless-thwas given. It now counts them: on Linux those of the
process's affinity mask (whattasksetor a container leaves it), on
macOS through sysconf. Windows was right already. - The zpaq-std plugin: its streams, its ZPAQL and what each codec takes
are 0.0.6's. Photoshop's files still go through none of its codecs
(stream version 5 has no room for the limit); nothing to do for
zpaq-std.
Downloads
| platform | the pja command |
the zpaq-std plugin |
|---|---|---|
| Linux x86-64 | pja-0.0.8-linux-x86_64.tar.gz |
pja-0.0.8-zpaqstd-plugin-linux-x86_64.tar.gz (pja.so) |
| Linux x86 (32-bit) | pja-0.0.8-linux-x86.tar.gz |
pja-0.0.8-zpaqstd-plugin-linux-x86.tar.gz (pja.so) |
| Linux arm64 | pja-0.0.8-linux-arm64.tar.gz |
pja-0.0.8-zpaqstd-plugin-linux-arm64.tar.gz (pja.so) |
| macOS arm64 | pja-0.0.8-macos-arm64.tar.gz |
pja-0.0.8-zpaqstd-plugin-macos-arm64.tar.gz (pja.dylib) |
| Windows x64 (7 and later) | pja-0.0.8-windows-x64.zip |
pja-0.0.8-zpaqstd-plugin-windows-x64.zip (pja.dll) |
| Windows x86 (XP and later) | pja-0.0.8-windows-x86.zip |
pja-0.0.8-zpaqstd-plugin-windows-x86.zip (pja.dll) |
pja-0.0.8-zpaqstd.tar.gz has the plugin's sources as zpaq-std vendors them, with VENDOR.md. The command's archives carry pja (or pja.exe), the README, the license, NOTICE and the command's manual (CLI.md). Every binary is built and checked by CI on its own platform (.github/workflows/release.yml); SHA256SUMS has the checksums. The Linux builds need glibc 2.34 or later; the macOS ones are not signed (xattr -d com.apple.quarantine pja after unpacking).
Also checked before publishing, with these very binaries: Windows 10, 64-bit and 32-bit, the same streams as Linux for every sample of the repository and every file back (28 of 28 checks each, wildcards included); Windows XP SP3, 32-bit, every sample back byte for byte through wildcards from cmd; the 32-bit plugin on Windows 10 and XP and the 64-bit one on Windows 10, every sample through a codec back (36 of 38; the other two, as designed, through none).