lovell / lovell/sharp-libvips

Experiment: consider switching from aom to dav1d+rav1e/svt-av1

Open
#97 13 comments 11 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Shell
Stars
212
Forks
132
Avg merge
5h 18m
Merged PRs (30d)
11

Description

The dav1d decoder provides a meson build script and is straightforward to cross-compile.

https://github.com/lovell/sharp-libvips/tree/dav1d

The rav1e encoder does not provide build tooling and relies on cargo cinstall, which is not that simple to get working with cross-compilation. It causes rust symbol conflicts as we also statically-link the rust-based librsvg, so requires the slightly dangerous -Wl,--allow-multiple-definition linker flag.

https://github.com/lovell/sharp-libvips/tree/rav1e

Could consider the C-based svt-av1 as the encoder, perhaps the svt-av1-psy fork that prefers SSIM over PSNR - see https://github.com/lovell/sharp/issues/4276

Also need to determine by how much the shared library binary file size would increase, if any, with separate decoder/encoder.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Compare the dav1d and rav1e branches linked in the issue, starting with their Meson and cargo cinstall build setup and cross-compilation behavior. Evaluate the svt-av1 option, including the referenced svt-av1-psy discussion, and measure how separate decoder and encoder choices affect the shared library binary size. Done means a selected codec approach with working packaging and documented size results.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust, shell
Domain
build-system, devops
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.