VapourSynth Changelog

What's new in VapourSynth r68

May 9, 2024
  • fixed portable base path detection, was broken in r67
  • fixed is_inspectable, was broken in r67
  • reverted widestring print changes in vspipe from r67

New in VapourSynth r67 (May 5, 2024)

  • since most plugins don't need api 4.1 you now have to define VS_USE_LATEST_API or VS_USE_API_41 to actually require it
  • fixed a minor performance issue
  • all suitable constants are now IntEnum type instead of IntFlag when compiled with cython 3.x
  • fixed constants in vapoursynth module not being correctly coerced to int type when used passed to plugin functions due to cython 3.x changes
  • vfw and avfs will now output YUV420P12 and YUV422P12 as P016 and P216 fourcc (16 bit) to make things more convenient
  • fixed 19-24 bit audio output in vfw
  • fixed handling of audio decoding errors in vfw
  • fixed the reported plugin path being empty
  • improved the portable install script

New in VapourSynth r66 (Mar 10, 2024)

  • updated the supported python versions to 3.12 and 3.8
  • added an option to write a full filter graph with time information to file when done processing in vspipe
  • clarified where different information will be output in vspipe
  • fixed backslashes and linebreaks not being properly escaped in dot graph output
  • copyframeprops can now optionally copy only a subset of properties
  • removeframeprops function now accepts wildcards in property names
  • added prop_src argument to shuffleplanes
  • added an access pattern mode when only repeatedly requesting the last frame of a clip
  • added approximate_gamma option to resizers (saindriches)
  • added plugin_path property to plugin object in python
  • audio is now clamped instead of wrapped around in audiomix and audiogain, these functions can also now warn when clipping happens
  • the vfw wrapper now provides simple waveformatex information automatically if the audio is mono or flagged as plain stereo and samples contain no padding bits
  • increased the get_frame error message buffer size in python, fewer messages should be truncated now
  • added missing st428 transfer characteristics to resize
  • made most graph information functions part of the stable api and bumped the version to 4.1
  • added new frame request pattern where only the last frame is requested multiple times to further improve cache usage
  • added new api functions for cache clearing
  • fixed request pattern set for selectevery with multiple identical offsets
  • fixed request pattern set for premultiply
  • expose number of bytes used by cache in python and clean up version and str representations of things (setsugennoao)
  • fixed modifyframe filter not properly copying its own videoinfo which may cause crashes if nothing else references the format node (jsaowji)
  • fixed setcache function leaking a node reference (jsaowji)

New in VapourSynth r66 RC 1 (Feb 9, 2024)

  • Updated the supported python versions to 3.12 and 3.8
  • Copyframeprops can now optionally copy only a subset of properties
  • Removeframeprops function now accepts wildcards in property names
  • Added prop_src argument to shuffleplanes
  • Added an access pattern mode when only repeatedly requesting the last frame of a clip
  • Added approximate_gamma option to resizers (saindriches)
  • Added plugin_path property to plugin object in python
  • Audio is now clamped instead of wrapped around in audiomix and audiogain, these functions can also now warn when clipping happens
  • The vfw wrapper now provides simple waveformatex information automatically if the audio is mono or flagged as plain stereo and samples contain no padding bits
  • Increased the get_frame error message buffer size in python, fewer messages should be truncated now
  • Added missing st428 transfer characteristics to resize
  • Made most graph information functions part of the stable api and bumped the version to 4.1
  • Added new frame request patterns where only the first and/or last frame may be requested multiple times to further improve cache usage
  • Added new api functions for cache clearing
  • Fixed request pattern set for selectevery with multiple identical offsets
  • Fixed request pattern set for premultiply
  • Expose number of bytes used by cache in python and clean up version and str representations of things (setsugennoao)
  • Fixed modifyframe filter not properly copying its own videoinfo which may cause crashes if nothing else references the format node (jsaowji)
  • Fixed setcache function leaking a node reference (jsaowji)

New in VapourSynth r65 (Oct 29, 2023)

  • fixed inspection api sometimes causing memory corruption when used from python
  • frame properties in python are now return as str type instead of bytes when hinted as utf8 printable
  • fixed how unprintable data is returned from plugin functions in python, previously it would leak a ctypes pointer with no length instead of returning a bytes object
  • fixed a bug in the avx2 maskedmerge float premultiplied code path that would switch the two input clips
  • reverted the from_chars code a bit more to make no locale affect float parsing
  • fixed the sar adjustment for real this time

New in VapourSynth r65 RC 1 (Oct 10, 2023)

  • frame properties in python are now return as str type instead of bytes when hinted as utf8 printable
  • fixed how unprintable data is returned from plugin functions in python, previously it would leak a ctypes pointer with no length instead of returning a bytes object
  • fixed a bug in the avx2 maskedmerge float premultiplied code path that would switch the two input clips
  • reverted the from_chars code a bit more to make no locale affects float parsing
  • fixed the sar adjustment for real this time

New in VapourSynth r64 (Sep 28, 2023)

  • fixed compilation on osx where the default standard library doesn't have a full implementation of std::from_chars
  • fixed SAR adjustment in resizer when source cropping is used
  • added -- as an alternate to . to indicate no output in vspipe since shells have a tendency to expand .
  • added json output of video frame properties to vspipe
  • fixed clearMap function, previously it would forget to properly clear the error state in maps which could cause crashes in frameeval and other filters
  • 32 bit binaries are no longer provided for windows
  • updated zimg to fix issues on zen4 cpus
  • added support for cython 3.x

New in VapourSynth r64 RC 1 (Sep 19, 2023)

  • added json output of video frame properties to vspipe
  • fixed clearMap function, previously it would forget to properly clear the error state in maps which could cause crashes in frameeval and other filters
  • 32 bit binaries are no longer provided for windows
  • updated zimg to fix issues on zen4 cpus
  • added support for cython 3.x

New in VapourSynth r63 (Jun 14, 2023)

  • Updated all api documentation for api4
  • Switched to C++17 for the entire project
  • Added a warning every time the deprecated cache filter is instantiated and ignored
  • Fixed a regression with alpha nodes in vspipe introduced in r62

New in VapourSynth r62 (Mar 30, 2023)

  • Updated the supported python versions to 3.11 and 3.8
  • Now up to 500 log messages are cached when no log handler is attached
  • Improvements to repr, audio channel handling and other python fixes (setsugennoao)
  • Added a class Local for environment-local value

New in VapourSynth r61 (Dec 1, 2022)

  • fixed error message when splicing mismatched clips so it's actually helpful
  • fixed a memory leak when freeing setframeprops filter (Endill)
  • fixed planestats being broken for float format (Endill)
  • fixed makefulldiff for 16 bit clips, previously it used too small intermediate variables
  • blankclip can now emit variable size and variable format clips
  • libraries can now register clean up callbacks when a core gets destroyed

New in VapourSynth r60 (Sep 19, 2022)

  • Fixed blankclip crashing when fpsnum or fpsden is 0 despite it being allowed
  • Fixed invalid format ids sometimes being treated as api3 values when passed to resize
  • Fixed error message frame generation in vfw
  • Fixed writing beyond end out output buffer for audio in vfw
  • Blankaudio now takes an array of channel constants since this better matches how most other functions work
  • Fixed splitchannels crash on certain channel configurations (YomikoR)
  • Added makefulldiff and mergefulldiff, these are versions of makediff and mergediff that don't clamp the difference to half range and instead use a higher precision diff clip
  • Better error messages when filters get unsupported input formats or combinations thereof
  • Freezeframes now accepts empty arrays and simply passes through the source clip
  • You can directly assign to frame-props
  • Removed all deprecated (and replaced by better versions) functions in python: get_frame_async_raw, get_plugins, get_functions, list_functions, get_format, register_format
  • Fixed convolution output for 9-15 bit material

New in VapourSynth r59 (Jun 6, 2022)

  • fixed several convolution crashes
  • fixed averageframes weights with float input
  • fixed rare cython memory leak on error

New in VapourSynth r59 RC 2 (Jun 1, 2022)

  • Also fix SSE2 average

New in VapourSynth r59 RC 1 (May 26, 2022)

  • Update changelog and msvc runtimes.

New in VapourSynth r58 (Apr 14, 2022)

  • updated the supported python versions to 3.10 and 3.8
  • updated visual studio 2022 runtime version
  • updated projects to visual studio 2022
  • updated zimg to 3.0.4
  • out of range requests getFrame() are now properly rejected instead of possibly crashing later
  • removed the prefer_props argument from resizers, trying to use it will result in a warning message
  • fixed certain expressions failing to compile in expr filter
  • fixed averageframes not respecting scenechange property (sekrit-twc)
  • added bob filter (sekrit-twc)
  • added support for separable convolutions and optimized convolution in general (sekrit-twc)
  • fixed audionode get_frame() in python
  • enabled cache for nodes with no registered dependencies, this means nodes returned by getoutput won't need to manually have the cache enabled if they have no filter consumers

New in VapourSynth r58 RC 2 (Apr 2, 2022)

  • Reject out of range requests to getFrame() properly

New in VapourSynth r58 RC 1 (Mar 25, 2022)

  • Fix installer for latest MSVC and add more file types to gitignore

New in VapourSynth r57 (Oct 12, 2021)

  • More regression fixes from R55

New in VapourSynth r56 (Sep 29, 2021)

  • Regression fixes for R55 mostly.

New in VapourSynth r55 (Sep 20, 2021)

  • Starting from today there will separate builds of the new audio branch (master) and the old (api3) branch provided for those who need full compatibility with old scripts.
  • The biggest fixes in this release is that the handling of pow in expr has been fixed and no longer produces unexpected output. There’s also a new vsrepo included that once again works. That’s about it. It’s the life of a maintenance branch where only super serious things will be fixed.
  • API3 maintenance release for backward compatibility:
  • updated visual studio 2019 runtime version
  • updated zimg to 3.0.3
  • fixed multiple python bugs related to output, copy on write and memory views (Kamekameha)
  • fixed expr pow behavior and more clearly documented what values are allowed (sekrit-twc)

New in VapourSynth r55 RC 3 (Sep 5, 2021)

  • Also mount .py files as VS scripts

New in VapourSynth r55 RC 1 (Aug 26, 2021)

  • Include API4 headers in the installer

New in VapourSynth r55 Test 3 (Aug 11, 2021)

  • Merge branch 'master' into doodle1

New in VapourSynth r54 Test 2 (Aug 2, 2021)

  • Use the filter binaries from test1

New in VapourSynth r54 Test 1 (Aug 2, 2021)

  • Extremely experimental. Use the provided FFMS2 binary. Bug reports and discussion preferably in the doom9 thread.

New in VapourSynth r54 (Jul 21, 2021)

  • Floating point mask clips are now a consistent thing.

New in VapourSynth r53 (Apr 22, 2021)

  • Typical bugfix release. Python 3.9 support in windows.

New in VapourSynth r51 RC 2 (Jul 28, 2020)

  • Fix cache shrinking oversight

New in VapourSynth r51 RC 1 (Jul 26, 2020)

  • Fix node skipping adding the parent and not the actual to be locked node

New in VapourSynth r50 (Jun 8, 2020)

  • updated zimg to latest v2.9 so grayscale colorspace are supported
  • fixed several minor issues related to path handling in vsrepo
  • added version and api_version to python module to make detecting version mismatches easier
  • improved rounding in averageframes (sekrit-twc)
  • fixed averageframes not properly rejecting more than 31 weights or nodes
  • fixed crash in textfilter line wrapping introduced in r49 (sekrit-twc)
  • fixed regression introduced in r48 where expr, sobel and prewitt wouldn't clamp 9-15 bit output to valid range (sekrit-twc)
  • fixed crash due to null pointer dereference when instantiation many vapoursynth classes directly in python
  • fixed regression in r49 where the python dll could only be located when in the PATH on windows

New in VapourSynth r50 RC 2 (Jun 8, 2020)

  • Merge pull request #566 from stuxcrystal/patch-14
  • Add PEP8-compatibility for parameter-keyword-collisions

New in VapourSynth r50 RC 1 (Apr 27, 2020)

  • Bug fixes only

New in VapourSynth r49 (Mar 27, 2020)

  • Updated to python 3.8 on windows
  • Updated visual studio 2019 runtime version
  • Updated zimg and added support for spline64 resize method
  • Fixed transfer characteristics not being applied to gray format clips (sekrit-twc)
  • Fixed vdecimate bugs when compiled on systems where char is unsigned by default
  • Fixed a regression introduced in r48 in that could sometimes cause corrupt output from expr on cpus without sse4.1 (sekrit-twc)
  • Fixed a savestring bug in avscompat (sekrit-twc)
  • Interleave, selectevery and separate fields now have a modify_duration argument to determine if they modify frame durations and fps
  • Addborders and crop now update the _fieldbased attribute properly when an odd number of lines are cut from the top
  • Fixed add to path not working for single user installs
  • Fixed compilation on non-x86 systems
  • Fixed an infinite loop in the expr filter optimizer that was introduced in r48 (sekrit-twc)

New in VapourSynth r49 RC2 (Mar 20, 2020)

  • Update visual studio runtimes to 16.5 version
  • Update changelog

New in VapourSynth r48 (Mar 1, 2020)

  • Lots of AVX2 optimizations

New in VapourSynth r48 RC6 (Oct 24, 2019)

  • Fix more expr bugs

New in VapourSynth r48 RC3 (Oct 22, 2019)

  • Fix Expr code generation for subtraction

New in VapourSynth r47.2 (Aug 16, 2019)

  • Fixes merge sse2 intrinsics that had a typo introduced in R47

New in VapourSynth r46 (Jun 28, 2019)

  • Just some more maintenance and windows installer improvements

New in VapourSynth r45 (Oct 21, 2018)

  • Maintenance as usual

New in VapourSynth r44 (Jul 14, 2018)

  • Maintenance release

New in VapourSynth r43 (Feb 1, 2018)

  • Fix all remaining regressions from R41, should be back to stable releases again

New in VapourSynth r42.1 (Jan 16, 2018)

  • Fixed a crash in the new transpose code

New in VapourSynth r42 (Jan 15, 2018)

  • Fix regressions in R41

New in VapourSynth r41 (Jan 10, 2018)

  • 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

New in VapourSynth r40 (Nov 10, 2017)

  • Avisynth+ compatibility and various fixes

New in VapourSynth r39 (Oct 8, 2017)

  • Release highlights:
  • 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
  • Breaking changes:
  • 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.

New in VapourSynth r39 Test 4 (Sep 26, 2017)

  • I miscompiled test3 so that's why it didn't work. That's what happens when you have to reinstall everything on a new computer...

New in VapourSynth r39 Test 3 (Sep 26, 2017)

  • Now with one more resizer fix

New in VapourSynth r39 Test 2 (Sep 26, 2017)

  • Should fix the resizing errors

New in VapourSynth r39 Test 1 (Aug 27, 2017)

  • fixed missing fps correction in avisource that would produce an error with some files
  • switched to nasm as the assembler
  • updated to zimg v2.6
  • 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)

New in VapourSynth r38 (Jun 6, 2017)

  • Possibly breaking changes:
  • ImageMagick7 is now required for the imwri plugin
  • Visual Studio 2017 is now officially required to build on windows

New in VapourSynth r37 (Mar 22, 2017)

  • R37 has been released. It’s mostly just a collection of bug fixes. Ironically the Avisynth 2.6 API was the cause of several of them in AVFS. Expect a long rant about this later.

New in VapourSynth r36 (Jan 23, 2017)

  • Python improvements and bug fixes

New in VapourSynth r34 (Oct 15, 2016)

  • Optimizes several core functions, improves virtual filesystem support and fixes all known R33 regressions

New in VapourSynth r33.1 (Aug 24, 2016)

  • Already a new release because I created a memory leak in filters like Invert and Binarize.

New in VapourSynth r33 (Aug 24, 2016)

  • R33 – A Somewhat Experimental Release. What’s to experimental in this release you ask? Basically all the code got modified. Everywhere. To re-factor and optimize things.
  • The most important improvements are:
  • 8-bit and 16-bit integer and float support in all core functions where it makes sense
  • Many commonly used core functions were optimized (Median, Minimum, Maximum, Inflate, Deflate, Convolution)
  • The internal resizers can now have the active region set to achieve things like subpixel shifts
  • VSFS was removed and replaced by AVFS, this AVFS version works with both VapourSynth and Avisynth and has all the latest changes
  • The Python installation to use can now be selected in the installer
  • Release builds are now mostly compiled with clang-cl for improved speed
  • There are also a few important compatibility related changes from previous versions:
  • AVFS works very differently from VSFS (command line vs shell integration) but can still accomplish more or less the same thing
  • PlaneStats function had the MinMax property split into separate Min and Max
  • GenericFilters is no longer included because the core functions plus the TCanny plugin can now replace 99% of its uses
  • AssVapour was renamed to SubText and uses the sub namespace now

New in VapourSynth r32 (Apr 9, 2016)

  • Resizing improvements and bug fixes

New in VapourSynth r31 (Mar 4, 2016)

  • Resizing and installer fixes

New in VapourSynth r30 (Mar 4, 2016)

  • Resizing fixes, Avisynth 2.6 support and a portable windows version

New in VapourSynth r29 (Mar 4, 2016)

  • Fancier resizing and regression fixes

New in VapourSynth r27 (May 14, 2015)

  • 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.

New in VapourSynth r26 (Jan 28, 2015)

  • 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).

New in VapourSynth r25 (Nov 25, 2014)

  • 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

New in VapourSynth r24 (Aug 16, 2014)

  • 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

New in VapourSynth r23 (Mar 12, 2014)

  • 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.

New in VapourSynth r22 (Dec 11, 2013)

  • 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

New in VapourSynth r21 (Oct 30, 2013)

  • It’s once again time for a release. This release can mostly be described as a big bugfix one. Mostly taking care of some bugs introduced in R20 (which is no longer linked since R19 is better to use when testing if things work in a previous version). Anyway, the main new features are
  • FrameEval – A nice and convenient way to do almost any per frame operation conceivable
  • RemoveGrain/Repair — Now ported to be native plugins
  • Text – A very handy function to print text for debug purposes
  • There are also plenty of small improvements such as error messages being printed on VFW error clips, optimizations of common functions and fixes here and there
  • For R22 the long C++11 migration will start. The ultimate goal is to remove the dependency on Qt completely but that will most likely take over a year to accomplish. As a short term goal writing more filters is my priority

New in VapourSynth r20 (Oct 30, 2013)

  • About 3 months since the last release and another one is ready. The main news are plugin auto-loading on every OS. The other big change is that invoking a function per frame is possible. This mean that every Avisynth script in existence can now be converted to VapourSynth. It’s also possible to make interesting new ones…
  • Other notable fixes:
  • Opening a VapourSynth script inside a VapourSynth script now works
  • Cache size adjustment should work better now
  • Requesting an error frame twice no longer causes a deadlock
  • Addborders /Blankclip now default to black background color instead of the “zero memory pink”
  • No more crashes when Avisynth plugins are passed a colorspace Avisynth 2.5 doesn’t support
  • The core is mostly complete now (I always keep saying this until I remember something that’s missing). What’s left is mostly some code cleanup and merging simple text drawing into the core. Feel free to take a look at the bug tracker for some simple coding tasks to do. Especially adding constant folding to the Expr filter is a good starter task.

New in VapourSynth r19 (Jul 31, 2013)

  • The main new features in R19 are:
  • VSScript – a simple API to use when embedding VapourSynth
  • Ported to work on arm and powerpc
  • Improvements to threading – Avisynth filters can no longer deadlock in rare circumstances
  • A consistent way to output clips in vsfs/vfw/command-line
  • Piles of bugfixes

New in VapourSynth r19 RC 2 (Jul 29, 2013)

  • 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

New in VapourSynth r18 (Jul 29, 2013)

  • This is a big bug fix release and officially brings the core of VapourSynth to beta quality. Less memory will be leaked and pressing F2 in VirtualDub is no longer the fastest way to run out of address space and crash.
  • There are only a few more things to add and change but the goal is getting closer. Report any bug you find no matter how small it is. The focus of the next release will be on performance and I’m interested in all speed comparisons between VapourSynth and Avisynth, especially the single threaded versions.
  • You should also check out Chikuzen’s GenericFilters which implement almost all missing features from masktools that aren’t already present in the core. This has made it possible to port a few more scripts to be fully native.
  • If you’re curious about the future direction and changes go check out the bug tracker. I use it as a place to write down most planned enhancements as well and scribble a row or two about it. I have also been commissioned to make an image writer plugin based on ImageMagick so that will most likely show up before R19