Repository navigation
Version 0.4.0
av-denoise v0.4.0 "Precocious porcupine"
After 7 total alpha releases and over 1000 different iterations, v0.4 is here! This is by far the biggest update in av-denoise so far, and will probably remain that way for ever.
This update makes av-denoise a well balanced toolkit now fitting almost any situation you might have, and it comes with some nice performance benefits to boot.
The headline
NL4D a algorithm that lives in the same family as NLMeans and BM3D with a different approach on how to fix common issues that the non-local family of algorithms suffer from, mainly motion occlusion and noise interfering with the search for patches.
It is built on the learning from NLMeans-HQ and adds a transform layer similar to BM3D. This gives us excellent de-noising qualities while being easier for users to use thanks to the automatic noise estimation and grain synthesis. With great performance to boot!
What else is new
- Official VapourSynth plugin - Available on PyPi, includes pre-compiled wheels for macOS, Linux and Windows.
- 10 & 12 bit colour support - Particularly useful when doing 4K work which is often 10-bit.
- Overhauled documentation - The aim is to make it easy for people to learn what parameters to adjust and when, along with better understanding how the algorithms work and what foot guns to avoid.
- Up to 2x performance - Kernels have been re-worked to minimise host <-> GPU copies allowing us to do more with a given amount of bandwidth, with the NLMeans algorithms seeing over 100 FPS on my RX9700 GPU.
- Pre-built binaries - Now available with releases.
- list-devices subcommand - For viewing what devices the system can see and what accelerators are available to you.
- Motion compensation improvements & collaborative decisions - As part of NL4D's motion kernels.
Fixes
- Fixes FFMS2 producing phantom frames where a decoder would traditionally skip the frame.
- Prevents CubeCL crashing the process when checking if CUDA is available and finding out it is not.
- Prevents users accidentally producing invalid frames after encountering a denoiser error and continuing anyway.
- Stop abort exit on windows at the end of a process due to thread-local destructors.
- Plane rows silently being dropped when a plane would not be returned.
- Tests missing GPU features causing compile time errors.
- Chroma dimension halving axis which does not follow the same behaviour as FFmpeg and y4m frames.
- Mismatch scaling confidence bug where group weights got truncated to zero in the accumulator and produced artefacts.
- This only applies if you were increasing the weight scale past defaults.
- Vulkan and Metal backends incorrectly returning mapped pages back to the pool before being unmapped due to future polling.
try_recv_framenow attempts to be fully async on backends that allow it (Vulkan & Metal)- CubeCL caching behaviour and concurrency safety
- Denoiser error poisoning and state anchoring.
Full Changelog: v0.3.0...v0.4.0