R27 – Revising Stuff and Things

There’s some kind of theme to this release but I’m not sure what it is. Maybe I should say it’s all about fixing past mistakes since the majority of GenericFilters got rewritten and integrated into the core. The original code quality was simply too low and there were small bugs and differences littered all over it.

Or maybe it’s about streamlining the API to have fewer odd cases to deal with. The so-called “unknown length” clips have now been deprecated and trying to return one from a filter will trigger an error. All potential uses of it can simply be replaced with one very long clip. No reason to keep unnecessary complexity around.

There’s also been a big effort put into making the frame properties mean something and for them to be used. Now most filters will automatically use the flagged field order when present, the order specified in filter arguments will only be used if no valid order is set. There’s also more color information provided so colorspace converters can automatically pick the right input format. To make this work you’ll need to update to the latest fmtconv and FFMS2 builds. The z library will probably be updated soon too.

Important Compatibility Information

The API version has been increased to 3.2 to show that unknown length clips are no longer available. This means plugins compiled against the new header won’t work with older versions.

The plugin version of GenericFilters will be removed in the next release so start changing all scripts to use the equivalent functions in the std namespace instead.

R26 – Speed!

The focus on this release is mostly speed. By switching to using tcmalloc in windows some scripts get very substantial performance gains, in some extreme cases over 200% speedup but don’t expect it in every clip. Other parts of the code were also steamlined and cleaned up for some additional minor gains.

The other highlight is as usual bugfixes, a pile of small and annoying things have been fixed and there is now full documentation of the API available. Something most open source projects don’t manage to do ever (sprinkling doxygen everywhere doesn’t count unless it’s readable).

Important script writing detail
If you write a python module with functions to be imported into another script DO NOT store the core object in global scope. This will cause odd behavior since the global scope is only evaluated once but a new core is provided every time a script is reloaded. The result is that you will have two or more cores in the same script and most likely crash or get an error.

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.