Skip to content

Releases: pinterf/AviSynthPlus

Avisynth+ v3.7.6pre-r4604 test build

18 May 08:52

Choose a tag to compare

Pre-release

Full change list: https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/changelist376.html

20260518 3.7.5.r4604 (pre 3.7.6)

  • Subtitle: add "placement" string parameter — chroma location hint for subsampled
    YUV (4:2:0, 4:2:2, 4:1:1). When gdi=true, all three siting modes are supported:
    "MPEG2"/"left" (default), "MPEG1"/"center", and "top_left" (UHD 4:2:0/4:2:2).
    Default is read from the _ChromaLocation frame property, falling back to "left".
    When gdi=false only "left" and "center" are implemented (same as Text).
  • Subtitle: add "gdi" bool parameter. When false, Subtitle uses the built-in bitmap
    font (Terminus) instead of Windows GDI rendering (same path as Text). Faster and
    cross-platform compatible; placement is then limited to "left"/"center".
    Default: true.
    See at https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/subtitle.html
  • Text: add "gdi" bool parameter (accepted, has no effect; API compatibility with
    Subtitle — on non-Windows Subtitle is aliased to Text). Default: false.
  • Subtitle Antialiaser (Windows GDI): GetAlphaRect() now has SSE4.1, AVX2, and
    AVX512 SIMD implementations.
    Internal mask buffer refactored to row-interleaved SoA layout for correct
    chroma-placement-aware UV compositing via prepare_effective_mask_for_row
    downsampling (8 MaskModes covering all subsampling ratios x siting variants;
    SIMD rowprep dispatch matching Overlay/Layer).
  • ShowCRC32: new "channels" (select planes), "mode" (0=combined, 1=per-plane), and
    "showmode" (0=display, 1=display+frameprop, 2=frameprop only) parameters;
    frame property "ShowCRC32" is an int64 array of unsigned 32-bit CRC values;
    planar RGB(A) planes always in R,G,B,A order; packed formats with default parameters
    hash the raw buffer unchanged (backward-compatible).
    See at https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/showframes.html
  • rstdoc: document Invert's chroma inversion behavior
    See at https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/invert.html

20260506 3.7.5.r4589 (pre 3.7.6)

TL;DR (since r4565):

  • Layer/Overlay/Merge: weighted and masked-merge kernels unified into a shared family (C/SSE4.1/AVX2/NEON);
    SIMD chroma-placement mask downsampling for 4:2:0/4:2:2/4:1:1 sources;
    "placement" parameter for Overlay "blend" (new) and Layer (new "top_left" option added):
    values are "mpeg2" (default), "mpeg1", "top_left".
    See at https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/layer.html

  • Layer: new "mulovr" mode (Overlay-compatible YUV multiply with luma-driven chroma desaturation);
    new "top_left" placement option; legacy MMX/iSSE removed.

  • Merge (non-masked) C/SIMD integer arithmetic unified.

  • SIMD additions: AVX2/SSE4.1/NEON float chroma-mask row preparation; AVX2 float weighted merge.

  • Further optimizations: Invert (AVX2/SSE2), ExtractX (direct packed-RGB path),
    ConvertBits int depth-reduce C loop, PlanarRGB(A)->RGB32/64 (AVX2).

  • SetFilterProp: conditional injection by filter argument value; capture mode;
    SetFilterPropPassthrough helper; GetFilterProps() diagnostics function.
    See also: AviSynth#393
    and the online documentation at https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/setfilterprop.html

  • Bug fixes: Text("\n") crash on zero-length lines; Layer no longer silently rounds odd x/y
    offsets on subsampled YUV — accepts them as-is like Overlay; ceiling formula for
    non-grid-aligned positions — last chroma column/row is no longer skipped in either filter.

Avisynth+ v3.7.6pre-r4589 test build

06 May 14:07

Choose a tag to compare

Pre-release

20260506 3.7.5.r4589 (pre 3.7.6)

TL;DR (since r4565):

  • Layer/Overlay/Merge: weighted and masked-merge kernels unified into a shared family (C/SSE4.1/AVX2/NEON);
    SIMD chroma-placement mask downsampling for 4:2:0/4:2:2/4:1:1 sources;
    "placement" parameter for Overlay "blend" (new) and Layer (new "top_left" option added):
    values are "mpeg2" (default), "mpeg1", "top_left".

  • Layer: new "mulovr" mode (Overlay-compatible YUV multiply with luma-driven chroma desaturation);
    new "top_left" placement option; legacy MMX/iSSE removed.

  • Merge (non-masked) C/SIMD integer arithmetic unified.

  • SIMD additions: AVX2/SSE4.1/NEON float chroma-mask row preparation; AVX2 float weighted merge.

  • Further optimizations: Invert (AVX2/SSE2), ExtractX (direct packed-RGB path),
    ConvertBits int depth-reduce C loop, PlanarRGB(A)->RGB32/64 (AVX2).

  • SetFilterProp: conditional injection by filter argument value; capture mode;
    SetFilterPropPassthrough helper; GetFilterProps() diagnostics function.
    See also: AviSynth#393
    and the online documentation at https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/setfilterprop.html

  • Bug fixes: Text("\n") crash on zero-length lines; Layer no longer silently rounds odd x/y
    offsets on subsampled YUV — accepts them as-is like Overlay; ceiling formula for
    non-grid-aligned positions — last chroma column/row is no longer skipped in either filter.
    Full change list: https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/changelist376.html

details

  • Layer: add "mulovr" mode — Overlay-style multiply for YUV(A) formats only (RGB raises an error).
    The overlay luma (Y) plane drives darkening of all base planes: dark overlay Y pulls base luma toward
    black and simultaneously desaturates base chroma toward neutral (128d for 8-bit integer, 0.0 for float).
    Bright overlay Y (max value) leaves the base unchanged.
    Matches Overlay(mode="multiply") within ±1 LSB for all bit depths and chroma placements.
    Supports 8-16-bit integer and 32-bit float; all YUV subsampling (Y/411/420/422/444); alpha-aware
    (YUVA) and non-alpha sources; "placement" parameter for correct 4:2:0 / 4:2:2 mask downsampling.
    For greyscale (Y-only) clips, there are no chroma planes to desaturate so the luma formula is
    numerically equivalent to Layer "mul" (within ±1 LSB from integer rounding paths).
    Implemented as a two-pass function like "lighten"/"darken": pass 1 handles chroma using
    spatially-averaged overlay Y; pass 2 handles luma at full resolution.
  • Overlay/Layer "blend": remove stale constraint that limited float masked-merge dispatch to MASK444 only.
    All MaskModes (MASK420/MPEG2/TOPLEFT, MASK422/MPEG2/TOPLEFT, MASK411) are now dispatched to AVX2,
    SSE4.1, NEON, or C fallback — matching the already-full integer dispatch path.
  • Overlay/Layer "blend": float chroma-mask row preparation (scratch path) now dispatches to SIMD helpers
    (AVX2, SSE4.1, NEON) before falling back to C, matching the integer scratch path pattern.
  • Merge/AveragePlane/MaskedMerge: add AVX2 float weighted-merge implementation; remove obsolete iSSE
    code; make memory loads unaligned so the routine is safely callable as a building block from Overlay/Layer.
  • Fix of a recent regression: MSVC non-SIMD C reference float stride fix used by debug C implementation of
    float vertical resampler.

20260425 3.7.5.rXXXX (pre 3.7.6)

  • Layer: remove legacy MMX/iSSE (x86-only) code paths from all YUV modes.
    Replace hand-rolled integer min/max with std::min/std::max.
  • Fix: Text filter crash when input contains a zero-length line (e.g. Text("\n") with an empty
    first line). Line length was not checked before accessing line data.

20260422 3.7.5.rXXXX (pre 3.7.6)

  • Refactor/optimize: Unify three separate masked-merge implementations that existed independently
    in Layer, Overlay, and Merge into a single shared kernel family parameterized on MaskMode and
    pixel type (masked_merge_c, masked_merge_sse41_impl, masked_merge_avx2_impl, masked_merge_neon).
    Layer's special two-pass modes (lighten, darken, mulovr) retain their own implementations.
  • Layer/Overlay/Merge: SIMD precalculation of chroma-placement-corrected mask rows for subsampled
    formats (4:2:0, 4:2:2, 4:1:1). SSE4.1, AVX2, and NEON handle all placement variants
    (MASK420/MPEG2/TOPLEFT, MASK422/MPEG2/TOPLEFT, MASK411), enabling full SIMD throughput in the
    main blend loop for non-444 sources. Previously the main loop ran C-scalar for these formats.
  • Layer: add "top_left" option for the "placement" parameter — HEVC/AV1 left+top co-sited chroma
    placement (point-sample, no filtering, fastest). Affects "mul", "add", "subtract", "lighten",
    "darken", and "mulovr" modes with 4:2:0 / 4:2:2 sources.
  • Overlay "blend": add "placement" parameter for correct luma-mask downsampling in 4:2:0 and 4:2:2
    clips. Values: "mpeg2" (default, triangle filter), "mpeg1" (box filter), "top_left" (point-sample).
  • Accuracy: integer masked merge now uses magic-number division ("magicdiv") for exact per-element
    results at all bit depths (8-16 bit), replacing the approximation from arithmetic right-shift.
    Plain weighted (non-masked) merge uses the same 15-bit arithmetic in C as in SIMD, eliminating
    subtle C/SIMD output divergence.
  • Optimize: add AVX2 path for flat-weight (non-masked) 32-bit float weighted merge.
  • Layer: packed RGB "add"/"subtract" cleanup after the refactoring — fix minor inconsistencies,
    clarify comments, remove dead code paths.
  • Invert: add proper AVX2 and SSE2 SIMD paths for planar luma and chroma.
    (An earlier attempt noted "no really gain"; this is the full vectorized implementation.)
  • Optimize ExtractX (ExtractR/G/B/A/Y/U/V): handle packed RGB formats directly instead of routing
    through a PlanarRGB(A) conversion, avoiding an unnecessary frame copy.
  • ConvertBits: restructure integer-to-integer depth-reducing C loop to be more optimizer-friendly,
    enabling auto-vectorization by the compiler.
  • Optimize: PlanarRGB(A) -> RGB32/RGB64: add AVX2 conversion path.

20260401 3.7.5.rXXXX (pre 3.7.6)

  • CMakeLists: add option to pre-supply external DevIL library path and include directory
    (-DDEVIL_LIBRARY / -DDEVIL_INCLUDE_DIR) for environments where DevIL is not in the default
    search path.
  • CMakeLists: ensure all compiler parameter settings (warnings, compile options) are applied to
    plugin sub-projects as well as the core library. Previously some flags were missing in plugins.

20260331 3.7.5.r45XX (pre 3.7.6)

  • SetFilterProp: new conditional form — inject a frame property only when a named call argument
    equals a given match value or any element of an alias array (e.g. all equivalent string
    representations of the same colorspace constant). String comparison is case-insensitive.
    Both positional and named call sites are matched.
    Syntax: SetFilterProp(filter, param_name, param_match_or_array, key, value [, mode])
  • SetFilterProp: capture mode (undefined() value) — capture the actual call-time argument
    value and stamp it as a frame property of the same name. Works for positional and named calls.
  • SetFilterPropPassthrough(filter) — compatibility shim for old filters that predate frame
    property support (e.g. ColorMatrix). Copies all input frame properties to the filter's output.
    Self-healing: becomes a no-op per frame once the plugin is updated to use NewVideoFrameP.
    Must be combined with SetFilterProp rules if specific properties should override the inherited
    values (passthrough runs first, injections run after).
  • GetFilterProps() — returns all registered SetFilterProp rules as a JSON string (diagnostics).
  • doc: add SetFilterProp / SetFilterPropPassthrough documentation page.
    Addresses AviSynth#393 and more.

Avisynth+ v3.7.6pre-r4565 test build

28 Mar 20:18

Choose a tag to compare

Pre-release

20260328 3.7.5.r4565 (pre 3.7.6)

  • Add ColorbarsUHD https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/colorbarsuhd.html
  • Fix: LruCache self-tuning cache resize: raised ghost-hit threshold from ghosted>0 to ghosted>1,
    preventing unbounded cache growth during backward seeking (Issue AviSynth#379) and Bob/SeparateFields
    access patterns (Issue AviSynth#270).
  • Fix: VideoFrame::Release() race condition in frame property cleanup under multi-threaded use
    (stability fix for static-frame sources such as ColorBars, BlankClip).
  • Histogram "color"/"color2": add targets100 parameter: the 6 ColorBars target boxes at 100% luma scale.
  • Fix: YUV<->RGB conversion with quality=true at 10-14 bit sources (regression).
  • Fix: Histogram "color"/"color2": "target" parameter no longer acts as master switch for "axes".

Avisynth+ v3.7.6pre-r4554 test build

08 Mar 07:01

Choose a tag to compare

Pre-release

20260307 3.7.5.r4554 (pre 3.7.6)

  • Fix: Working 'quality' parameter for 10-14 bits sources in YUV<->RGB conversions (was: blackness)

20260306 3.7.5.r4551 (pre 3.7.6)

  • Reenable YUY2 in planar target conversions as source (disabled in r4549)
  • ConvertToY also gets bits and quality parameters, latter is used when source is RGB.

20260305 3.7.5.r4549 (pre 3.7.6)

  • Fix: memory leak in Subframe/MakePropertyWritable after static-frame sources (ColorBars, BlankClip)
  • any->YUV conversions (See https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/convert.html`.
    • accept bits and quality parameters, similar to ConvertToPlanarRGB
    • the legacy 8-bit-named functions (ConvertToYV12, ConvertToYV16,
      ConvertToYV24) allowing high-depth sources.
    • "ConvertToYUY2": rewritten to route all conversions through YV16.
    • "ConvertToYUY2": ChromaOutPlacement parameter added (was missing, present in ConvertToYV16).
    • "ConvertBackToYUY2": kept for backward compatibility; now forwards to ConvertToYUY2. The pre-2.5 left-pixel-only chroma hack is no longer
      needed or applied; the YV16 lossless repack path avoids chroma resampling loss entirely for roundtrip workflows.
    • 8 bit packed RGB formats are converted to planar RGB before 444 conversion.
      Utilizing the optimized planar RGB infrastructure.
    • Fix: "ConvertToYUY2" / "ConvertToYV12": progressive YV12<->YUY2 conversion (use generic YV16/YV12 path)
    • Fix: "ConvertToYUY2": _ChromaLocation, _Matrix and _ColorRange
      frame properties were not read from YV12 source frames and not written to YUY2 output frames
      in the old legacy direct conversion path.
    • Fix: "ConvertToYUY2": SSE2 interlaced upsampling used wrong weighting direction, differing from the C reference implementation.
  • Update https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/convert.html`
    • matrix syntax
    • ConvertToYUY2
    • bits and quality parameters
  • Update Sampling https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/advancedtopics/sampling.html with historical content notes
    on legacy YUY2 handling.

Avisynth+ v3.7.6pre-r4551 test build

06 Mar 19:11

Choose a tag to compare

Pre-release

20260306 3.7.5.r4551 (pre 3.7.6)

  • Reenable YUY2 in planar target conversions as source (disabled in r4549)
  • ConvertToY also gets bits and quality parameters, latter is used when source is RGB.

20260305 3.7.5.r4549 (pre 3.7.6)

  • Fix: memory leak in Subframe/MakePropertyWritable after static-frame sources (ColorBars, BlankClip)
  • any->YUV conversions (See https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/convert.html`.
    • accept bits and quality parameters, similar to ConvertToPlanarRGB
    • the legacy 8-bit-named functions (ConvertToYV12, ConvertToYV16,
      ConvertToYV24) allowing high-depth sources.
    • "ConvertToYUY2": rewritten to route all conversions through YV16.
    • "ConvertToYUY2": ChromaOutPlacement parameter added (was missing, present in ConvertToYV16).
    • "ConvertBackToYUY2": kept for backward compatibility; now forwards to ConvertToYUY2. The pre-2.5 left-pixel-only chroma hack is no longer
      needed or applied; the YV16 lossless repack path avoids chroma resampling loss entirely for roundtrip workflows.
    • 8 bit packed RGB formats are converted to planar RGB before 444 conversion.
      Utilizing the optimized planar RGB infrastructure.
    • Fix: "ConvertToYUY2" / "ConvertToYV12": progressive YV12<->YUY2 conversion (use generic YV16/YV12 path)
    • Fix: "ConvertToYUY2": _ChromaLocation, _Matrix and _ColorRange
      frame properties were not read from YV12 source frames and not written to YUY2 output frames
      in the old legacy direct conversion path.
    • Fix: "ConvertToYUY2": SSE2 interlaced upsampling used wrong weighting direction, differing from the C reference implementation.
  • Update https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/convert.html`
    • matrix syntax
    • ConvertToYUY2
    • bits and quality parameters
  • Update Sampling https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/advancedtopics/sampling.html with historical content notes
    on legacy YUY2 handling.

Avisynth+ v3.7.6pre-r4549 test build

05 Mar 11:13

Choose a tag to compare

Pre-release

Avisynth Plus change log

Source: https://github.com/AviSynth/AviSynthPlus

This file contains all change log, with detailed examples and explanations.
The "rst" version of the documentation just lists changes in brief.
For online documentation check https://avisynthplus.readthedocs.io/en/latest/

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

20260305 3.7.5.r4549 (pre 3.7.6)

  • Fix: memory leak in Subframe/MakePropertyWritable after static-frame sources (ColorBars, BlankClip)
  • any->YUV conversions (See https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/convert.html`.
    • accept bits ans quality parameters, similar to ConvertToPlanarRGB
    • the legacy 8-bit-named functions (ConvertToYV12, ConvertToYV16, ConvertToYV24) allowing high-depth sources.
    • "ConvertToYUY2": rewritten to route all conversions through YV16.
    • "ConvertToYUY2": ChromaOutPlacement parameter added (was missing, present in ConvertToYV16).
    • "ConvertBackToYUY2": kept for backward compatibility; now forwards to ConvertToYUY2. The pre-2.5 left-pixel-only chroma hack is no longer
      needed or applied; the YV16 lossless repack path avoids chroma resampling loss entirely for roundtrip workflows.
    • 8 bit packed RGB formats are converted to planar RGB before 444 conversion.
      Utiliting the optimized and maintained planar RGB infrastructure
    • Fix: "ConvertToYUY2" / "ConvertToYV12": progressive YV12<->YUY2 conversion (use generic YV16/YV12 path)
    • Fix: "ConvertToYUY2": _ChromaLocation, _Matrix and _ColorRange
      frame properties were not read from YV12 source frames and not written to YUY2 output frames
      in the old legacy direct conversion path.
    • Fix: "ConvertToYUY2": SSE2 interlaced upsampling used wrong weighting direction, differing from the C reference implementation.
  • Update https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/convert.html`
    • matrix syntax
    • ConvertToYUY2
    • bits and quality parameters
  • Update Sampling https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/advancedtopics/sampling.html with historical content notes
    on legacy YUY2 handling.

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