Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support AVIF #508

Open
GNURub opened this issue Sep 11, 2020 · 18 comments
Open

Support AVIF #508

GNURub opened this issue Sep 11, 2020 · 18 comments

Comments

@GNURub
Copy link

GNURub commented Sep 11, 2020

I'd like to submit a proposal for a future feature to consider.

https://netflixtechblog.com/avif-for-next-generation-image-coding-b1d75675fe4

Format comparison:
https://jakearchibald.com/2020/avif-has-landed/

@kornelski
Copy link
Member

I've written pure-rust encoder:
https://lib.rs/crates/cavif

And a decoder that uses libaom:
https://lib.rs/crates/aom-decode

@lilith
Copy link
Member

lilith commented Sep 11, 2020 via email

@kornelski
Copy link
Member

cavif is pretty lean. I've replaced libavif with basically one big struct. It's 100% pure Rust. Includes rav1e. Executable is 1.7MB, gzips to 500KB.

aom-decode is fatter — 7MB — since it pulls in all of libaom. I haven't looked at trimming it down. Maybe dav1d would be smaller, but it needs meson and ninja to build, and I'm not a fan.

@lilith
Copy link
Member

lilith commented Sep 12, 2020 via email

@kornelski
Copy link
Member

I get that decoding brings in large dependencies, but you could support encoding only. Encoding can be done in pure Rust and rav1e is pretty lean. I've released my encoder as a library: https://docs.rs/ravif

@lilith
Copy link
Member

lilith commented Sep 14, 2020 via email

@iJungleboy
Copy link

Any progress on this? I would be very interested since AVIF support is at around 70% https://caniuse.com/avif and I believe it's really good.

@lilith
Copy link
Member

lilith commented Jan 6, 2022 via email

@iJungleboy
Copy link

No problem - and thanks for your more-than-amazing work!

@stevetayloruk
Copy link

Support for this would be great with Safari soon to be supporting. https://www.coywolf.news/webmaster/safari-now-supports-avif-in-macos-ventura-and-ios-16/

@zz
Copy link

zz commented Nov 24, 2022

@lilith AVIF support now?

@lilith
Copy link
Member

lilith commented Nov 24, 2022 via email

@swiftMessenger
Copy link

AVIF support is around 93% now, and I've seen some adoption by the public as well. Is there an estimated timeline for when ImageFlow will support it? Also there was some (old) discussion about supporting an encoder but not a decoder. Is that still under consideration? The decoder is as important to me as the encoder.

@lilith
Copy link
Member

lilith commented Aug 22, 2024 via email

@kornelski
Copy link
Member

kornelski commented Aug 23, 2024

Proper caching is definitely required to compress AVIF properly. However, if you'd like something implementable sooner, then ravif/rav1e at the fastest encoding setting takes only about as long as encoding WebP, and is still a bit better than WebP.

@iJungleboy
Copy link

aarch64

@tvatavuk this may be interesting for you as you were experimenting with ARM/Windows...

@lilith
Copy link
Member

lilith commented Aug 30, 2024 via email

@tvatavuk
Copy link

Thanks @lilith (and @iJungleboy) for making it possible to use Imageflow on Windows 11 ARM64. 😊

I did a small proof of concept and manually built imageflow.dll on Windows 11 ARM64. Thanks to the great assets in your Imageflow git repo and some help for a Rust newbie from Microsoft Copilot AI on Windows Copilot+PC, 2sxc is now showing images processed by Imageflow in Oqtane also on Windows 11 ARM64 in IIS and IIS Express at least in my dev env. 🎉

Still, this is a build of the latest development version of imageflow.dll and is probably newer than the one used in 2sxc (I'm not sure about vertical compatibility). 🤔

This is a great step forward! 🚀

20240830_173544

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants