Skip to content

v0.14.0 — every option of the official encoders, byte for byte

Pre-release
Pre-release

Choose a tag to compare

@physics515 physics515 released this 29 Sep 08:28
03a328e

Skidbladnir 0.14.0 is a prerelease of the Tauri app. Copies installed from 0.8.0 onwards will offer it as an update, each to its own edition.

Every option of the official encoders

For a still image, any file the official command-line encoder can write, Skidbladnir can now write too, byte for byte: cwebp for WebP, avifenc (with libaom) for AVIF, cjxl for JPEG XL and heif-enc with Kvazaar for HEIC. Every option those tools have for one image is a control in the window, and each control's help names the flag it sets.

  • WebP gains every remaining cwebp flag: -exact, -z, -qrange, -pre, -jpeg_like, -alpha_method, -noalpha, -blend_alpha, -resize_mode, crop, and fractional quality.

  • AVIF now encodes with libavif and libaom, replacing ravif, so everything avifenc offers is available:

    • bit depths from 8 to 12 and the 16-bit extension
    • 4:4:4, 4:2:2, 4:2:0 and 4:0:0 chroma
    • CICP and range, target size, progressive layers, grids, tiling and scaling
    • quantizers and libaom's own options
    • pixel aspect, clean aperture, rotation and mirroring, content light level
    • ICC, Exif and XMP, each kept, dropped or read from a file
  • JPEG XL exposes every cjxl option, including the modular, progressive, filter, colour-space, metadata and container ones, with effort up to 11.

  • HEIC exposes every heif-enc option Kvazaar can honour:

    • Kvazaar's lossless coding and chroma downsampling
    • the colour-profile presets and custom code points
    • thumbnails, premultiplied alpha, rotation and mirroring
    • tiles, 360° projection, a description, compatible brands and the compact mini format

    The GPL edition's x265 controls sit in the same panel, as heif-enc's -L and -p options.

  • JPEG input is decoded the way each tool decodes it: libjpeg-turbo 3.2.0, with avifenc's and heif-enc's own JPEG readers built in.

  • PNG gamma is corrected as cwebp's libpng corrects it.

  • Metadata follows each tool:

    • WebP keeps it only when asked, as cwebp -metadata does.
    • AVIF, JPEG XL and HEIC keep it by default, as avifenc, cjxl and heif-enc do.
    • Settings saved by 0.12 and 0.13 load into these per-format options.

The evidence

2,861 conversions are compared byte for byte against the real tools on every change, each tool built from the same source as the library the app links:

Output Reference Cases
WebP cwebp 2,254, through PNG, JPEG, TIFF and WebP files, and -metadata
Animated WebP img2webp, gif2webp 67
AVIF avifenc 191
JPEG XL cjxl 202
HEIC heif-enc -e kvazaar 147

Where the claim stops

  • Still images:
    • Animated WebP and GIF convert to animated WebP, as img2webp and gif2webp write them.
    • Animated AVIF, HEIC and JPEG XL, and multi-image files, are not offered yet (ROADMAP Phase 8).
  • Input formats: PNG, JPEG, TIFF, WebP, AVIF, JPEG XL, HEIC and GIF. PNM, Y4M, EXR and the like are not read yet.
  • AVIF: with libaom, avifenc's default codec.
  • HEIC: with Kvazaar in the standard edition, where heif-enc -L cannot work, so lossless is Kvazaar's own. The GPL edition's x265 output is checked by decoding it, not byte for byte.
  • One deliberate exception: cwebp reads a TIFF with straight alpha premultiplied and darkens its semi-transparent pixels. Skidbladnir keeps the colours.

Known gaps

  • Unsigned app: the app is not code-signed, and the macOS build has never been launched by a person.
  • Cancel: an AVIF, JPEG XL or HEIC encode cannot be cancelled mid-file.