Releases: pinterf/AviSynthPlus
Avisynth+ v3.7.6pre-r4604 test build
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
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
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
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":
ChromaOutPlacementparameter 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,_Matrixand_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
bitsandqualityparameters
- Update Sampling https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/advancedtopics/sampling.html with historical content notes
on legacyYUY2handling.
Avisynth+ v3.7.6pre-r4551 test build
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":
ChromaOutPlacementparameter 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,_Matrixand_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
bitsandqualityparameters
- Update Sampling https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/advancedtopics/sampling.html with historical content notes
on legacyYUY2handling.
Avisynth+ v3.7.6pre-r4549 test build
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":
ChromaOutPlacementparameter 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,_Matrixand_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
bitsandqualityparameters
- Update Sampling https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/advancedtopics/sampling.html with historical content notes
on legacyYUY2handling.
Avisynth+ v3.7.6pre-r4529 test build
Actual:
https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/changelist376.html
20260220 3.7.5.r4529 (pre 3.7.6)
- Fix Colorbars inaccurate 10+ bit, by using ground truth linear RGB, similarly to ColorBarsHD.
Full refactoring.
update doc: https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/colorbars.html - Histogram "color" and "color2" (Vectorscope modes)
- full refactoring.
- Drawing is now matrix and color range aware. target positions (75%) +-I and +Q.
- add individual overlay options:
addedmatrix,graticule,targets,axes,iq,iq_lines,circle
parameters - Fix: copy alpha from clip, initialize alpha to zero in the histogram area.
- Accurate pixel positioning and scaling to the active histogram area,
limited/full range aware. - update doc: https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/histogram.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 code bloat)
v3.7.6pre-r4523
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":
bitsparameter: 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
(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":
bitsparameter: 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
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