R25 – Death to Windows XP!

It’s release day again. The download this time will be a bit different though. Once you get to the download page there will be a quick time event and you have to press the reset button really quickly to start the download. So be prepared before you try to download it.

The main new features this time are:

  • Added more missing modes to RGVS and VerticalCleaner
  • Saner loading of plugins with multiple dlls on windows, the directory containing the loaded plugin will now be searched as well
  • Includes pdb files for vapoursynth.dll to help debugging and plugin development
  • The possibility to chain commands together
  • Won’t work on XP anymore

Here’s how you can now combine commands. The clip gets passed as the first unnamed argument to the next command.

core.ffms2.Source('rule6.mkv').std.FlipVertical()[:100].set_output()

R24 – Making VSScript Sane

It’s finally time for another release with big improvements. Mostly because people tried to use VapourSynth and had opinions about it, and as a result the VSScript API has been improved to make more sense and plenty of minor odd things in the Python module have been fixed.

Release highlights:

  • FreezeFrames, DuplicateFrames and DeleteFrames filters added
  • An experimental ImageMagick reader/writer added
  • VSPipe can pass arguments into scripts being evaluated
  • The number of threads to use can be set at any time both from the API and Python
  • The VSScript API has been improved and now behaves more sanely in addition to reporting failure/success for more operations
  • An exceptional number of serious bugs fixed, most of them fortunately rare

Main compatibility issues with previous versions:

  • The Python module no longer adjusts arguments for filters that had them changed in R22. See the R22 release post for more details.
  • VSPipe has a new argument parser and slightly changed argument handling better match command line utilities in general. Short versions of arguments have also been added.

ImageMagick Based Image Writer/Reader Finally Available

After many, many months of procrastination and two weeks of cursing at the ImageMagick API, ABI and horrible design decisions I finished what should be a mostly working source plugin based on it. It can read a list of different images or numbered image sequences, it also allows images with varying dimensions to be loaded in one call. 8-16 bit formats with or without alpha are supported which makes it superior to anything available for Avisynth. Let the image file processing begin!

As usual the download link and special notes for the early test versions can be found in the relevant doom9 thread.

A New Editor

There’s now a useful editor for VapourSynth called VapourSynth Editor. Despite the not very imaginative name it’s already got useful syntax completion and preview functionality and I’ll probably be using it myself when writing scripts in the future. You can also report issues and suggest features to the author in the doom9 thread.

Here are two pictures of the editor in action:

vsedit1vsedit2

R23 – A Typical Maintenance Release

R23 is done. As usual it took a bit longer than expected since people kept finding bugs in the RC builds. There’s really nothing exciting here at all. Only a fix for a pile of crash bugs in filters and documentation errors. Non-windows users may also enjoy some of the improvements to the build system that makes it a bit less finicky.

Summary: everyone should upgrade but must look bored while doing so.

The Yearly Slowdown

As usual project development has slowed down a bit over the winter since I’m busy with work and keep getting colds. However it’s far from dead. This time I not only have a stock of rum, I also have two bottles of reasonably good whiskey for my birthday which will no doubt help to rejuvenate the development process. So this is what’s going to happen:

  1. Sneeze a lot (in progress)
  2. Give up on writing something like mvtools2 from scratch by borrowing from x264 (already done)
  3. Merge fixes for issues discovered in Chikuzen’s filters
  4. Release R23 – A 100% dull maintenance release mostly to fix documentation, tests and some problematic debug printfs on 64 bit windows
  5. Open a bottle of whiskey and celebrate the year of the horse a bit late
  6. Hack away at mvtools2 until a few core functions become portable and usable, then release to the millions of monkeys out there for testing

There may also be some unspecified other things happening, or not. You never know. Unless it already happened, that is…

R22 – The number of bits shall be 64

Have you ever wanted to encode things in 64 bits? Now you can!

The latest release adds support for x64 windows and all native filters have x64 compiles ready as well, however Avisynth x64 plugins can’t be loaded because the moron who originally converted the Avisynth header did it in a sloppy way and forgot to make the memory offsets stored as a ptrdiff_t.

There have also been substantial changes to the core code as all use of the Qt libraries have been removed and replaced with C++11 instead. This reduces the number of dependencies and makes VapourSynth easier to compile. During this process all the locking was reviewed and every relevant function should now be thread-safe. For those of you who want to contribute to the core project there are Visual Studio 2013 projects available in the repository which makes compiling a lot easier.

Those were the major changes, here’s a list of some of the smaller improvements made:

  • Added the MakeDiff and MergeDiff filters (equivalent to masktool’s mt_makediff and mt_adddiff)
  • Arguments passed to functions with the value None are now ignored in Python — this makes it much easier to pass on filter arguments
  • Filter arguments in Python now accept any iterable type and not just lists — go crazy and use expressions such range(3) or (clipa, clipb) as function arguments
  • The usual small tweaks such as improved code examples, fps display in vspipe and rare memory leak fixes

Important Compatibility Information

Lut2, Merge and MaskedMerge now take two clip arguments instead of the original two clip array. For example:

core.std.Merge(clips=[clip1, clip2], 0.5)

Should be changed to:

core.std.Merge(clipa=clip1, clipb=clip2, 0.5)

The python module will automatically rewrite it to the new version for now to keep script compatibility. Script writers who want to test that their script works with only the new behavior can create a new core this way:

vs.get_core(r21_arg_compat=False)

R22 Release Candidates for everyone!

I’ve posted a new release candidates to the usual doom9 thread. This is a major update that adds x64 support to windows, makes almost every single function thread-safe, gets rid of the Qt dependency and moves to C++11.

There’s still a little bit of debugging to do and some third party filters that haven’t gotten x64 compiles yet though so report any issues you find.