There’s a new maintenance release and it updates a few things and fixes some minor issues. Upgrading is recommended. The more interesting news will be in the next post.
It’s that time of the year again. Expect huge slowdowns in development.
R41 changed quite a few things internally and that created regressions. New zimg branch, added alpha support and a pile of changes behind the scenes in the python module caused problems. The release fixes several zimg bugs, a vspipe hang on error, vsscript functions not being threadsafe and a few more things.
Possibly (un)breaking changes:
- get_output() in python only returns a tuple when alpha is set, this more or less restores the previous behavior
This release fixes a VSScript regression when setting variables that would make players like mpv fail in R41. Go upgrade!
Another crash bug managed to sneak into the optimized transpose so one more regression fixed now. (the +.1 update)
This is basically a bugfix release that tries to take care of as many known issues as possible. Especially memory leaks have been hunted down this time and as a result a lot of the cython code was changed to be less likely to create circular references.
The second half of the work was making alpha handling less bad. It’s now possible to pass a second alpha clip to set_output() in scripts and vspipe will output it. Unfortunately y4m can’t be combined with alpha and no other output method currently preserves the alpha but at least some workflows with alpha should be a simpler now.
- IMWRI now requires Q16 or Q32 ImageMagick 7 with HDRI enabled
- The imwri namespace is now always imwri since a single version can handle all formats
- And basically everything else in IMWRI
I’ve mentioned that I hate ImageMagick before. I still hate it but finally took the time to update AND test it for ImageMagick 7. As a result it’s now a mostly usable image source or at least should be. There are only a few remaining quirks which will probably exist for all time. Like being able to figure out if a source file is floating point for any remotely relevant format apart from TIFF. But enough about that, all 8-31 bit images will be assumed to be integer and all 32 bit images will be assumed to be float. Unless it’s in TIFF in which case it will all just magickally work.
The person with the pretentious name created an interesting Avisynth compatibility solution. It allows you to easily pass clips to and from 32 bit Avisynth from 64 bit VapourSynth under Windows. So now there’s no excuse to not switch to VapourSynth, it’s more compatible than 64 bit Avisynth!
R40 has been released. It mostly just fixes small issues like a stupid gamma bug introduced in Levels in the previous version. There’s also a change to how the memory pool is handled on windows which should make it scale better when using high resolutions (like 8k material high) and many threads. Instead of previously being fixed at 100MB it’s set to 10% of the max cache size.
Possibly breaking changes:
- AVISource now doesn’t output alpha by default (however alpha was never well supported or tested to begin with)
- Avisynth compatbility no longer has the special workarounds needed for MVTools to work
That’s all for now. Go encode something…
R39 is finally done after far too long. It has the optimizations and bug fixes and nothing really interesting beyond that. Hopefully I’ll have enough time to start experimenting with bigger changes soon…
- Optimized Sobel, Prewitt and Levels
- Added float support to BoxBlur
- Added swapN and dupN operators to Expr
- AVX-512 support (as in proper memory alignment when AVX-512 is preset, no actual optimizations)
- Fixed a pile of value range clamping issues for 9-15 output in internal filters
- Sobel and Prewitt functions had their min and max arguments removed since they’re just a bad idea inherited from MaskTools.
- Reverted the horrible per plane argument system in Levels to the way it previously worked. Fortunately nobody seemed to even notice this change.
- Now uses Nasm instead of Yasm in the build system.
- CropRel is now simply know as Crop since that’s the crop function most people usually want anyway. CropRel is still kept as an alias for compatibility.
Development has continued and I’ve started posting test builds for R39. You can find it in the doom9 thread as usual. It should be RC quality but there are still a few small additional improvements I want to make before it’s released.