Changelogs » Vapoursynth

PyUp Safety actively tracks 232,000 Python packages for vulnerabilities and notifies you when to upgrade.

Vapoursynth

2.8

updated visual studio runtimes in installer
  avfs now uses utf8 filename support when available in avs+
  avfs now prints the used mount point
  windows binaries now use python 3.7
  removed accept_lowecase setting from the python bindings
  fixed frame duration calculation in clipinfo (dubhater)
  fixed bug that prevented adding vertical margins in subtext (dubhater)
  documentation updates
  
  r44:
  fixed crop with compatbgr32 format where top and bottom crop would be switched
  fixed crash in scdetect with one frame clips, now it simply returns an error since the operation is pointless
  fixed potential multithreading issues in vsscript (stuxcrystal)
  the resizer will now properly apply a shift even if no actual resizing/format conversion is being done
  updated to zimg v2.7.4 to fix crash that only happens on core2 quad cpus
  updated visual studio runtimes in installer
  updated pismo runtime
  added experimental large page support and changed cache logic (sekrit-twc)
  minor documentation updates
  
  r43:

2.7.3

all vsscript functions are now internally guarded by a mutex to make them threadsafe
  changed boxblur defaults to hradius and vradius=1, this makes more sense than having it throw an error with default arguments
  added xyz as an alias for st428 in resize
  add vsscript_getvsapi2 function which takes the required vapoursynth api version into account
  a tuple is now only returned from get_output in python when alpha actually exist, this undoes the python syntax change in r41
  fixed a possible hang on error in vspipe, regression introduced with the alpha support in r41
  
  r42.1
  fixed a crash in the optimized transpose for certain resolutions, regression introduced in r42
  
  r42:

2.7.1

vapoursynth.dll is now simply symlinked into the python directory, makes it less confusing to replace the dll since there's only one real copy
  fixed regression introduced in r41 that would make setting a node using vsscript_setvariable silently fail
  resize no longer pointlessly copies frames when no processing is needed (that dude)
  optimized transpose filter even more (that dude)
  
  r41:

2.7

fixed boxblur needlessly touching planes that aren't processed
  fixed a bug that would make avisource crash when opening an avisynth script with errors in it
  added an altsearchpath argument to loadplugin, setting it to true alters the search path for dll dependencies to be equivalent to the normal loadlibrary path, experimental and may be removed at any time
  added convenient alpha output to vspipe and vsscript, set_output() in python now takes a second optional alpha clip which will be used for this
  fixed avisource leaking one frame reference on destruction
  updated plugin list to be more consistent with links to source/binaries and doom9 discussion thread
  fixed lut triggering a fatal error when the bits argument is used
  fixed regression that prevented alpha output from working in avisource
  removed dependency on the now deprecated codecvt header
  fixed memory leak where modifyframe wouldn't release the function reference when done
  fixed a rare memory leak that could happen if the core was freed before the last frame
  fixed a memory leak that would happen if a python videoframe object was instantiated
  added overwrite argument to imwri to control if already existing files are overwritten or not
  imwri will no longer write alpha to images unless an alpha clip is specified
  improved imwri's input and output format guessing, now integer and float image formats will most likely be returned in native precision
  imwri now requires hdri support since it's enabled by default in version 7, as a result of there only being one major configuration the namespace is now always imwri, the new float_output option can force everything to be output as floating point
  stackvertical now properly rejects compat formats instead of producing unexpected output
  the default initial cache size now also depends on the number of threads used
  fixed negative frame request error listing the parent node name instead of the correct name
  fixed expr clamping of 9-15 bit output, previously it would clamp to 16bit
  fixed corrupted output in expr when mixing int and float for input and output (pinterf)
  
  r40:

2.6.2

fixed blankclip format check to not reject substituted format compat clips
  improved expr asm slightly
  made the framebuffer memory pool size a percentage of the total allowed memory usage instead of a fixed size, this should scale better when processing 8k and larger resolutions
  fixed rgb output sometimes being flipped in avisource
  added alpha output settings to avisource, the default is no alpha output
  fixed gamma being infinite if not set in levels, bug introduced in r39
  removed the hack needed to support avisynth mvtools, the native mvtools has been superior for several years now and removing the hack makes avisynth filter creation much faster
  added avisynth+ compatibility
  only do prefetching in avfs with vs script when linear access is detected, fixes excessive prefetching that could make opening scripts very slow
  
  r39:

2.6

updated pismo file mount runtime to build 188
  added offline documentation to the installer
  fixed clamping issues in levels filter
  renamed the croprel function to crop, croprel will still be kept as an alias for for compatibility with existing scripts
  fixed missing max value clamping for 9-15 bit input with convolution
  optimized prewitt and sobel
  removed the min and max arguments from sobel and prewitt because they interact very oddly with float formats
  avisynth compatibility can now handle functions with multiple overloads
  added float support to boxblur
  removed subtext file size limit
  fixed missing fps correction in avisource that would produce an error with some files
  switched to nasm as the assembler
  visual studio runtime detection is improved in the installer, it should no longer attempt re-installs when a newer version is present
  minor optimization in vspipe, you can now output blankclip into the void much faster
  memory will now be 64 byte aligned on systems with avx512 support
  added swapn and dupn operators to expr
  reverted the argument handling in levels, arguments no longer take a 3 plane list due it making no sense when combined with the planes argument
  optimized levels, the integer version is now implemented with a lut and the floating point version is faster when gamma=1.0
  improved get_outputs() in python (stuxcrystal)
  format objects can now be cast to int which will return the format id (stuxcrystal)
  added method to make it easier to query formats from python (stuxcrystal)
  made it possible to install the python part as a module (stuxcrystal)
  
  r38:

2.5.1

removed the pointless subsampling requirements of transpose
  updated imwri to use imagemagick 7
  added srt support to subtext (jackoneill)
  added boxblur filter
  various fixes to averageframes
  averageframes can now use up to 31 weights
  increased the number of allowed constants in h and v convolution modes to 25
  added new constants to clipinfo
  fixed several subtext corruption and crash bugs (jackoneill)
  added y410 and r210 output to avfs and vsvfw
  added constants for 12 and 14 bit yuv formats
  fixed a one pixel offset error only happening in vertical convolution with a 3 element vector
  switched to vs2017 in windows projects
  
  r37:

2.5

fixed occasional crashes on startup in avfs when used with avisynth scripts
  fixed blankclip and addborders sometimes rejecting valid floating point color values (jackoneill)
  vdecimate no longer stores the metrics for all frames, thus saving a lot of memory for long clips (jackoneill)
  changed get_read* functions in python so their memory no longer incorrectly is writable (Kamekameha)
  added rational number fps property to clips in python (Kamekameha)
  mostly worked around an issue where python would replace the sigint handler
  fixed bug that could sometimes cause false memory leak warnings when freeing core
  fixed possible corruption on frames without subtitles in subtext (jackoneill)
  added a proxy object to avoid referencing the wrong core in scripts (stuxcrystal)
  
  r36:
  updated zimg library
  packed format output now has alpha set instead of being zeroed
  added asynchronous getframe support to python (stuxcrystal)
  fixed several mac compilation issues
  frame.props can now also behave like a proper python dict (stuxcrystal)
  added morpho filter to windows installer
  fixed planestats bug that could sometimes affect non-mod8 calculation
  added leak warning for functions
  added __signature__ attribute to python function objects (stuxcrystal)
  in python function objects now have name, signature and plugin attributes, plugin objects now have a namespace attribute corresponding to the namespace
  added misc filters to included vapoursynth plugins
  fixed several edge cases when specifying color values for blankclip and addborders, inf and nan are now always rejected and floating point values can be any finite value
  vspipe will now properly report floating point formats in y4m instead of incorrectly making them look like integer, for example C420ps and C420ph will be used to mark single and half precision respectively
  avfs will now reject scripts that don't have an avs or vpy extension to avoid pointless error mounts
  fixed blankclip handling of color for compat formats
  added sample type to vspipe info output
  improved a few installer error messages when python can't be found
  now uses python 3.6 in windows
  fixed potential crash when two clips are added together (Kamekameha)
  
  r35:
  fixed avfs frame packing so it matches vfw behavior
  fixed one frame leak on script reload in avfs
  fixed 8bit 3x3 convolution where the upper left pixel wouldn't be taken into account correctly on x86
  
  r34:
  avfs can now output the same high bitdepth formats for avisynth+ as for vapoursynth
  it's now possible to skip installing the visual studio runtimes in the installer to reduce online dependency of installer (installation may not work until manually installed, obviously)
  temporalsoften plugin is no longer included in the windows installer, it has been replaced by the misc plugin containing various functions useful for avisynth compatibility
  the default max memory usage is now 4GB on 64bit systems
  fixed several unpacking issues in avisource introduced in the previous version
  added warning if there are any nodes or frames still in use when the core is freed
  improved avfs prefetch logic for vpy
  added premultiplied blending mode to maskedmerge
  added premultiply filter to premultiply a clip with alpha
  makediff and adddiff no longer pointlessly clamp float to a limited range since there's no good reason to do so
  fixed memory leak when the core is freed introduced in the previous version
  fixed memory leak in avfs introduced in the previous version
  removed rshift and replaced it with a scale argument in sobel and prewitt
  fixed sobel and prewitt wrongly passing through the input pixel values
  added support for hdr formats and dci-p3 in zimg
  optimized planestats
  added float support to pemverifier
  fixes active region offset and height for interlaced resizing
  added support for more different subsampled input formats for vfm (jackoneill)
  
  r33:
  calling getFrame from a getFrameAsync callback no longer deadlocks, but you probably shouldn't have been doing it anyway
  minmax is now split into two separate properties in planestats
  added autoadjust to prefetch list
  the resizers can now have the active image region specified to do things like subpixel shifts and cropping
  genericfilters is no longer included with the installer and has been deprecated for a long time, if you for some reason miss canny simply use the tcanny plugin instead for a better implementation
  assvapour was renamed to sub and now supports bitmap subtitles as well (jackoneill)
  alternative python installations can now be selected when installing on windows, note that there many pitfalls when not using python from python.org
  the rshift argument of sobel/prewitt is now deprecated because it's pointless, simply scale the min and max args as appropriate
  optimized minimum, maximum, median, deflate, inflate, convolution (1x3, 3x1 and 3x3) on x86 cpus
  added float support to minimum, maximum, median, deflate, inflate, convolution, prewitt, sobel, invert, limiter, binarize and levels functions, note that most of the arguments have been changed from int to float
  the whole project can now be compiled with clang-cl under windows
  directshowsource from recent avs+ can now be used
  fixed swapped uv planes with yuv411 output in vsvfw and avfs
  merged vsfs with the latest version of avfs, avfs now work for both vapoursynth and avisynth scripts and no longer has shell integration
  avisource can now open all formats vsvfw can output plus b48r
  fixed corrupted output in vfm when clip2 isn't 8 bit
  fixed crash due to stack overflow if an extremely long filter graph is freed
  now installs the vs2015 update 3 runtimes on windows
  vsvfw will now automatically convert rgb24 to packed bgra for convenience
  added b64a and P416 output to vsvfw
  updated to zimg v2.2 branch
  mixed imwri fixes
  fixed rare access violation in expr when ternary operator is used (jackoneill)
  
  r32:
  fixed raw rgb sometimes being upside down in avisource
  fixed cache not being automatically added for filters with nfmakelinear flag set (jackoneill)
  assvapour now has integrated blending (jackoneill)
  added the experimental function setfieldbased for convenience, expect it to change in the future
  the tff argument is now optional and ignored for doubleweave when the _field property is present in a valid combination, _fieldbased will also be properly set now
  the tff argument is now optional and ignored for separatefields when the _fieldbased property is present
  added support for interlaced resizing
  extended avisynth mvtools compatibility hack to work for 64bit version as well
  fixed regression from r29 that would make compatyuy2 conversions vertically flipped
  vspipe now outputs planar rgb in gbr plane order to better match what other software expects as input
  now has a slightly more informative error message when the wrong type is passed as an argument in python
  vsvfw now prints per frame errors on the corresponding frame
  splicing two incompatible clips could sometimes give a confusing error message
  removed planeaverage
  
  r31:
  the nfmakelinear handling now takes the number of used threads into consideration, this makes it work properly with hundreds of threads
  the imwri namespace will now be imwrif when compiled against a hdri imagemagick, this is to properly distinguish it from the integer version which has distincly different input and output support
  the installer now also writes the path to vapoursynth.dll and vsscript.dll to the registry to make them easier to locate, vsscript.dll will probably stop being installed in the system dir in r33
  changed registry entry structure to make more sense (no more 32/64 suffix, instead writes to HKLM32 or 64 as appropriate), the old entries will be kept for a few versions
  portable version now includes vsfs and vsvfw to be more complete
  the resize matrix check will no longer reject several valid combinations
  more zimg bug fixes, to/from float conversions will no longer sometimes get stuck
  
  r30:
  fixed imwri bug related to detecting the bitdepth and dimensions of an image
  zimg bug fixes
  changed behavior of resize, now matrix_in, transfer_in, primaries_in, range_in and chromaloc_in take precendence over frame properties by default, the new prefer_props argument restores old behavior
  added the possibility to make portable builds on windows
  added half precision float input/output to expr on cpus that have the f16c extension (ivy bridge or later)
  added the possibility for plugins to print messages through the standard logging as well, don't use it unless you really have to
  the build system should now autodetect which optional libraries are available
  fixed ycocg conversions
  planeaverage is now deprecated, use planestats instead
  added planestats, a function that calculates min, max, average and difference of a frame at the same time
  removed planedifference, deprecated since r28
  added avisynth 2.6 and x64 support, note that x64 can only load 2.6 but not 2.5 plugins
  no longer installs vsvfw.dlls into system dirs
  added nfMakeLinear, this flag will make the immediately following cache do its best to make requests more linear, set it on source filters where seeking is slow
  the installer will no longer fail if a newer than expected version of the visual studio runtimes are installed
  vspipe now displays the correct number of total frames when -s is used
  
  r29:
  fixed bug where vfm wouldn't set _Combed property properly unless micout=true or micmatch=2 used
  vfm now sets _fieldbased=0 after matching
  added XLENGTH field to y4m headers so the total number of frames can be automatically passed to encoders
  imwri will now always output a float image when built against a hdri imagemagick
  imwri now supports QD32 with and without hdri
  added . as a special output filename to vspipe, specifying it will simply skip all output writing
  maskedmerge should now properly resize the mask without truncating it to limited range
  made zimg the default resizer, swscale is no longer used
  fixed crash in vdecimate (nodame)
  now internally prioritizes frames based on original request order, should improve speed and frame time consistency in certain conditions
  more specific error messages in many filters (nodame)
  fixed the shown matrix names in clipinfo
  fixed compilation on non x86 targets, in imwri and vshelper.h without c++11 enabled, all introduced in r28
  fixed vsfatal corrupt output (nodame)
  fixed uninitialized value in frame pool
  
  r28:
  fixed eedi3 image corruption with dh=true (nodame)
  planedifference is now considered deprecated, it can be replaced with one or two calls to planeaverage which will also yield a sign
  fpu state check now doesn't mind if precision is set to more than double
  VFM now uses the _FieldBased flag
  added float support to imwri, can now input and output float when compiled against a hdri enabled q16 imagemagick
  added an argument to set the compression type in imwri
  the installer will now download and install the vs2013 and vs2015 runtimes if needed
  now uses python 3.5
  fixed vdecimate parallel mode
  pow is now accepted in expr expressions
  expr now accepts up to 26 inputs (x-z, a-w)
  expr now has runtime code generation on x86 cpus using jitasm
  now normalizes the framerate returned from avisynth filters
  it is now a fatal error to set the videoinfo of a filter to a non-normalized framerate
  added a few more checks for proper api usage
  get_core() can now be used in callbacks and other external functions in python
  now returns an error message saying that windows needs to be updated in certain cases when plugin loading fails
  fixed loop filter (nodame)
  lut and lut2 can now output float as well
  now accepts scripts that start with a BOM as well
  fixed an image corruption bug with 9-16 bit input to rgvs when the c++ code is used
  fixed division by zero issues in muldivrational in vshelper.h
  blankclip can now create 0 (unknown/variable) fps clips
  added float support to planedifference and planeaverage
  added half support to addborders
  relevant compile time options are now in the version string
  
  r27:
  improved clipinfo so it shows more relevant information
  fixed proptoclip crash on certain errors
  added a rewritten version of genericfilters to the core (nodame)
  fixed the not (required two operands instead of one, asm broken) and swap (only required one operand instead of two) operators in the expr filter
  renamed the x and y arguments in cropabs to left and top to be clearer and match croprel
  addborders now rejects negative borders properly and passes through clips unchanged when all borders are 0
  several bugfixes to the bundled genericfilters
  added compile time option to have additional guard memory around frames to detect out of bounds writes in filters
  added setframeprop filter (nodame)
  the framerate and the frame duration property should now be a normalized number
  all internal filters now return an error if the returned clip is longer than INT_MAX instead of undefined behavior
  "unknown" length clips have been deprecated and a fatal error will happen if any plugin returns them, this change is because it was complicated, annoying and accomplished nothing compared to INT_MAX length clips
  freezeframes now doesn't need to have the ranges specified in ascending order
  interleave, separatefield and selectevery now properly adjusts the framerate including the durations
  changed the meaning of _FieldBased to be able to signal progressive/bff/tff material, this is now used by ffms2, eedi3 and separatefields
  fixed memory leak in assvapour destructor
  the identifiers used for keys in vsmap can only be alphanumeric and _, anything else will be rejected
  the expr filter now does constant folding which makes it faster in many cases (nodame)
  vspipe can now output timecode v2 files (nodame)
  splice and interleave now properly reject clips with mismatched fps unless mismatch is set
  fixed possible bad behavior/crash in FrameEval under rare circumstances
  fixed truncation of last digit of integers in text.FrameProps
  
  r26:
  fixed that frame error messages would sometimes become lost
  fixed dropped frame handling in avisource which was broken by accident when adapting the code for vapoursynth
  fixed crash on undecodable frames in avisource
  installer creation has been streamlined
  fixed assumefps when using a clip as the fps source (nodame)
  improved the performance of vsmap operations
  the c version of the expr filter now clamps 16bit output properly (nobody noticed this bug because everyone used the x86 asm version of the code)
  expr filter now always uses . as the decimal separator in expressions, previously it would wrongly use the current locale's separator
  there is now a minor api version as well that will be bumped when features are added
  expr filter can now run fully in parallel
  now returns an error if nodes are passed between different cores
  modifyframe is now properly set to parallelrequests which should speed it up slightly
  added half precision float support to blankclip
  improved documentation a lot, every single python and c api function is now documented properly (nodame)
  now uses tcmalloc instead of the normal malloc implementation to increase performance on windows
  
  r25:
  now requires vista/2008 or later because there are no relevant xp users left
  now uses loadlibraryex to search the loaded dll path as well for dependencies to make plugin loading saner
  the windows installer now comes with pdb files for vapoursynth.dll to make plugin debugging easier
  added an alternative autotools based build system, it will probably become the default in the next release (nodame)
  the public headers are now mostly C89 compliant
  added simple compilation instructions for osx/some linux distros to the docs
  DuplicateFrames and DeleteFrames no longer needs to have the frame number argument sorted
  fixed handling of indeterminate length clips in DuplicateFrames and DeleteFrames
  added experimental . syntax, for example core.BlankClip().VFM(order=1) will now work, if multiple functions have the same name they still need to be prefixed with the namespace
  now uses the proper python exception for missing attributes
  added getPluginPath function to the api so it's possible for plugins to load resources in relative paths in a reliable way, the returned paths are always absolute and use forward slashes
  registerFormat now returns null instead of terminating the program on invalid formats, this is so plugin developers won't have to duplicate logic and instead can simply try if a format is valid
  frame data is now exposed in a more python friendly way, use the get_read_frame and get_write_frame methods to get fast and efficient arrays
  enabled x86 mmx state checks on all platforms
  fixed a filter error propagation issue that could lead to crashes
  fixed a race condition that could lead to too many threads being spawned to do nothing
  added verticalcleaner and missing repair modes to rgvs (HolyWu)
  fixed negative single frame indexing of clips in python
  vspipe now reports the correct number of frames as output when a non-zero start frame is specified
  fixed ctrl-c handling in clip.output() and some other small adjustments
  clip.output() now accepts normal python file-like objects
  automatically generated names for runtime registered yuv formats now make sense
  
  r24:
  fixed rare crashes in 64 bit windows asm in a few filters
  core.max_cache_size should now be used instead of core.set_max_cache_size()
  num_threads, add_cache and accept_lowercase can now be set at any time in python and not only during the first call to get_core()
  fixed reference leak in FrameEval
  more functions in the vsscript api now return success or failure
  improved handling of the vsfunc type in python, it should now have all the functionality originally intended
  removed r21 argument compatibility since all scripts should have been changed by now
  include file paths in the windows sdk have been changed to better match linux and osx
  the core will no longer be completely freed until all filter instances belonging to it have been released, this prevents crashes in some circumstances
  vsvfw now properly returns an error message when no output has been set instead of silently failing
  fixed a reference leak in vsscript
  vspipe has a new argument for passing on values to the script environment from the command line
  vspipe now has improved command line parsing and short forms, however old command lines will have to be modified to work
  re-added clip.output()
  fixed a filter error propagation issue
  mixed improvements to vivtc (nodame)
  fixed mac compilation of genericfilters
  added FreezeFrames, DuplicateFrames and DeleteFrames, they can all delete/duplicate/freeze multiple frames with one command (nodame)
  mixed documentation improvements (nodame)
  fixed tracking of memory usage that was broken in r22 (nodame)
  vivtc now uses framedifference internally and runs completely in parallel, also minor metric reporting fixes (nodame)
  
  r23:
  fixed an issue with rearranging old order arguments for Lut2, Merge and MaskedMerge
  fixed bugs in rgvs mode 20, eedi3 crash on windows and genericfilters crash in canny
  the frame range to output can now be set in vspipe as well using -start and -end
  documentation fixes
  minor build system improvement/fix (Zor)
  removed debug printfs in windows x64 build, fixes piping to stdout
  fixed tests
  installer improvements
  
  r22:
  chikuzen's genericfilters plugin is now bundled with the installer
  the installer will now refuse to run if the 32 and 64 bit python installation directory is the same or if python wasn't installed for all users
  fixed a rare bug on x64 windows that could cause crashes in a few internal functions with asm
  list_functions() now sorts function names alphabetically and plugins by their unique identifier
  fixed memory leaks when per frame errors happen in several filters
  the resize filter now reports more errors at construction time
  shuffleplanes format argument renamed to colorfamily to make more sense
  it's now possible to set a custom debug message handler from python, also a bug happening when setting a custom handler was fixed
  added makediff and mergediff functions
  the installer will no longer prompt about closing applications unless it's really necessary
  vspipe now prints the fps as well
  now arguments that are None in python aren't passed on to functions, this makes supplying defaults a lot easier
  added core.version_number() so scripts can easily check for a supported core version
  improved multithreaded locking, almost all functions in the vsscript and core API should be completely thread-safe now
  Lut2, Merge and MaskedMerge functions changed, they now take two clip arguments named clipa and clipb instead of a 2 clip array, the old version is accepted as well for now, do vs.get_core(r21_arg_compat=False) to disable backward compatibility
  minor API change, filters will no longer receive requests for frames beyond the end of a clip, instead the requested frame number is truncated, unknown length clip behavior is unchanged
  simplified the vsscript api sample to use getFrame() and to be pure C code
  added VS2013 projects
  runtime registered formats now get automatically generated names so they're easier to identify
  there should longer be "an exception happened when handling an exception" errors in python to keep the backtrace clearer
  the python module now accepts any iterable as an array input
  completely removed the Qt dependency (with some help from nodame on linux)
  added clense and the missing modes to removegrainvs
  switched to C++11/C99 and VS2013, this means that both the VS2010 and VS2013 runtimes are both installed
  added a port of vinverse (lachs0r)
  
  r21:
  added additional checks to verify that plugin writers don't do things wrong
  code cleanups and reorganization, simplefilters.c was split into several files
  the fpn_num and fps_den clip properties are no longer truncated to int in python
  fixed setting maximum memory use over 2GB from python
  added an additional output format argument to modifyframe, also added checks to prevent crashes
  now completely rejects adding known to be hopelessly broken functions from avisynth plugins (removegrain/repair/iscombed/colormatrix)
  now properly flips compatrgb32 when converting, previously conversions to/from would make the picture upside down
  optimized 8 bit merge and maskedmerge
  fixed crash bugs in planeaverage/difference/cliptoprop/proptoclip introduced in r20
  now flattens frame properties as well, this is the proper documented behavior
  merged all selectclip functionality into frameeval, selectclip was removed as a separate function
  vsvfw now returns a clip with the error message if there's an error
  added a basic text printing filter to the core, code written by nodame
  it's now possible to use dir() on frame.props and core.namespace in python to list interesting properties and attributes
  added a compiled version of assvapour, it's probably a bit broken when it comes to font selection at the moment
  ported removegrain/repair based on dither tools' code, support 8-16 bit input
  fixed a cache issues where it would shrink to far too small sizes
  fixed several bugs in shuffleplanes, now it will correctly deduce the dimensions of the output in more cases and properly reject variable size/format input
  fixed a rare hang that could happen in avisynth compatibility when only using one thread
  adjusted avisynth compat prefetching lists, specifically MCompensate should be faster now
  
  r20:
  minor api change, a copy of all filter arguments is no longer kept around unless cleared, shouldn't affect any existing filters
  fixed a bug that would cause avisynth filters without specified prefetching to crash
  renamed the api functions getPluginNs/Id to getPluginByNs/Id since they make more sense
  rewrote the ugliest threading code, the locking is now a bit more fine grained in general
  added frameeval, a function to allow per frame filter evaluation
  blankclip now generates a new frame on every request to keep memory usage down, added the keep argument to optionally always return the same frame
  the message handler now takes an extra user data pointer, the handler and data pointer is still per process instead of per core though
  added plugin autoloading for linux (jackoneill)
  added plugin autoloading for windows, autoloaded plugins for all users go into <installdir>\plugins and per user autoloaded plugins go into <appdata>\vapoursynth\plugins
  include the python backtrace in errors when available
  fixed a bug in the propagation of filter errors, requesting a frame with an error twice no longer makes vapoursynth hang
  fixed the error that happens when avisource is used to open a vs script inside a vs script
  added override support to vdecimate (nodame)
  added -version option to vspipe and other small fixes
  addborders now properly rejects clips where the colorspace can change
  addborders and blankclip now properly default to black for all colorspaces
  added tdeint properly to the prefetch list
  fixed a cache bug that would make caches adapt too slowly/not at all
  only output the first 200 slow warnings per avisynth filter
  don't prefetch any frames by default for avisynth filters
  
  r19:
  lut/lut2 now processes all planes by default
  ported to work on arm and powerpc (Zor)
  fixed 9-16 bit format support in Expr
  properly initialize color in addborders to 0
  calls to the getFrame() function inside vapoursynth can never deadlock now, the thread handling is also slightly improved
  fixed a bug in the cache that would stop it from freeing all its frames when memory is needed, fixes an out of memory error reported by Chikuzen
  output is no longer determined by setting the last variable in __main__, instead clip.set_output(int index = 0) is used to set which clip(s) are exported
  fixed some memory leaks in the internal filters when they're freed (jackoneill)
  now properly initializes blankclips to all 0 when no values are given
  added proper const declarations now that cython supports it, cython 0.18 or later required to build the extension now
  fixed get_write_ptr() in python to actually return a write pointer
  fixed the lut and lut2 filters for > 8 bit formats (ADub)
  various minor fixes to vivtc
  removed clip.output() since it's a bad design decision, now a command-line program called vspipe can be used to pipe or write raw video output
  renamed newMap() to createMap() to match the naming of all other functions
  added core.get_plugins() for the core and core.namepace.get_functions() for namespaces, it works similarly to list_functions() but instead returns the information in a dict
  removed the unmentioned and unused link option for filter arguments as it is completely pointless and similar functionality may be implemented anyway
  there's now a sane external api available for embedding in other applications, see vsscript.h and vsvfw for an example
  now a singleton pattern is used for the core in python scripts, use vs.get_core() to get a reference to it
  clip.get_frame() now throws an exception when out of bounds frames are requested
  fixes a reference leak in the VideoProps python class
  now ignores functions with . in their argument string for avisynth compatibility, this makes warpsharp mostly compatible
  
  r18:
  the installer no longer asks for the installation type since there's only one option anyway
  vdecimate now returns and decimates the frames in the last incomplete cycle as well
  fixed a bug that prevented mask scaling from working in MaskedMerge
  fixed a bug in VSFS that made the module crash on script errors, the full error message is now reported in a log file just like AVFS
  improved the error message when the last variable hasn't been set in a script
  changed default interleave behavior to match avisynth, the old and in some cases desirable behavior can be selected with the extend argument
  added color argument to addborders
  fixed addborders for formats with over 8 bits per sample
  blankclip can now produce float clips
  fixed/at least greatly reduced the big memory leak when reopening a script through vfw
  
  r17:
  the installer will now register and unregister the vsfs dll if selected (pismo file mount must of course be installed at the time for it to work)
  cleaned up the asm in the transpose filter
  fixed python detection in the installer if it was installed for a single user
  vdecimate can now accept up to 16 bit integer input and all color formats (jackoneill)
  fixed a bug that made the array for storing metrics uninitialized at the end in vdecimate leading to random decisions (jackoneill)
  added an inappropriately named subtitle filter based on libass (lachs0r)
  EEDI3 has now been changed into pure C (jackoneill)
  it is now possible to have the warning/error messages handled by a user specified callback function
  added a check for the SSE state so plugins cannot modify it without it being noticed (similar to the FPU and MMX checks)
  fixed that two plugins could be loaded into the same namespace
  fixed some issues with argument handling in python due to exceptions not being propagated properly
  added the Expr filter, it can evaluate an expression per pixel during runtime for 1-3 input clips
  fixed a clip reference leak introduced in R15 with the multiple clip output changes
  fixed AVISource crashes due to RGB output not being properly initialized
  fixed the upper memory limit check
  fixed callback functions hanging in vfw and vsfs
  changed the license of all files to LGPL, previously a few of them were MIT licensed
  
  r16:
  fixed a MaskedMerge reference leak under some rare conditions
  added a check for CPU features on x86, will now return an error if SSE2 isn't present
  fixed an issue in avisynth compatibility caused by stricter internal checks
  
  r15:
  documented all the predefined frame properties and all important python classes
  fixed iterating over clips in python
  allocate memory per plane instead of in one big lump, this allows planes to be copied by reference using the newVideoFrame2() function and will also reduce memory usage slightly for filters that use it
  fixed infinite loop in lut and lut2 when used with 9 bit input or more
  added ClipToProp and PropToClip functions, they allow one clip to be attached to another clip as frame properties
  fixed a reference leak in vivtc
  ported avisource from avisynth, it has been thoroughly upgraded and can understand several high bitdepth formats including v210 which many "professional" codecs use, it is also based on the latest vdub parser code now
  added len() support for clips in python
  fixed a bug with plugin functions having array output in python
  improved the api so that a single node/filter can produce several output clips, this bumps the api version to r3 (r2 plugins are still binary compatible but the r2 abi will also be removed in a version or two)
  
  r14:
  fixed setting the pixel values in blankclip
  a collection of ported/new filters are now bundled (eedi3, vivtc, histogram and temporalsoften)
  all examples and headers needed to write a new filter are now included in the installer
  fixed a frame data alignment issue in VSFS
  added vivtc (aka tivtc lite) to the included filters
  the fpu state check now only outputs a warning instead of terminating (this is until I've been able to locate why certain people trigger it)
  users can now set the cache size limit over which vs aggressively starts to decrease cache size, use core.set_max_cache_size(number of MB) (the memory use is calculated from the combined size of all framebuffers allocated)
  fixed memory leaks in PlaneDifference and PlaneAverage
  
  r13:
  enabled another part of the cache size adjustment, cache sizes will now be aggressively reduced to keep framebuffer memory use below 1GB
  filters can now get passed zero length arrays, the rewritten parts also improves argument handling in python (integer types now get converted to float implicitly when passed as a function argument)
  added right click\new\vapoursynth script shortcut to the installer
  make the number of frames in progress equal the number of threads, this should always be the upper beneficial value for any script, previously it was fixed at 10
  fixed a rowsize bug in avisynth compatibility and implemented the subframe functions
  added PEMVerify, a function to check for out of bounds values in filter output for developers
  added PlaneDifference and PlaneAverage functions for use in conditional filtering
  added copy(), and get_write_ptr() to clips in python, renamed get_data() to get_read_ptr()
  greatly improved the handling of SelectClip and ModifyFrame (formerly ModifyProps), conditional filtering is now something that's usable
  using ModifyFrame and a bit of cleverness it is now possible to implement fairly complex filters in python
  
  r12:
  fixed a scheduling error for fmParallelRequests filters (all avisynth filters and several internal ones)
  added a bit more documentation, this time a bit about python and the classes found there
  added vsfs, a port of avfs
  v210 output support, add enable_v210=True to use it
  removed support for clips with unknown length from vfw
  can now open files with unicode filenames in vfw
  fixed some minor bugs and compiler warnings
  
  r11:
  switched the precompiled module to python 3.3
  vfw now also has several frame requests going at once, this should make the throughput get close to clip.output()
  vfw now returns some colorful bars on error because refusing to open crashes too many applications
  vfw now has support for the P010, P016, P210, P216 formats, tested in mpc-hc with madvr
  removed some stray debug prints
  
  r10:
  fixed an issue where python could deadlock on the GIL
  now comes in an installer
  added a skeleton filter and a heavily commented invert example filter to the sdk dir
  added a vfw module
  fixed slicing/indexing in python module
  list_functions() can now be used on a namespace (core.resize.list_functions())
  improved and documented build system, see INSTALL
  other small fixes relating to the python bindings
  
  r9:
  to get around keyword conflicts all function arguments names can be specified with both name and _name (Loop(_clip=a) is the same as Loop(clip=a))
  works under linux and probably osx too
  full source released under LGPL
  it is now possible to use + to splice clips and the slicing operator to perform Trim, Reverse and SelectEvery operations on a clip
  documentation of all user functions
  lots of included filter fixes
  minor fixes to other things
  
  r8:
  portability fixes for linux
  minor api additions to make filters that consume 20+ input frames/scan a whole clip feasible
  added cpu state checks after filter calls
  added a function type, plugins may now take a python function and evaluate it for every frame
  implemented the final planned standard functions (transpose, croprel, clipselect, modifyprops)
  fixed the huge memory leak in cropabs
  other small fixes
  
  r7:
  includes the source for all of the std functions and the header needed to write plugins (more source coming soon)
  unnamed arguments are now accepted
  y4m headers now specify the colorspace for all yuv formats and gives an error when used with non-yuv
  added a new B tag to y4m output that specifies the number of bits per sample (B8/B10/B16)
  more minor fixes
  
  r6:
  now drops all crop calls to env->invoke(), fixes dgdecode compatibility but you have to crop yourself now
  all 64bit issues fixed
  added several checks to prevent the compat formats from being used by new filters
  minor fixes and extra checks for everything
  
  r5:
  more python output fixes
  added accept_lowercase as a setting for the core constructor
  python module refinement, now all objects have a string representation with more information
  other minor fixes
  
  r4:
  fixed the bad frame output from the python module
  added a callback to the output function so progress can be reported
  ported ffms2
  raw frame data can be accessed from python
  
  r3:
  fixes even more threading and performance issues
  adds special support for yuy2 and rgb32 so most avisynth filters should work
  added hacks to make mvtools2 work
  
  r2:
  fixes a large number of threading issues
  removed the stupid clip.vi.width thing in python, now it's simply clip.width
  fixed the frame reordering in the python bindings, now frames pop out in the expected order
  
  r1:
  buggy first version