Skip to content

Releases: pinterf/AviSynthPlus

Avisynth+ v3.7.6pre-r4529 test build

20 Feb 21:22

Choose a tag to compare

Pre-release

Actual:
https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/changelist376.html

20260220 3.7.5.r4529 (pre 3.7.6)

20260216 3.7.5.r4523 (pre 3.7.6)

  • Fix r4504 regression YUV->RGBP bit-depth changing full-scale SSE2/AVX2 bug (exchanged G,B storage)
  • "Layer" YUV mul/add/subtract/lighten/darken: refactor chroma placement calculation, allowing SIMD optimization in the main frame processing
  • "Layer" YUV/RGBP mul/add/subtract/lighten/darken: refactor function dispatchers, add AVX2 path (LLVM/clangcl recommended)
  • Fix C-only vertical resampling code which added more rounding than needed (regression since pre-3.7.5 20250427)
  • Invert: per-plane processing for planar formats, use C even in AVX2, proper chroma inversion
  • New: AddAlphaPlane opacity parameter
  • New: ResetMask opacity parameter
  • rstdoc: document "opacity" in AddAlphaPlane and ResetMask
  • rstdoc: detail Layer "use_chroma" and opacity
  • Overlay "Blend": more speed, but keep accuracy, use float only where really needed
  • Layer: use YV16 internally for YUY2 (lessen source code bloat)

v3.7.6pre-r4523

16 Feb 19:45

Choose a tag to compare

v3.7.6pre-r4523 Pre-release
Pre-release

For online documentation check https://avisynthplus.readthedocs.io/en/latest/

Actual:
https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/changelist376.html

20260216 3.7.5.r4523 (pre 3.7.6)

  • Fix r4504 regression YUV->RGBP bit-depth changing full-scale SSE2/AVX2 bug (exchanged G,B storage)
  • "Layer" YUV mul/add/subtract/lighten/darken: refactor chroma placement calculation, allowing SIMD optimization in the main frame processing
  • "Layer" YUV/RGBP mul/add/subtract/lighten/darken: refactor function dispatchers, add AVX2 path (LLVM/clangcl recommended)
  • Fix C-only vertical resampling code which added more rounding than needed (regression since pre-3.7.5 20250427)
  • Invert: per-plane processing for planar formats, use C even in AVX2, proper chroma inversion
  • New: AddAlphaPlane opacity parameter
  • New: ResetMask opacity parameter
  • rstdoc: document "opacity" in AddAlphaPlane and ResetMask
  • rstdoc: detail Layer "use_chroma" and opacity
  • Overlay "Blend": more speed, but keep accuracy, use float only where really needed
  • Layer: use YV16 internally for YUY2 (lessen source bloat)

20260213 3.7.5.r4507 (pre 3.7.6)

Fix Layer "add" 8 bit, regression in r4504

20260212 3.7.5.r4504 (pre 3.7.6)

  • Fix: inaccurate ColorBarsHD 10+ bit values. Now they are derived from the 32-bit float
    RGB definitions instead of upscaling a 8 bit precalculated YUV value.
    Add Ramp section the lead-in-lead-out.
  • Fix: GreyScale + SSE2 + RGB32 + matrix="RGB" overflow.
    Rare usage; "RGB" matrix (Identity) uses a 1.0 coefficient which exceeds the signed 16-bit
    SIMD limit of 32767 at 15-bit precision. Added bounds checking to fallback to C-code for any
    coefficients >= 1.0 or < −1.0.
  • Fix: YUV->RGB limited range matrix accuracy for 10-16 bits.
  • Use a different rounding in matrix coefficient's integer approximation.
  • "ConvertToPlanarRGB": bits parameter: on-the-fly bit-depth conversions to YUV->RGB conversion.
    • Full range target: 8-16 bits internal calculation is in 32-bit float.
    • Limited range target: a quicker, bit accuracy optimized integer calculation path.
  • Not Fixed: Speed degradation when in-constructor GetFrame(0) (e.g. frame-property getter)
    is used. Disable internal Cache object creation. Does not work in complex scripts, preparation
    is 5-10 min instead of <1 sec. Investigation continues (Issue AviSynth#476: AviSynth#476)
  • Avoid MTGuard and CacheGuard creation if filter returns one of its clip parameter unaltered.
  • Add some avx2 stuff to Layer and Invert
  • Optimization: Overlay "Blend": aarch64 NEON optimization

Avisynth+ v3.7.6pre-r4507 test build

12 Feb 14:41

Choose a tag to compare

Pre-release

(r4504 test replaced with r4507, Reason: "Layer" "add" 8 bit case regression)

Actual:
https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/changelist376.html

20260213 3.7.5.r4507 (pre 3.7.6)

Fix Layer "add" 8 bit, regression in r4504

20260212 3.7.5.r4504 (pre 3.7.6)

  • Fix: inaccurate ColorBarsHD 10+ bit values. Now they are derived from the 32-bit float
    RGB definitions instead of upscaling a 8 bit precalculated YUV value.
    Add Ramp section the lead-in-lead-out.
  • Fix: GreyScale + SSE2 + RGB32 + matrix="RGB" overflow.
    Rare usage; "RGB" matrix (Identity) uses a 1.0 coefficient which exceeds the signed 16-bit
    SIMD limit of 32767 at 15-bit precision. Added bounds checking to fallback to C-code for any
    coefficients >= 1.0 or < −1.0.
  • Fix: YUV->RGB limited range matrix accuracy for 10-16 bits.
  • Use a different rounding in matrix coefficient's integer approximation.
  • "ConvertToPlanarRGB": bits parameter: on-the-fly bit-depth conversions to YUV->RGB conversion.
    • Full range target: 8-16 bits internal calculation is in 32-bit float.
    • Limited range target: a quicker, bit accuracy optimized integer calculation path.
  • Not Fixed: Speed degradation when in-constructor GetFrame(0) (e.g. frame-property getter)
    is used. Disable internal Cache object creation. Does not work in complex scripts, preparation
    is 5-10 min instead of <1 sec. Investigation continues (Issue AviSynth#476: AviSynth#476)
  • Avoid MTGuard and CacheGuard creation if filter returns one of its clip parameter unaltered.
  • Add some avx2 stuff to Layer and Invert
  • Optimization: Overlay "Blend": aarch64 NEON optimization

20260203 3.7.5.r4483 (pre 3.7.6)

  • rst documentation update: RGBAdjust https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/adjust.html
  • rst documentation update: ColorYUV https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/coloryuv.html
  • optimization: add AVX2 TurnLeft/TurnRight/Turn180 (R/L: 1,5-3x speed).
  • optimization: ConvertBits AVX2 integer->float
  • optimization: ConvertToPlanarRGB(A): YUV->RGB add AVX2 (2-3x speed)
  • optimization: ConvertToPlanarRGB(A): YUV->RGB 16 bit: a quicker way (1,5x)
  • Fix: C version of 32-bit ConvertToPlanarRGB YUV->RGB to not clamp output RGB values.
  • ConvertToPlanarRGB(A): add bits parameter to alter target bit-depth.
  • ConvertToPlanarRGB(A): from YUV->RGB full range output: optimized in-process when bits=32, other cases call ConvertBits internally.
  • Fix: Packed RGB conversions altering the bit-depth (e.g. rgb32->ConvertToRGB64() worked always in full range.
  • Add more AVX512 resampler code. (WIP)
  • Add more AVX512_BASE code paths (Resamplers)
  • Build: add _avx512b.cpp/hpp pattern in CMake to detect source to compile with base (F,CD,BW,DQ,VL) flags.
    However AVX512_BASE itself is set only when AVX512_FAST found.
    For pre-Ice Lake (older AVX512) systems you can enable it with SetMaxCPU("avx512base+") and get the optimized AVX512_BASE functions.
  • Build: add new architecture z/Architecture

Avisynth+ v3.7.6pre-r4483 test build

03 Feb 08:12

Choose a tag to compare

Pre-release

20260203 3.7.5.r4483 (pre 3.7.6)

  • rst documentation update: RGBAdjust https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/adjust.html
  • rst documentation update: ColorYUV https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/coloryuv.html
  • optimization: add AVX2 TurnLeft/TurnRight/Turn180 (R/L: 1,5-3x speed).
  • optimization: ConvertBits AVX2 integer->float
  • optimization: ConvertToPlanarRGB(A): YUV->RGB add AVX2 (2-3x speed)
  • optimization: ConvertToPlanarRGB(A): YUV->RGB 16 bit: a quicker way (1,5x)
  • Fix: C version of 32-bit ConvertToPlanarRGB YUV->RGB to not clamp output RGB values.
  • ConvertToPlanarRGB(A): add bits parameter to alter target bit-depth.
  • ConvertToPlanarRGB(A): from YUV->RGB full range output: optimized in-process when bits=32, other cases call ConvertBits internally.
  • Fix: Packed RGB conversions altering the bit-depth (e.g. rgb32->ConvertToRGB64() worked always in full range.
  • Add more AVX512 resampler code. (WIP)
  • Add more AVX512_BASE code paths (Resamplers)
  • Build: add _avx512b.cpp/hpp pattern in CMake to detect source to compile with base (F,CD,BW,DQ,VL) flags.
    However AVX512_BASE itself is set only when AVX512_FAST found.
    For pre-Ice Lake (older AVX512) systems you can enable it with SetMaxCPU("avx512base+") and get the optimized AVX512_BASE functions.
  • Build: add new architecture z/Architecture

Avisynth+ v3.7.6pre-r4439 test build - incl. Win7 build

07 Jan 18:31

Choose a tag to compare

20260107 3.7.5.r4439 (pre 3.7.6)

  • add AVX512 code path (tuning by DTL2020)

    • 32-bit float resamplers, verticals; horizontals up to kernel size 16.

    • 8-16-bit horizontal resamplers,

      • kernel size <= 4 and specific ratios; 300%+ !!
      • kernel sizes up to 8 and 16 and specific ratios.
    • 8-16-bit vertical resamplers

For online documentation, please check https://avisynthplus.readthedocs.io/en/latest/
https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/changelist376.html

Note for Windows 7 compatibility builds:

Avisynth+ v3.7.6pre-r4430 test build - incl. Win7 compatibility-test versions

05 Jan 09:23

Choose a tag to compare

20260105 3.7.5.r4430 (pre 3.7.6)

  • add AVX512 code path to 8-16-bit horizontal resamplers, having kernel size <= 4 and specific ratios (DTL) 300%+ !!
  • More Aarch64 (ARM64) NEON:
    • add I8MM and SVE2_1 feature flags
    • add NEON optimization to TurnLeft/Right/180

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