Skip to content

Releases: pinterf/AviSynthPlus

Avisynth+ v3.7.6pre-r4403 test build

26 Dec 08:59

Choose a tag to compare

Pre-release

20251225 3.7.5.r4403 (pre 3.7.6)

  • Fix: The Animate() function now explicitly clamps interpolated values to ensure they remain
    strictly between the start and end range. Due to the high precision of 64-bit double introduced
    in v3.7.5, intermediate calculations could slightly exceed the boundary (e.g., 360.00000000000006
    when interpolating from 0 to 360.0 in 564 steps), requiring this clamp to prevent out-of-range errors.

Avisynth+ v3.7.6pre-r4400 test build

23 Dec 19:26

Choose a tag to compare

Pre-release

20251223 3.7.5.r4400 (pre 3.7.6)

  • AVX512 float resampler additions, optimize horizontal (kernelsize <= 8), add code for vertical (DTL2020)
  • Fix an ApplyMessage regression not recognizing '\n' line ends of Authors.avs (since 20250831)

XP build still exist.
Non-XP version is built with clangcl (LLVM).
Windows 7 not supported.
Needs fresh VC14 redistributables. Get latest V14 redist is from here (permalink to the .exe):
https://aka.ms/vc14/vc_redist.x64.exe

Avisynth+ v3.7.6pre-r4392 test build

20 Dec 14:13

Choose a tag to compare

Pre-release

20251220 3.7.5.r4392 (pre 3.7.6)

  • "Info": Optimize AVX512 features display, group features, make a bit more compact
  • "Info": add L2 cache size display
  • "SetMaxCPU": add "avx512base" and "avx512fast" options to enable/disable AVX512 grouped features. see SetMaxCPU .
  • ARM64 (aarch64) area:
    • "Info": add ARMV8-A features display (NEON, DOTPROD, SVE2)
    • Add ArmV8-A cpu feature detection (NEON, DOTPROD, SVE2) on ARM64 Windows/Linux/macOS builds. On Windows, only up-to DOTPROD can be detected due to OS limitations.
    • New CPU flags in cpuid.h and avisynth_c.h: CPUF_ARM_NEON, CPUF_ARM_DOTPROD, CPUF_ARM_SVE2
    • "SetMaxCPU": add "neon", "dotprod", "sve2" options to enable/disable ARM64 (aarch64) features.
  • New CPU flags: cpuid.h and ``avisynth_c.h - added AVX512 group feature flags CPUF_AVX512_BASE and CPUF_AVX512_FAST (Ice Lake, usable AVX-512 since that point). - added many new AVX512 individual feature flags - added ARM64 feature flags CPUF_ARM_NEON, CPUF_ARM_DOTPROD, CPUF_ARM_SVE2 - CPUF_xxxxx flags are now 64 bit, replace enum with constexpr.
  • CMakeLists.txt: avx512 compile flag support for gcc/clang ("fast" Ice Lake-like feature set).
  • V13 interface: GetCPUFlagsEx returning 64 bit flags (too many AVX512 subfeatures to fit in 32 bit). C interface: avs_get_cpu_flags_ex. see GetCPUFlagsEx and GetCPUFlags
  • V13 interface: L2 cache size query support. New entry in AvsEnvProperty: AEP_CACHESIZE_L2 (C++), AVS_AEP_CACHESIZE_L2 (C) to query L2 cache size in bytes with IScriptEnvironment->GetEnvProperty(). x86/x64 architecture only for now. See AvsEnvProperty .
  • Refactor CMakeLists.txt:
    • Correct default of ENABLE_INTEL_SIMD for cross-compiling scenarios (e.g. ARM64 target on x86_64 host) Old logic relied on the host processor: ${CMAKE_SYSTEM_PROCESSOR}
    • Add back option to compile ARM64 builds with Visual Studio on Windows. On VS2026 even clangcl (LLVM) is supported out-of-box for ARM64 platform, easily cross-compilable way from an x64 machine.
    • VDubFilter: allow building on Windows only x86/x64 targets (and not for ARM64).
    • Fix LLVM/clangcl/Intel ICX compile warning: 'WIN32' macro redefined as "#define WIN32 /D_WINDOWS /W3 /GR /EHsc 1 ", when CMake injects a command-line macro wrongly and thus redefines WIN32 . The fix: converts global add_definitions("/D ...") and other option string magics into per-target target_compile_definitions() and target_compile_options(). Thus removing the accidental injection of ${CMAKE_CXX_FLAGS} into add_compile_options(), and prevents the WIN32 macro redefinition.
  • Change video-framebuffer over-allocation from 16 to 64 bytes. Allocate 64 bytes more than needed for video frame buffer in order to be able to read 64 bytes safely with AVX512 without risking access violation on the last pixels of the frame.
  • rst docs
    • Update GetCPUFlags, add GetCPUFlagsEx
    • Update CPU Feature Flags with AVX512 and ARM64 features
    • Update SetMaxCPU with AVX512 and ARM64 features
    • Update AvsEnvProperty with L2 cache size entry
    • Update Russian GPL notice in UTF-8 format

Avisynth+ v3.7.6pre-r4356 test build

30 Nov 20:16

Choose a tag to compare

Pre-release

Avisynth+ v3.7.6pre-r4356 test build

Since last week:

  • add AVX512 VNNI flag
  • make Info() more compact when displaying AVX512 flags.
  • optimize horizontal 32-bit float small (<=4) kernel size
  • optimize 32-bit float vertical avx2
  • Add mechanism (cache hint) to inform a filter about the effective number of threads when Prefetch is called.

Check full change list here:
https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/changelist376.html

Avisynth+ v3.7.6pre-r4335 test build

22 Nov 21:48

Choose a tag to compare

Pre-release

This build was created with Visual Studio 2026, which seemingly still has the v141_xp toolset. We'll see.
Non-XP builds are LLVM 20.1 (clang-cl option), which comes along with the actual VS2026 installation (November 2025)

Avisynth+ 3.7.4 filesonly + Intel 2025 ICX builds

25 Mar 08:30
424707f

Choose a tag to compare

AviSynth+ 3.7.4 with unofficial additional builds, "filesonly" edition.

Surely, we don't want to officially support so many different kind of compiler sugar.
I provide there builds as-is (and is good for a reference build for myself for developing and benchmarking).

LLVM is not magic, they are not necessarily quicker than MSVC builds, sometimes are slower.

This is true for these AVX2 vs SSE4.2 builds, where sometimes the SSE4.2 version provides 25% quicker code from unoptimized C source than the AVX2 counterpart. But in other use cases AVX2 is much faster.

So it depends; evaluate for your favourite script and decide. If you cannot decide, stuck with the official files at https://github.com/AviSynth/AviSynthPlus/releases/tag/v3.7.4

Added:
Intel C++ Compiler 2025 (ICX - LLVM based) Windows x64 builds with two compiler options: SSE4.2, AVX2.

Note, that as an extra, only avisynth.dll is provided.

Avisynth+ 3.7.3+ r4269. 64 bit data types, v11 API, and more

06 Feb 10:35

Choose a tag to compare

This is not the official Avisynth+ release site, but due to recent significant changes, I am releasing this test version publicly.

Changes Include:

  • Addition of 64-bit integer and floating point types

  • New script functions and syntax additions such as

    • wildcard and regex support in frame property filtering in propCopy, propDelete, propShow
    • Info and propShow align, and positioning
    • "break" and "continue" in for-next and while loops
    • ArraySort
    • SubTitle to handle in-string LF automatically for multiline
    • Expr C path speedup, implement tan for fast JITasm
    • Animate interpolation by external function
    • Resizers "force" parameter, GaussResize new parameters
    • new filter MultiOverlay
    • AddBorders and LetterBox: transient area filtering option
    • rewritten resizers:
      • memory overread fix
      • no size limit ("image height is too small for this resizing method" errors are gone)
      • Fix artifacts on boundaries.
      • respect chroma location (fixed chroma shift on downsize with non-centerer chroma locations)
      • new placement and keep_center parameters
      • C-only version a bit more vectorizable by smart compilers
  • C++ and C API V11 (check FilterSDK for libraries and headers)

Please review the change list here:

https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/changelist374.html
https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/FilterSDK/FilterSDK.html#what-s-new-in-the-api-v11

Test DLLs were compiled with Visual Studio 2022 and can run on XP up to Windows 11. The Imageseq and DirectShowSource plugins were copied from an earlier release, but theoretically, they have not changed.

Intel icx version was compiled

  • with static Intel extra libraries, no Intel redist is needed (unlike at the r4193 test).
  • no optional secondary code paths (unlike r4610 and some before)

Provide feedback at:
https://github.com/AviSynth/AviSynthPlus

or doom9 forum at

https://forum.doom9.org/showthread.php?t=181351&page=149

Avisynth+ r2772-MT

20 Dec 13:27

Choose a tag to compare

Avisynth+ r2772 (20181220)

https://forum.doom9.org/showthread.php?t=168856

  • Fix: Expr: possible Expr x64 crash under specific memory circumstances (AVX2 only)
  • Fix: Expr: safer code for internal variables "Store and pop from stack" (see: Internal variables at http://avisynth.nl/index.php/Expr)

Avisynth+ r2768 (20181218)

  • New: Expr: allow input clips to have more planes than an implicitely specified output format
    Expr(aYV12Clip, "x 255.0 /", format="Y32") # target is Y only which needs only Y plane from YV12 -> no error
  • New: Expr: Y-plane-only clip(s) can be used as source planes when a non-subsampled (rgb or 444) output format implicitely specified
    Expr(Y, "x", "x 2.0 /", "x 3.0 /", format="RGBPS") # r, g and b expression uses Y plane
    Expr(Grey_r, Grey_g, Grey_b, "x", "y 2.0 /", "z 3.0 /", format="RGBPS") # r, g and b expression uses Y plane
  • Fix: ConvertToYUY2() error message for non-8 bit sources.
  • Fix: Y32 source to 32 bit 420,422,444 (introduced in big the zero-chroma-center transition)
  • Fix: ShowY, ShowU, ShowV crash for YUV (non-YUVA) sources
  • Speedup: ConvertToY12/16... for RGB or YUY2 sources where 4:4:4 or YV16 intermediate clip was used internally
    (~1.5-2x speed, was a regression in Avs+, use intermediate cache again)
  • Fix: Allow ExtractY on greyscale clips
  • ImageReader/ImageSource: use cache before FreezeFrame when result is a multiframe clip (fast again, regression since an early AVS+ version)
  • Resizers: don't use crop at special edge cases to avoid inconsistent results across different parameters/color spaces
  • Fix: Histogram 'classic': rare incomplete histogram shown in multithreading environment
  • Fix: ImageReader and ImageWriter: if path is "" then it works from/to the current directory.
  • GeneralConvolution: Allow 7x7 and 9x9 matrices (was: 3x3 and 5x5)
  • GeneralConvolution: All 8-32 bit formats (was: RGB32 only): YUY2 is converted to/from YV16, RGB24/32/48/64 are treated as planar RGB internally
    Since 32 bit float input is now possible, matrix elements and bias parameter now is of float type.
    For 8-16 bit clips the matrix is converted to integer before use.
  • GeneralConvolution: Allow chroma subsampled formats to have their luma or chroma processed. E.g. set chroma=false for a YV12 input.
  • GeneralConvolution: new parameters: boolean luma (true), boolean chroma(true), boolean alpha(true)
    Default: process all planes. For RGB: luma and chroma parameters are ignored.
    Unprocessed planes are copied. Using alpha=false makes RGB32 processing faster, usually A channel is not needed.
  • GeneralConvolution: MT friendly parameter parsing
  • New: UTF8 filename support in AviSource, AVIFileSource, WAVSource, OpenDMLSource and SegmentedAVISource
    All functions above have a new bool utf8 parameter. Default value is false.
  • Experimental: new syntax element (by addewyd): assignment operator ":=" which returns the assigned value itself.
    (Assignment within an expression)

Avisynth+ r2768-MT

18 Dec 17:19

Choose a tag to compare

Avisynth+ r2768 (20181218)

https://forum.doom9.org/showthread.php?t=168856

  • New: Expr: allow input clips to have more planes than an implicitely specified output format
    Expr(aYV12Clip, "x 255.0 /", format="Y32") # target is Y only which needs only Y plane from YV12 -> no error
  • New: Expr: Y-plane-only clip(s) can be used as source planes when a non-subsampled (rgb or 444) output format implicitely specified
    Expr(Y, "x", "x 2.0 /", "x 3.0 /", format="RGBPS") # r, g and b expression uses Y plane
    Expr(Grey_r, Grey_g, Grey_b, "x", "y 2.0 /", "z 3.0 /", format="RGBPS") # r, g and b expression uses Y plane
  • Fix: ConvertToYUY2() error message for non-8 bit sources.
  • Fix: Y32 source to 32 bit 420,422,444 (introduced in big the zero-chroma-center transition)
  • Fix: ShowY, ShowU, ShowV crash for YUV (non-YUVA) sources
  • Speedup: ConvertToY12/16... for RGB or YUY2 sources where 4:4:4 or YV16 intermediate clip was used internally
    (~1.5-2x speed, was a regression in Avs+, use intermediate cache again)
  • Fix: Allow ExtractY on greyscale clips
  • ImageReader/ImageSource: use cache before FreezeFrame when result is a multiframe clip (fast again, regression since an early AVS+ version)
  • Resizers: don't use crop at special edge cases to avoid inconsistent results across different parameters/color spaces
  • Fix: Histogram 'classic': rare incomplete histogram shown in multithreading environment
  • Fix: ImageReader and ImageWriter: if path is "" then it works from/to the current directory.
  • GeneralConvolution: Allow 7x7 and 9x9 matrices (was: 3x3 and 5x5)
  • GeneralConvolution: All 8-32 bit formats (was: RGB32 only): YUY2 is converted to/from YV16, RGB24/32/48/64 are treated as planar RGB internally
    Since 32 bit float input is now possible, matrix elements and bias parameter now is of float type.
    For 8-16 bit clips the matrix is converted to integer before use.
  • GeneralConvolution: Allow chroma subsampled formats to have their luma or chroma processed. E.g. set chroma=false for a YV12 input.
  • GeneralConvolution: new parameters: boolean luma (true), boolean chroma(true), boolean alpha(true)
    Default: process all planes. For RGB: luma and chroma parameters are ignored.
    Unprocessed planes are copied. Using alpha=false makes RGB32 processing faster, usually A channel is not needed.
  • GeneralConvolution: MT friendly parameter parsing
  • New: UTF8 filename support in AviSource, AVIFileSource, WAVSource, OpenDMLSource and SegmentedAVISource
    All functions above have a new bool utf8 parameter. Default value is false.
  • Experimental: new syntax element (by addewyd): assignment operator ":=" which returns the assigned value itself.
    (Assignment within an expression)

Avisynth+ r2728-MT

02 Jul 13:16

Choose a tag to compare

Avisynth+ r2728 (20180702)

https://forum.doom9.org/showthread.php?t=168856

  • Fix: Expr: expression string order for planar RGB is properly r-g-b like in original VapourSynth version, instead of counter-intuitive g-b-r.
  • Fix: Expr: check subsampling when a different output pixel format is given
  • Fix: ColorYUV: round to avoid green cast on consecutive TV<>PC
  • Fix: RGBAdjust memory leak when used in ScriptClip
  • Fix: RGB64 Turnleft/Turnright (which are also used in RGB64 Resizers)
  • Fix: Rare crash in FrameRegistry
  • Fix: couldn't see variables in avsi before plugin autoloads (colors_rgb.avsi issue)
  • Fix: LoadVirtualdubPlugin: Fix crash on exit when more than one instances of a filter was used in a script
  • New: Expr: implement 'clip' three operand operator like in masktools2
  • New: Expr: Parameter "clamp_float" (like in masktools2 2.2.15)
  • New: Expr: parameter "scale_inputs" (like in masktools2 2.2.15)
  • New: function bool VarExist(String variable_name)
  • New function: BuildPixelType:
    Creates a video format (pixel_type) string by giving a colorspace family, bit depth, optional chroma subsampling and/or a template clip, from which the undefined format elements are inherited.
  • Enhanced: Limiter to work with 32 bit float clips
  • Enhanced: Limiter new parameter bool 'autoscale' default false, parameters now are of float type to handle 32 bit float values.
  • Enhanced: RGBAdjust new parameter: conditional (like in ColorYUV)
    The global variables "rgbadjust_xxx" with xxx = r, g, b, a, rb, gb, bb, ab, rg, gg, bg, ag are read each frame, and applied.
  • Enhanced: RGBAdjust: support 32 bit float ('analyze' not supported, 'dither' silently ignored)
  • Enhanced: AviSource to support much more formats with 10+ bit depth.
  • Changed (finally): 32bit float YUV colorspaces: zero centered chroma channels.
    U and V channels are now -0.5..+0.5 (if converted to full scale before) instead of 0..1
  • New function: bool IsFloatUvZeroBased() for plugin or script writers who want to be compatible with pre r2672 Avisynth+ float YUV format:
  • Enhanced: Allow ConvertToRGB24-32-48-64 functions for any source bit depths
  • Enhanced: ConvertBits: allow fulls-fulld combinations when either clip is 32bits
    E.g. after a 8->32 bit fulls=false fulld=true:
    Y: 16..235 -> 0..1
    U/V: 16..240 -> -0.5..+0.5
    Note: now ConvertBits does not assume full range for YUV 32 bit float.
    Default values of fulls and fulld are now true only for RGB colorspaces.
  • New: LoadVirtualdubPlugin update: Update from interface V6 to V20, and Filtermod version 6 (partial)
  • Source: move to c++17, 'if constexpr' requires. Use Visual Studio 2017 (or GCC 7?). CMakeLists.txt changed.
  • Source: C api: AVSC_EXPORT to dllexport in capi.h for avisynth_c_plugin_init
  • Source: C api: avs_is_same_colorspace VideoInfo parameters to const
  • Project struct: changelog to git.
  • Include current avisynth header files and def/exp file in installer, when SDK is chosen

Avisynth+ r2664 (20180328)

Fix

YUY2 Sharpen overflow artifacts - e.g. Sharpen(0.6)
Levels: 32 bit float shift in luma
Merge sse2 for 10-14bits (regression)
AVX2 resizer possible access violation in extreme resizes (e.g. 600->20)
32bit float PlanarRGB<->YUV conversion matrix
VfW: fix b64a output for OPT_Enable_b64a=true

Enhanced

VfW output P010 and P016 conversion to SSE2 (VfW output is used by VirtualDub for example)
ColorYUV: recalculate 8-16 bit LUT in GetFrame only when changed frame-by-frame (e.g. in autowhite)
ConvertBits 32->8 sse2/avx2 and 32->10..16 sse41/avx2 (8-15x speed)

Avisynth+ r2636 (20180302)

Fix

Blur/Sharpen crashed when YUY2.width<8, RGB32.width<4, RGB64.width<2
ColorYUV: don't apply TV range gamma for opt="coring" when explicit "PC->TV" is given
ColorbarsHD: 32bit float properly zero(0.5)-centered chroma

Avisynth+ r2632 (20180301)

Fix

  • Fix: IsInterleaved returned false for RGB48 and RGB64 (raffriff42)
  • Fix: SubTitle for Planar RGB/RGBA: wrong text colors (raffriff42)
  • Fix: Packed->Planar RGB conversion failed on SSE2-only computers (SSSE3 instruction used)
  • Fix: Resizers for 32 bit float rare random garbage on right pixels (simd code NaN issue)

Enhanced

  • Blur, Sharpen
    AVX2 for 8-16 bit planar colorspaces (>1.35x speed on i7-7770)
    SSE2 for 32 bit float formats (>1.5x speed on i7-7770)
  • Completely rewritten 16bit and float resizers, much faster (and not only with AVX2)
  • 8 bit resizers: AVX2 support
  • Speed up converting from RGB24/RGB48 to Planar RGB(A) - SSSE3, approx. doubled fps
  • Enhanced: VfW: exporting Y416 (YUV444P16) to SSE2.

New/Modded

  • ConvertFPS supports 10-32 bits, planar RGB(A), YUV(A)
  • New script function: int BitSetCount(int[, int, int, ...])
  • Modded script function: Hex(int , int "width"=0), new "width" parameter
  • Modded script function: HexValue(String, "pos"=1) new pos parameter
  • Modded script function: ReplaceStr(String, String, String[, Boolean "sig"=false]) New parameter: sig for case - insensitive search (Default false: exact search)
  • New script functions: TrimLeft, TrimRight, TrimAll for removing beginning/trailing whitespaces from a string.
  • New in ColorYUV: New parameter: bool f2c="false". When f2c=true, the function accepts the Tweak-like parameters for gain, gamma and contrast
  • New/Fixed in ColorYUV: Parameter "levels" accepts "TV". (can be "TV->PC", "PC->TV", "PC->TV.Y")
  • New: now gamma calculation is TV-range aware when either levels is "TV->PC" or coring = true or levels is "TV"
    New in ColorYUV: 32 bit float support.
  • ColorYUV: can specify bits=32 when showyuv=true -> test clip in YUV420PS format
  • Modded: remove obsolate "scale" parameter from ConvertBits.
  • Internal: 8-16 bit YUV chroma to 32 bit float: keep middle chroma level (e.g. 128 in 8 bits) at 0.5. Calculate chroma as (x-128)/255.0 + 0.5 and not x/255.0
    (Note: 32 bit float chroma center will be 0.0 in the future)
  • New: Histogram parameter "keepsource"=true (raffriff42) for "classic", "levels" and "color", "color2"
  • New: Histogram type "color" to accept 8-32bit input and "bits"=8,9,..12 display range
  • New: Histogram parameter "markers"=true. Markers = false disables extra markers/coloring for "classic" and "levels"