AVIF (12/10/8-bit) image support for darktable
As I’m an amateur photographer, I’m using Open Source tools for developing my images. The software I use is called darktable. I think it is the best tool out there for editing RAW images.
From time to time I contributed small code changes to darktable, mostly bug fixes. Now I nearly finished my first feature for darktable, support for the AVIF image format.
For implementing AVIF support I used libavif. Joe Drago the author of libavif was very helpful explaining all the details and helping me in debugging issues. Thank you Joe!
The code need to be polished a bit more and I need to decide what to expose in the export UI or better simplify for the user.
However there are some outstanding things that this will be a great experience for everyone:
Multi threaded encoding of AVIF images using rav1e in libavifStill image support in rav1e- Lossless support in rav1e
- AVIF image support in exiv2
- AVIF image support in Firefox (FYI: Firefox already uses dav1d playing for AV1 videos)
Hallo Andreas, I just try to read and write AVIF using Darktable on Mac OS, but I can’t see any of the .avif photos in my folders. Any advice? Ulrike
You need darktable to be compiled with AVIF support. I’m not sure who builds the darktable for MacOSX, but I would suggest you ask on the pixls.us forums that AVIF support will be added.
Hallo Andres, thank you for your fast answer. I’ll go and ask. Ulrike
Hey Andreas, can you tell us about the reasoning behind the choice of using chroma subsampling for qualities lower than 91 %?
At least according to https://netflixtechblog.com/avif-for-next-generation-image-coding-b1d75675fe4?gi=7c4be26bdf9d apparently it’s better to use yuv444 for a wide range of qualities for avif. I also wonder if chroma subsampling shouldn’t better be exposed in the UI with its own setting. It might not be needed if yuv444 is really superior for practical qualities and is always used though…
In any case, thanks for avif support!
Regards,
Mike
Hey Mike,
normally for photography you want to use a really high quality, and this would be above 90%. So you want YUV444. If you’re going below, you want to have a small image probably for the web to safe loading time, and in this case you want chroma subsampling. I don’t want to overwhelm the user with settings, so I put the logic just into one slider.
darktable already does this for JPG, so I thought it will work here too.
I’m open for suggestions as always. Feel free to open PRs against darktable 🙂