AviSynth Changelog

What's new in AviSynth 2.6.1 Alpha 1

May 17, 2016
  • ENVIRONMENT CHANGES and UPDATES:
  • Update to SoundTouch 1.9.0
  • Update to DevIL 1.7.8
  • TCPDeliver update to zlib 1.2.8 and lzo-2.09.
  • TCPDeliver complete Klaus's last work for 2.6 API.
  • Updated 2.6.1 VC6 build scripts.
  • Initial 2.6.1 VC2005 build scripts.
  • DirectShowSource add BaseClasses project to Avisynth solution.
  • MSVC 2008 Express project and solution files.
  • Experiment with 2K8 SSE2 build.
  • CODE CHANGES:
  • Add offset parameter to conditional functions.
  • Replace convert_a.asm for yuy2 to rgb.
  • Redo SEH exception handling code.
  • VirtualQuery/GetModuleFileName + Trap on Invoke.
  • Use LoadLibraryEx/LOAD_WITH_ALTERED_SEARCH_PATH for plugins.
  • Use GetVarDef() extensively.
  • Handle exceptions from DevIL.dll now being delay loaded.
  • Explicitly catch stray std::bad_alloc and report.
  • BUG FIXES:
  • Supereq gain arguments can only be int, enforce it.
  • Fix handle leak with "Exists"(SEt)
  • Fix VDub plugin race on cleanup
  • Fix TCPDeliver crash with bad hostnames.
  • Fix ShowSMPTE non-integer fps message not being thrown.
  • Fix avisynth_c plane=0. Default params are not allowed in plain C.
  • Fix MergeLuma allow any Planar test.
  • Remove redundant self class spec from definition.
  • ENHANCEMENTS:
  • Evaluate Invert arguments once in Constructor not every GetFrame, Doh!
  • Move matrix decision into Convert constructor, overcome exceed cacheline.
  • BUILD CHANGES:
  • Remove msvcP*.dll dependances.
  • Add AsFloatF(), compiler sugar!
  • Move to /W4 compiler warnings.
  • isolate void BitBlt(...) & long GetGPUFlags() functions.
  • Add VDCall as __cdecl to VDub api calls
  • Add __cdecl declaration to all api calls(SEt).
  • Code cleanup(SEt).
  • Improve precompiled header usage.
  • Use #pragma comment to control link options.
  • Turn off RuntimeTypeInfo for the rest of the solution.
  • Patch BaseClasses to avoid ATL/MFC dependance.
  • Add build environment tags to various filenames and values.
  • Amend template AVS_BUILD strings.
  • Link with nothrownew.obj
  • Remove writable system32\avisynth.dll dependency.
  • Dodge 2005-2015 compiler bug with nested try/catch
  • Fix missing advapi32.lib for debug builds.

New in AviSynth 2.6.0 (Jun 1, 2015)

  • Additions:
  • AviSource: added multiple video and audio track support.
  • Add IScriptEnvironment::GetVarDef() nothrow version of GetVar().
  • Partial 2.6 update of Avisynth_C interface.
  • Add current dwAvail{Phys, Virtual} to out of memory error message.
  • Add #ifndef KSDATAFORMAT_SUBTYPE_{PCM IEEE_FLOAT} for newer SDK's.
  • DirectShowSource support negotiation of non-standard MediaSubTypes "I420", "NV12", "YV24" and "YV16".
  • AviSource and DirectShowSource support '+' prefix on pixel_type to handle bad padded planar data.
  • Added Eval(clip, string name, string) alias for oop processing of argument.
  • DirectShowSource support non-standard pixel types "YV24" and "YV16".
  • Info: Audio only clip now creates its own canvas video.
  • AviSource: Include packed/padded processing and -ve biHeight logic for compressed input.
  • Add Script Functions :- BitLRotate, BitRRotate, BitChange, BitClear, BitSet, BitTest and their asm aliases.
  • Add WeaveRows (blit cost) and WeaveColumns (slow) frame combining filters.
  • Add AudioDuration() [as float seconds], IsY8(), IsYV411() & PixelType() [as a string] script functions.
  • Add Echo and Preroll filters.
  • Add IScriptEnvironment::GetAVSLinkage() and DLLExport AVS_linkage for host usage of avisynth.dll.
  • DirectShowSource, 2.6 plugin, support pixel types "AYUV" as YV24, "Y41P" and "Y411" as YV411.
  • AviSource: Add Full and Auto pseudo pixel_types. Full is all supported. Auto is YV12, YUY2, RGB32, RGB24 & Y8.
  • Add "AudioLengthS" [as a string], "Ord" & "FillStr" script functions.
  • Add AudioTrim(clip, float, float) audio priority trimming, args in fractional seconds.
  • Add Trim(M, Length=N[, Pad=False]) and Trim(M, End=N[, Pad=False]) function overloads for explicit Trimming. Length=0 means zero frame clip. End=0 means end at frame 0.
  • Add SeparateRows (zero cost) and SeparateColumns (slow) frame slashing filters.
  • Add Script Functions :- Acos, Asin, Atan, Atan2, Cosh, Sinh, Tanh, Fmod, Log10, BitLShift, BitRShiftS, BitRShiftU and Hex.
  • Add "ConditionalSelect","csc+[show]b" runtime filter.
  • Add dither option to Levels, RGBAdjust & Tweak.
  • Add BitAnd(), BitNot(), BitOr() & BitXor() script functions.
  • Add StrCmp() & StrCmpI() script functions.
  • Add YV24 support for Limiter show option.
  • Add "Global OPT_dwChannelMask={int}"
  • Add 0x0063F speaker mask for 7.1 WAVE_FORMAT_EXTENSIBLE.
  • Add .dll DelayLoad exception texts to crash message formatter.
  • ImageWriter, add support for printf formating of filename string, default is ("d.%s", n, ext);
  • Add avs_get_error(AVS_ScriptEnvironment*); to avisynth_c interface.
  • Catch and save AvisynthError text in more avisynth_c entry points, for kemuri-_9.
  • Add ScriptName(), ScriptFile(), ScriptDir() functions (WarpEnterprises).
  • Add SkewRows filter.
  • Histogram, Levels mode, Improve colour of chroma legends.
  • ConditionalFilter, teach about string results.
  • Add some more "Add/Remove Software" registry keys to the Installer (XhmikosR).
  • AviSource: Support both packed and DWORD padded raw planar input like with DSS.
  • Add IScriptEnvironment::ApplyMessage()
  • Add ImageSourceAnim (Wilbert)
  • Support user upgrade to 178 DevIL.dll (They need to manage CRT dependancies).
  • ImageSource: palette and compressed bmp images load correctly now (issue 894702) [need 178 DevIL.dll]
  • ImageSource: support for other formats like: gif, exr, jp2, psd, hdr [need 178 DevIL.dll]
  • Add YV24 mode to ColorBars.
  • Add ColorBarsHD based on arib_std_b28.
  • C-api usability enhancements from kemuri9 [Work in progress!]
  • Add Undefined(), AudioLengthLo(), AudioLengthHi(), IsYV16() & IsYV24() script functions
  • Allow newlines (and hence comments) before '{' -- Gavino
  • Added IScriptEnvironment::DeleteScriptEnvironment()
  • Added Histogram, population clamp % factor for "Levels" mode,
  • Histogram, revert "Stereo" mode to YV12, Add "StereoY8" mode,
  • AviSource: Support fourcc "GREY" as Y8
  • Added support for argument passing and EAX return value to SoftwireHelper.
  • Added "Global OPT_VDubPlanarHack=True" to flip YV24 and YV16 chroma planes for old VDub's.
  • Added "Global OPT_AVIPadScanlines=True" option for DWORD aligned planar padding
  • Added Matrix="AVERAGE" mode.
  • Added ContinuedDenominator/ContinuedNumerator(f[]i[limit]i) script functions.
  • Tweak: fix MaskPointResizing + put back Dividee ISSE code (use sse=true).
  • Added ChromaInPlacement, ChromaOutPlacement and ChromaResample options to planar colour conversions.
  • Added MaskHS.
  • Source tweaks to get ready for VC8.
  • Add Y8 for DevIL, planarize EBMP.
  • Planar support for many filters.
  • Added Info() time indicator on audio length and video (current frame & total). (2.5.8)
  • Added UtoY8 and VtoY8.
  • Added more info to Info(). (2.5.8)
  • ColorYUV: Added all adjustment parameters as conditional variables "coloryuv_SETTING". Enable by setting conditional=true.
  • ConditionalReader: Added support for type String.
  • ConditionalReader: Added offset keyword to offset all frame numbers after the keyword.
  • Added SincResize() with optional taps parameter (default is 4).
  • Added Custom band setting to SuperEQ to allow all 16 bands to be set from script. Usage: SuperEQ(clip,band1, band2, band3....) values are dB in float.
  • Added fast 0-1-0 kernel for YV24 to ConvertBacktoYUY2().
  • Added core formats: YV24, YV16, Y8, YV411.
  • Bugfixes:
  • Fixed VideoInfo::Is property to reference image_type (not pixel_type).
  • Fixed YV16->YUY2 always ran both mmx and C code.
  • Fixed YV12 Blur C code skiping left column.
  • Fixed Conditional functions with Y8 referencing non-existant chroma.
  • Fixed frame range clamping in ComparePlane (ultim).
  • Fixed posible leak with realloc in ConditionalReader (ultim).
  • Fixed posible double free in text-overlay (ultim).
  • Fixed RGB32 to Y8 pixel right shift from 4th pixel on (Robert Martens).
  • Fixed Overlay YV24 Image444 leak.
  • Fixed AVISource "AUTO" and "FULL" handling.
  • Fixed ImageSource handling of missing ebmp files.
  • Fixed DirectShowSource incorrect byte order for unpacking of pixel type "AYUV".
  • Fixed HexValue parsing values greater than 7FFFFFFF, now as unsigned hex.
  • Fixed ConditionalReader memory overrun parsing bools.
  • Fixed ResampleAudio NOP test to compare vi.num_audio_samples, not sample rate.
  • Fixed YV24 -> RGB24 overrun cleanup for widths == 5.
  • Fixed RGB24 AddBorders with right=0.
  • Fixed conditional_functions error message names (Wilbert).
  • Fixed Audio cache ac_expected_next regression.
  • Fixed ImageSource deal with add 1 to IL_NUM_IMAGES bug (Wilbert)
  • Fixed Overlay YV24 V plane conversion.
  • Fixed Overlay YV24 mode with shared input clip, needed a MakeWritable.
  • Fixed ImageReader upside down TIFF in 178 DevIL. (Wilbert)
  • Fixed string+string bug when total length is 4096*K-1.
  • Fixed SincResize misuse of "int abs(int)" (Gavino). Fix Lanczos and Blackman sinc use of float == 0.0, use small limit "> 0.000001".
  • Fixed Classic mode legend drawing for planar right limit and yuy2 centre line.
  • Fixed possible MT race. Use "env->ManageCache(MC_IncVFBRefcount, ...)" in ProtectVFB.
  • Fixed SwapYToUV output image size bug for 3 clip case.
  • Fixed Crop limit tests for RGB.
  • Fixed Overlay yellow tint on rec601 RGB import conversion.
  • Fixed YtoUV() output image size bug for 3 clip case.
  • Fixed ConvertToPlanar chroma alignment.
  • Fixed Levels (RGB) change use of PixelClip(x) to min(max(x, 0), 255).
  • Fixed SwapYtoUV yuy2 crash (StainlessS).
  • Fixed Overlay saturate UV in add and subtract mode.
  • Fixed Info.h range protect display characters (StainlessS).
  • Fixed AviSource packed planar import chroma offsets.
  • Fixed AviSource NULL GetWritePtr() failure due to premature setting of last_frame.
  • Fixed Mask rounding in greyscale calcs (Wilbert), minor refactor.
  • Fixed SelectRangeEvery audio snafu (Gavino).
  • Fixed LoadPlugin, SaveString of result string.
  • Fixed LoadPlugin, use _vsnprintf.
  • Fixed LoadVirtualdubPlugin, don't add vdub filter to chain on load failure.
  • Fixed rounding in RGB HResize (JoshyD) (affects all resizers)
  • Fixed error message name in the filter VerticalReduceBy2
  • Fixed SeparateFields() with variable parity input clip (Wilbert)
  • Fixed AviSource, cannot cast__int64* to long*, it does not work!
  • Fixed ConditionalReader: Don't allow out of range "Range" to overwrite edge values
  • Fixed MonoToStereo with stereo sources.
  • Fixed MergeChannels with only 1 input clip.
  • Fixed AviSource support for negative height DIB format AVI's.
  • Fixed Audio cache crashes.
  • Fixed resize with YV411, missing code.
  • Fixed ConditionalReader rounding with integer interpolation.
  • Fixed Softwire SSE2 bugs.
  • Fixed SSSE3 CPU detection.
  • Fixed SSSE3, SSE4.1 & SSE4.2 detection.
  • Fixed Fastwire encoding of instructions that are >2 opcodes (SSSE3+4).
  • Fixed _RPT5() macro for debug builds
  • Optimizations:
  • Cache auto increase span on sparse misses.
  • Cache prevent inactive instances returning VFB early and spoiling active instances hit rate (LaTo).
  • ConvertToPlanarGeneric explicit add Cache before chroma rescaler.
  • Overlay minor refactor YV12 -> 444 chroma
  • Speedup ConvertToMono(), minor refactor MixAudio().
  • Change StackVertical/Horizontal to interative instead of recursive, 2^N performace increase for 3 and more clips, i.e. 1 blit total instead of blit(blit(blit(...
  • RGBtoY8 Dynamic ASM code, support for RGB24.
  • YV24backtoYUY2 Dynamic ASM code.
  • UtoY8, VtoY8 abuse subframe, zero cost.
  • YV24RGB Add SSE2 and SSSE3 code paths, get rid of wide_enough.
  • ConvertToYUY2 Add SSE2, MMX restore full speed on platforms with poor ooox.
  • ConvertAudio, manage tempbuffer and floatbuffer independantly.
  • ConvertAudio, prefer SSE2 over 3DNow for super AMD cores.
  • Info.h, full refactor, a good example of "Never look down", thx StainlessS
  • DoubleWeaveFrames, If A not writable, try to write to B, else make new frame
  • Histogram, fix GetFrame/NewVideoFrame call order
  • HResizer, interleave code +4% faster
  • YtoUV() Abuse Subframe to snatch the Y plane / UV planes, Derestrict destination colorformat autogeneration.
  • ImageSource: Improve thread interlock code
  • ConditionalReader/WriteFile: Full refactor.
  • Replace _strdup with SaveString in AddFunction (Thanks Gavino)
  • SuperEQ: Improve channel unpacking/packing code.
  • H-Resize: Use SSE4.1 (movntdqa) loads for use once memory access.
  • H-Resize: Added SSE2 horizontal unpacker.
  • Resize: Use SSE3 (lddqu) loads for unaligned memory access.
  • Added ultra fast vertical PointResizer (64 pixel/cycle).
  • Added dynamic SSSE3 vertical resizer (16 pixel/cycle) ~ twice as fast as old MMX.
  • Added dynamic SSE2 vertical resizer (16 pixel/cycle).
  • Added dynamic MMX vertical resizer (8 pixel/cycle).
  • Added SSSE3 version for RGBYV24 conversions.
  • Added dynamic compiled MMX/iSSE for RGBYV24 conversions. Speed is approx 200% of C-code.
  • Changes:
  • Bump AVISYNTH_INTERFACE_VERSION to 6.
  • Changed recursive include protection #define from __AVISYNTH_H__ to __AVISYNTH_6_H__
  • Changed mem size elements from signed int to unsigned size_t.
  • Removed CACHE_25_* enums.
  • Removed AlignedPlanar, FillBorder, ConvertAudio.
  • Change CPUF_SSE4_2 to 0x1000 to match VirtualDub. 0x800 reserved for AVX.
  • Removed MIN_INT, MAX_INT.
  • BMPSize() use mod 4 rowsize for all formats.
  • LoadPlugin errs 0x7e and 0x7f have descriptive text.
  • Import: Increase full path buffer to MAX_PATH*4 for multi char code pages like CP932 (Chikuzen).
  • Throw error when output number of frames will exceed MAXINT.
  • BlankClip: Supply useful defaults for new Audio/Video when using a Video/Audio only template clip.
  • BlankClip: Use duration from Audio only template as default length for new clip.
  • Bob: Retain parity sense of input clip.
  • Define new IClip::SetCacheHints cachehint constants.
  • Force int call arguments to user script function float params to be explicit floats.
  • Splice pass CacheHints through to both children in + and ++ mode.
  • WriteFileStart/End save current_frame and set Last.
  • ConditionalReader do not ignore syntax errors in input file.
  • ImageSourceAnim Pad/Crop images to match first frame (Wilbert)
  • ImageSource Add version to messages (Wilbert)
  • Initial 2.6 API entry point linkage.
  • Use Invoke for graph tail, enhance non-clip output error reporting.
  • PopContext when inner block Asserts/throws (maxxon).
  • Remove duplicate definitions (Wilbert).
  • Enhance non-clip output error reporting.
  • Explicitly specify calling sequence as __cdecl for Avisynth softwire routines, (was the compiler default)
  • Use env->Invoke("Cache", ...) everywhere instead of Cache::Create_Cache(), allows for Cache to be overloaded by a plugin.
  • ConvertToYUY2 Change from 0-1-1 kernel to 1-2-1 kernel.
  • Tweak make Interp same units as minSat and maxSat.
  • Check HKEY_CURRENT_USER for PluginDir first. (henktiggelaar)
  • Make forced, -ve, planar alignment of chroma planes match subsampling.
  • Enforce planar alignment restrictions.
  • C-api: Remove func sub-struct from AVS_Library struct
  • Add error code to plugin load failure message
  • Make default planar AVI output packed. Control with OPT_AVIPadScanlines=True.
  • WriteFile() now supports unlimited number of unlimited strings. (was 16 by 254 byte strings).
  • ConvertToRGB*, make C++ code sample chroma the same as the MMX code i.e. use both pixels.
  • ConvertToRGB*, use YV24 path for planar, complain when options are present for YUY2.
  • ConvertToYUY2, use YV16 path for planar, complain when options are present for RGB.
  • see: http://forum.doom9.org/showthread.php?p=1378381#post1378381
  • Thread safe code, part 2.
  • Correct IClip baked documentation
  • Passify compilation error/warnings (XhmikosR)
  • for, const, extern and ansi patches for VC2008 (SEt)
  • Disable OPT_RELS_LOGGING option
  • Change implicit Last parsing for argless, bracketless calls to match bracketed cases. (Gavino)
  • DirectShowSource: Support last minute format renegotiation thru IPin::QueryAccept() & Validate the size of the provided directshow buffer.
  • Remove non ascii chars from comments.
  • Add core stubs for DirectShowSource, TCPServer & TCPSource, report when plugins are missing.
  • Add note for original source downloads - SoundTouch
  • Add more lineage history to Info()
  • Move convertaudio, alignplanar, fillborder & MIN/MAX_INT definitions.
  • Run AtExit before dismantling world.
  • Change setcachehints definition from void to int. Test IClip version >= 5.
  • Move PixelClip definition to avisynth.cpp
  • SubTitle, etc, make X & Y options float (0.125 pixel granularity).
  • ShowSMPTE() supports all integer FPS and multiplies of drop frame FPS.
  • SubTitle, stop overwriting string constants (Gavino).
  • SubTitle, improve pixel registration (Gavino).
  • Make Info() CPU display hierarchical.
  • Thread safe code, part 1.
  • SoftwireHelper: explicit hardware exception handling.
  • Resize: Moved GetResampleFunction into Resamplefuntion, to allow overrides.
  • Resampler: Removed dead stlf code.
  • Updated Soundtouch to 1.31 (2.5.8)
  • Put dynamic matrix conversion into separate file.
  • Moved chroma subsampling to image_type section.
  • Added specific error reporting when requesting chromasubsampling with Y8.
  • Split up merge and plane Swappers.
  • Split up Plane transfers into separate classes.
  • Added automatic destination colorspace detection on planar YtoUV.
  • Took out greyscale and RGB32RGB24 from convert.cpp and placed them in separate files.
  • All code assuming UVwidth = Ywidth/2 and similar should be gone.

New in AviSynth 2.6.0 RC 3 (Apr 20, 2015)

  • Additions:
  • TCPDeliver, 2.6 plugin, support all pixel types.
  • Bugfixes:
  • Fixed missing I420 in DirectShowSource pixel type error message.
  • Changes:
  • New default directory, $PROGRAMFILES\AviSynth. But it will continue to default to the previous intall dir and will use the previously existing plugin dir.
  • Do a full uninstall and answer YES to clearing the registry to reset to all the new defaults.
  • Menu dir is now $SMPROGRAMS\AviSynth. Will rename "AviSynth 2.5" to "AviSynth".
  • Cache only uses extended hints if rev 6 and above. Counter bad use in rev 5.

New in AviSynth 2.6.0 RC 1 (Jan 16, 2015)

  • Additions:
  • AviSource: added multiple video and audio track support.
  • Add IScriptEnvironment::GetVarDef() nothrow version of GetVar().
  • Partial 2.6 update of Avisynth_C interface.
  • Add current dwAvail{Phys, Virtual} to out of memory error message.
  • Add #ifndef KSDATAFORMAT_SUBTYPE_{PCM IEEE_FLOAT} for newer SDK's.
  • DirectShowSource support negotiation of non-standard MediaSubTypes "I420", "NV12", "YV24" and "YV16".
  • AviSource and DirectShowSource support '+' prefix on pixel_type to handle bad padded planar data.
  • Bugfixes:
  • Fixed VideoInfo::Is property to reference image_type (not pixel_type)
  • Fixed YV16->YUY2 always ran both mmx and C code
  • Fixed YV12 Blur C code skipping left column
  • Fixed Conditional functions with Y8 referencing non-existant chroma
  • Changes:
  • Bump AVISYNTH_INTERFACE_VERSION to 6. Counter bad use of version 5.
  • Changed recursive include protection #define from __AVISYNTH_H__ to __AVISYNTH_6_H__
  • Changed mem size elements from signed int to unsigned size_t.
  • Removed CACHE_25_* enums.
  • Removed AlignedPlanar, FillBorder, ConvertAudio.
  • Change CPUF_SSE4_2 to 0x1000 to match VirtualDub. 0x800 reserved for AVX.
  • Removed MIN_INT, MAX_INT.
  • BMPSize() use mod 4 rowsize for all formats.
  • LoadPlugin errs 0x7e and 0x7f have descriptive text.

New in AviSynth 2.6.0 Alpha 5 (Sep 18, 2013)

  • Additions:
  • Added Eval(clip, string name, string) alias for oop processing of argument.
  • DirectShowSource support non-standard pixel types "YV24" and "YV16".
  • Info: Audio only clip now creates its own canvas video.
  • AviSource: Include packed/padded processing and -ve biHeight logic for compressed input.
  • Add Script Functions :- BitLRotate, BitRRotate, BitChange, BitClear, BitSet, BitTest and their asm aliases.
  • Add WeaveRows (blit cost) and WeaveColumns (slow) frame combining filters.
  • Add AudioDuration() [as float seconds], IsY8(), IsYV411() & PixelType() [as a string] script functions.
  • Add Echo and Preroll filters.
  • Add IScriptEnvironment::GetAVSLinkage() and DLLExport AVS_linkage for host usage of avisynth.dll.
  • DirectShowSource, 2.6 plugin, support pixel types "AYUV" as YV24, "Y41P" and "Y411" as YV411.
  • AviSource: Add Full and Auto pseudo pixel_types. Full is all supported. Auto is YV12, YUY2, RGB32, RGB24 & Y8.
  • Add "AudioLengthS" [as a string], "Ord" & "FillStr" script functions.
  • Add AudioTrim(clip, float, float) audio priority trimming, args in fractional seconds.
  • Add Trim(M, Length=N[, Pad=False]) and Trim(M, End=N[, Pad=False]) function overloads for explicit Trimming. Length=0 means zero frame clip. End=0 means end at frame 0.
  • Add SeparateRows (zero cost) and SeparateColumns (slow) frame slashing filters.
  • Add Script Functions :- Acos, Asin, Atan, Atan2, Cosh, Sinh, Tanh, Fmod, Log10, BitLShift, BitRShiftS, BitRShiftU and Hex.
  • Add "ConditionalSelect","csc+[show]b" runtime filter.
  • Add dither option to Levels, RGBAdjust & Tweak.
  • Add BitAnd(), BitNot(), BitOr() & BitXor() script functions.
  • Add StrCmp() & StrCmpI() script functions.
  • Add YV24 support for Limiter show option.
  • Add "Global OPT_dwChannelMask={int}"
  • Add 0x0063F speaker mask for 7.1 WAVE_FORMAT_EXTENSIBLE.
  • Add .dll DelayLoad exception texts to crash message formatter.
  • ImageWriter, add support for printf formating of filename string, default is ("d.%s", n, ext);
  • Add avs_get_error(AVS_ScriptEnvironment*); to avisynth_c interface.
  • Catch and save AvisynthError text in more avisynth_c entry points, for kemuri-_9.
  • Add ScriptName(), ScriptFile(), ScriptDir() functions (WarpEnterprises).
  • Add SkewRows filter.
  • Histogram, Levels mode, Improve colour of chroma legends.
  • ConditionalFilter, teach about string results.
  • Add some more "Add/Remove Software" registry keys to the Installer (XhmikosR).
  • AviSource: Support both packed and DWORD padded raw planar input like with DSS.
  • Add IScriptEnvironment::ApplyMessage()
  • Add ImageSourceAnim (Wilbert)
  • Support user upgrade to 178 DevIL.dll (They need to manage CRT dependancies).
  • ImageSource: palette and compressed bmp images load correctly now (issue 894702) [need 178 DevIL.dll]
  • ImageSource: support for other formats like: gif, exr, jp2, psd, hdr [need 178 DevIL.dll]
  • Add YV24 mode to ColorBars.
  • Add ColorBarsHD based on arib_std_b28.
  • C-api usability enhancements from kemuri9 [Work in progress!]
  • Add Undefined(), AudioLengthLo(), AudioLengthHi(), IsYV16() & IsYV24() script functions
  • Allow newlines (and hence comments) before '{' -- Gavino
  • Added IScriptEnvironment:eleteScriptEnvironment()
  • Added Histogram, population clamp % factor for "Levels" mode,
  • Histogram, revert "Stereo" mode to YV12, Add "StereoY8" mode,
  • AviSource: Support fourcc "GREY" as Y8
  • Added support for argument passing and EAX return value to SoftwireHelper.
  • Added "Global OPT_VDubPlanarHack=True" to flip YV24 and YV16 chroma planes for old VDub's.
  • Added "Global OPT_AVIPadScanlines=True" option for DWORD aligned planar padding
  • Added Matrix="AVERAGE" mode.
  • Added ContinuedDenominator/ContinuedNumerator(f[]i[limit]i) script functions.
  • Tweak: fix MaskPointResizing + put back Dividee ISSE code (use sse=true).
  • Added ChromaInPlacement, ChromaOutPlacement and ChromaResample options to planar colour conversions.
  • Added MaskHS.
  • Source tweaks to get ready for VC8.
  • Add Y8 for DevIL, planarize EBMP.
  • Planar support for many filters.
  • Added Info() time indicator on audio length and video (current frame & total). (2.5.8)
  • Added UtoY8 and VtoY8.
  • Added more info to Info(). (2.5.8)
  • ColorYUV: Added all adjustment parameters as conditional variables "coloryuv_SETTING". Enable by setting conditional=true.
  • ConditionalReader: Added support for type String.
  • ConditionalReader: Added offset keyword to offset all frame numbers after the keyword.
  • Added SincResize() with optional taps parameter (default is 4).
  • Added Custom band setting to SuperEQ to allow all 16 bands to be set from script. Usage: SuperEQ(clip,band1, band2, band3....) values are dB in float.
  • Added fast 0-1-0 kernel for YV24 to ConvertBacktoYUY2().
  • Added core formats: YV24, YV16, Y8, YV411.
  • Bugfixes:
  • Fixed frame range clamping in ComparePlane (ultim).
  • Fixed posible leak with realloc in ConditionalReader (ultim).
  • Fixed posible double free in text-overlay (ultim).
  • Fixed RGB32 to Y8 pixel right shift from 4th pixel on (Robert Martens).
  • Fixed Overlay YV24 Image444 leak.
  • Fixed AVISource "AUTO" and "FULL" handling.
  • Fixed ImageSource handling of missing ebmp files.
  • Fixed DirectShowSource incorrect byte order for unpacking of pixel type "AYUV"
  • Fixed HexValue parsing values greater than 7FFFFFFF, now as unsigned hex.
  • Fixed ConditionalReader memory overrun parsing bools.
  • Fixed ResampleAudio NOP test to compare vi.num_audio_samples, not sample rate.
  • Fixed YV24 -> RGB24 overrun cleanup for widths == 5.
  • Fixed RGB24 AddBorders with right=0.
  • Fixed conditional_functions error message names (Wilbert).
  • Fixed Audio cache ac_expected_next regression.
  • Fixed ImageSource deal with add 1 to IL_NUM_IMAGES bug (Wilbert)
  • Fixed Overlay YV24 V plane conversion.
  • Fixed Overlay YV24 mode with shared input clip, needed a MakeWritable.
  • Fixed ImageReader upside down TIFF in 178 DevIL. (Wilbert)
  • Fixed string+string bug when total length is 4096*K-1.
  • Fixed SincResize misuse of "int abs(int)" (Gavino). Fix Lanczos and Blackman sinc use of float == 0.0, use small limit "> 0.000001".
  • Fixed Classic mode legend drawing for planar right limit and yuy2 centre line.
  • Fixed possible MT race. Use "env->ManageCache(MC_IncVFBRefcount, ...)" in ProtectVFB.
  • Fixed SwapYToUV output image size bug for 3 clip case.
  • Fixed Crop limit tests for RGB.
  • Fixed Overlay yellow tint on rec601 RGB import conversion.
  • Fixed YtoUV() output image size bug for 3 clip case.
  • Fixed ConvertToPlanar chroma alignment.
  • Fixed Levels (RGB) change use of PixelClip(x) to min(max(x, 0), 255).
  • Fixed SwapYtoUV yuy2 crash (StainlessS).
  • Fixed Overlay saturate UV in add and subtract mode.
  • Fixed Info.h range protect display characters (StainlessS).
  • Fixed AviSource packed planar import chroma offsets.
  • Fixed AviSource NULL GetWritePtr() failure due to premature setting of last_frame.
  • Fixed Mask rounding in greyscale calcs (Wilbert), minor refactor.
  • Fixed SelectRangeEvery audio snafu (Gavino).
  • Fixed LoadPlugin, SaveString of result string.
  • Fixed LoadPlugin, use _vsnprintf.
  • Fixed LoadVirtualdubPlugin, don't add vdub filter to chain on load failure.
  • Fixed rounding in RGB HResize (JoshyD) (affects all resizers)
  • Fixed error message name in the filter VerticalReduceBy2
  • Fixed SeparateFields() with variable parity input clip (Wilbert)
  • Fixed AviSource, cannot cast__int64* to long*, it does not work!
  • Fixed ConditionalReader: Don't allow out of range "Range" to overwrite edge values
  • Fixed MonoToStereo with stereo sources.
  • Fixed MergeChannels with only 1 input clip.
  • Fixed AviSource support for negative height DIB format AVI's.
  • Fixed Audio cache crashes.
  • Fixed resize with YV411, missing code.
  • Fixed ConditionalReader rounding with integer interpolation.
  • Fixed Softwire SSE2 bugs.
  • Fixed SSSE3 CPU detection.
  • Fixed SSSE3, SSE4.1 & SSE4.2 detection.
  • Fixed Fastwire encoding of instructions that are >2 opcodes (SSSE3+4).
  • Fixed _RPT5() macro for debug builds
  • Optimizations:
  • Cache auto increase span on sparse misses.
  • Cache prevent inactive instances returning VFB early and spoiling active instances hit rate (LaTo).
  • ConvertToPlanarGeneric explicit add Cache before chroma rescaler.
  • Overlay minor refactor YV12 -> 444 chroma
  • Speedup ConvertToMono(), minor refactor MixAudio().
  • Change StackVertical/Horizontal to interative instead of recursive, 2^N performace increase for 3 and more clips, i.e. 1 blit total instead of blit(blit(blit(...
  • RGBtoY8 Dynamic ASM code, support for RGB24.
  • YV24backtoYUY2 Dynamic ASM code.
  • UtoY8, VtoY8 abuse subframe, zero cost.
  • YV24RGB Add SSE2 and SSSE3 code paths, get rid of wide_enough.
  • ConvertToYUY2 Add SSE2, MMX restore full speed on platforms with poor ooox.
  • ConvertAudio, manage tempbuffer and floatbuffer independantly.
  • ConvertAudio, prefer SSE2 over 3DNow for super AMD cores.
  • Info.h, full refactor, a good example of "Never look down", thx StainlessS
  • DoubleWeaveFrames, If A not writable, try to write to B, else make new frame
  • Histogram, fix GetFrame/NewVideoFrame call order
  • HResizer, interleave code +4% faster
  • YtoUV() Abuse Subframe to snatch the Y plane / UV planes, Derestrict destination colorformat autogeneration.
  • ImageSource: Improve thread interlock code
  • ConditionalReader/WriteFile: Full refactor.
  • Replace _strdup with SaveString in AddFunction (Thanks Gavino)
  • SuperEQ: Improve channel unpacking/packing code.
  • H-Resize: Use SSE4.1 (movntdqa) loads for use once memory access.
  • H-Resize: Added SSE2 horizontal unpacker.
  • Resize: Use SSE3 (lddqu) loads for unaligned memory access.
  • Added ultra fast vertical PointResizer (64 pixel/cycle).
  • Added dynamic SSSE3 vertical resizer (16 pixel/cycle) ~ twice as fast as old MMX.
  • Added dynamic SSE2 vertical resizer (16 pixel/cycle).
  • Added dynamic MMX vertical resizer (8 pixel/cycle).
  • Added SSSE3 version for RGBYV24 conversions.
  • Added dynamic compiled MMX/iSSE for RGBYV24 conversions. Speed is approx 200% of C-code.
  • Changes:
  • Import: Increase full path buffer to MAX_PATH*4 for multi char code pages like CP932 (Chikuzen).
  • Throw error when output number of frames will exceed MAXINT.
  • BlankClip: Supply useful defaults for new Audio/Video when using a Video/Audio only template clip.
  • BlankClip: Use duration from Audio only template as default length for new clip.
  • Define new IClip::SetCacheHints cachehint constants.
  • Force int call arguments to user script function float params to be explicit floats.
  • Splice pass CacheHints through to both children in + and ++ mode.
  • WriteFileStart/End save current_frame and set Last.
  • ConditionalReader do not ignore syntax errors in input file.
  • ImageSourceAnim Pad/Crop images to match first frame (Wilbert)
  • ImageSource Add version to messages (Wilbert)
  • Initial 2.6 API entry point linkage.
  • Use Invoke for graph tail, enhance non-clip output error reporting.
  • PopContext when inner block Asserts/throws (maxxon).
  • Remove duplicate definitions (Wilbert).
  • Enhance non-clip output error reporting.
  • Explicitly specify calling sequence as __cdecl for Avisynth softwire routines, (was the compiler default)
  • Use env->Invoke("Cache", ...) everywhere instead of Cache::Create_Cache(), allows for Cache to be overloaded by a plugin.
  • ConvertToYUY2 Change from 0-1-1 kernel to 1-2-1 kernel.
  • Tweak make Interp same units as minSat and maxSat.
  • Check HKEY_CURRENT_USER for PluginDir first. (henktiggelaar)
  • Make forced, -ve, planar alignment of chroma planes match subsampling.
  • Enforce planar alignment restrictions.
  • C-api: Remove func sub-struct from AVS_Library struct
  • Add error code to plugin load failure message
  • Make default planar AVI output packed. Control with OPT_AVIPadScanlines=True.
  • WriteFile() now supports unlimited number of unlimited strings. (was 16 by 254 byte strings).
  • ConvertToRGB*, make C++ code sample chroma the same as the MMX code i.e. use both pixels.
  • ConvertToRGB*, use YV24 path for planar, complain when options are present for YUY2.
  • ConvertToYUY2, use YV16 path for planar, complain when options are present for RGB see: http://forum.doom9.org/showthread.ph...81#post1378381
  • Thread safe code, part 2.
  • Correct IClip baked documentation
  • Passify compilation error/warnings (XhmikosR)
  • for, const, extern and ansi patches for VC2008 (SEt)
  • Disable OPT_RELS_LOGGING option
  • Change implicit Last parsing for argless, bracketless calls to match bracketed cases. (Gavino)
  • DirectShowSource: Support last minute format renegotiation thru IPin::QueryAccept() & Validate the size of the provided directshow buffer.
  • Remove non ascii chars from comments.
  • Add core stubs for DirectShowSource, TCPServer & TCPSource, report when plugins are missing.
  • Add note for original source downloads - SoundTouch
  • Add more lineage history to Info()
  • Move convertaudio, alignplanar, fillborder & MIN/MAX_INT definitions.
  • Run AtExit before dismantling world.
  • Change setcachehints definition from void to int. Test IClip version >= 5.
  • Move PixelClip definition to avisynth.cpp
  • SubTitle, etc, make X & Y options float (0.125 pixel granularity).
  • ShowSMPTE() supports all integer FPS and multiplies of drop frame FPS.
  • SubTitle, stop overwriting string constants (Gavino).
  • SubTitle, improve pixel registration (Gavino).
  • Make Info() CPU display hierarchical.
  • Thread safe code, part 1.
  • SoftwireHelper: explicit hardware exception handling.
  • Resize: Moved GetResampleFunction into Resamplefuntion, to allow overrides.
  • Resampler: Removed dead stlf code.
  • Updated Soundtouch to 1.31 (2.5.8)
  • Put dynamic matrix conversion into separate file.
  • Moved chroma subsampling to image_type section.
  • Added specific error reporting when requesting chromasubsampling with Y8.
  • Split up merge and plane Swappers.
  • Split up Plane transfers into separate classes.
  • Added automatic destination colorspace detection on planar YtoUV.
  • Took out greyscale and RGB32RGB24 from convert.cpp and placed them in separate files.
  • All code assuming UVwidth = Ywidth/2 and similar should be gone.

New in AviSynth 2.6.0 Alpha 4 (Jan 14, 2013)

  • Additions:
  • Info: Audio only clip now creates its own canvas video.
  • AviSource: Include packed/padded processing and -ve biHeight logic for compressed input.
  • Add Script Functions :- Tau, BitLRotate, BitRRotate, BitChange, BitClear, BitSet, BitTest and their asm aliases.
  • Add WeaveRows (blit cost) and WeaveColumns (slow) frame combining filters.
  • Add AudioDuration() [as float seconds], IsY8(), IsYV411() & PixelType() [as a string] script functions.
  • Add Echo and Preroll filters.
  • Add IScriptEnvironment::GetAVSLinkage() and DLLExport AVS_linkage for host usage of avisynth.dll.
  • DirectShowSource, 2.6 plugin, support pixel types "AYUV" as YV24, "Y41P" and "Y411" as YV411.
  • AviSource: Add Full and Auto pseudo pixel_types. Full is all supported. Auto is YV12, YUY2, RGB32, RGB24 & Y8.
  • Add "AudioLengthS" [as a string], "Ord" & "FillStr" script functions.
  • Add AudioTrim(clip, float, float) audio priority trimming, args in fractional seconds.
  • Add Trim(M, Length=N[, Pad=False]) and Trim(M, End=N[, Pad=False]) function overloads for explicit Trimming. Length=0 means zero frame clip. End=0 means end at frame 0.
  • Add SeparateRows (zero cost) and SeparateColumns (slow) frame slashing filters.
  • Add Script Functions :- Acos, Asin, Atan, Atan2, Cosh, Sinh, Tanh, Fmod, Log10, BitLShift, BitRShiftS, BitRShiftU and Hex.
  • Add "ConditionalSelect","csc+[show]b" runtime filter.
  • Add dither option to Levels, RGBAdjust & Tweak.
  • Add BitAnd(), BitNot(), BitOr() & BitXor() script functions.
  • Add StrCmp() & StrCmpI() script functions.
  • Add YV24 support for Limiter show option.
  • Add "Global OPT_dwChannelMask={int}"
  • Add 0x0063F speaker mask for 7.1 WAVE_FORMAT_EXTENSIBLE.
  • Add .dll DelayLoad exception texts to crash message formatter.
  • ImageWriter, add support for printf formating of filename string, default is ("d.%s", n, ext);
  • Add avs_get_error(AVS_ScriptEnvironment*); to avisynth_c interface.
  • Catch and save AvisynthError text in more avisynth_c entry points, for kemuri-_9.
  • Add ScriptName(), ScriptFile(), ScriptDir() functions (WarpEnterprises).
  • Add SkewRows filter.
  • Histogram, Levels mode, Improve colour of chroma legends.
  • ConditionalFilter, teach about string results.
  • Add some more "Add/Remove Software" registry keys to the Installer (XhmikosR).
  • AviSource: Support both packed and DWORD padded raw planar input like with DSS.
  • Add IScriptEnvironment::ApplyMessage()
  • Add ImageSourceAnim (Wilbert)
  • Support user upgrade to 178 DevIL.dll (They need to manage CRT dependancies).
  • ImageSource: palette and compressed bmp images load correctly now (issue 894702) [need 178 DevIL.dll]
  • ImageSource: support for other formats like: gif, exr, jp2, psd, hdr [need 178 DevIL.dll]
  • Add YV24 mode to ColorBars.
  • Add ColorBarsHD based on arib_std_b28.
  • C-api usability enhancements from kemuri9 [Work in progress!]
  • Add Undefined(), AudioLengthLo(), AudioLengthHi(), IsYV16() & IsYV24() script functions
  • Allow newlines (and hence comments) before '{' -- Gavino
  • Added IScriptEnvironment::DeleteScriptEnvironment()
  • Added Histogram, population clamp % factor for "Levels" mode,
  • Histogram, revert "Stereo" mode to YV12, Add "StereoY8" mode,
  • AviSource: Support fourcc "GREY" as Y8
  • Added support for argument passing and EAX return value to SoftwireHelper.
  • Added "Global OPT_VDubPlanarHack=True" to flip YV24 and YV16 chroma planes for old VDub's.
  • Added "Global OPT_AVIPadScanlines=True" option for DWORD aligned planar padding
  • Added Matrix="AVERAGE" mode.
  • Added ContinuedDenominator/ContinuedNumerator(f[]i[limit]i) script functions.
  • Tweak: fix MaskPointResizing + put back Dividee ISSE code (use sse=true).
  • Added ChromaInPlacement, ChromaOutPlacement and ChromaResample options to planar colour conversions.
  • Added MaskHS.
  • Source tweaks to get ready for VC8.
  • Add Y8 for DevIL, planarize EBMP.
  • Planar support for many filters.
  • Added Info() time indicator on audio length and video (current frame & total). (2.5.8)
  • Added UtoY8 and VtoY8.
  • Added more info to Info(). (2.5.8)
  • ColorYUV: Added all adjustment parameters as conditional variables "coloryuv_SETTING". Enable by setting conditional=true.
  • ConditionalReader: Added support for type String.
  • ConditionalReader: Added offset keyword to offset all frame numbers after the keyword.
  • Added SincResize() with optional taps parameter (default is 4).
  • Added Custom band setting to SuperEQ to allow all 16 bands to be set from script. Usage: SuperEQ(clip,band1, band2, band3....) values are dB in float.
  • Added fast 0-1-0 kernel for YV24 to ConvertBacktoYUY2().
  • Added core formats: YV24, YV16, Y8, YV411.
  • Bugfixes:
  • Fixed HexValue parsing values greater than 7FFFFFFF, now as unsigned hex.
  • Fixed ConditionalReader memory overrun parsing bools.
  • Fixed ResampleAudio NOP test to compare vi.num_audio_samples, not sample rate.
  • Fixed YV24 -> RGB24 overrun cleanup for widths == 5.
  • Fixed RGB24 AddBorders with right=0.
  • Fixed conditional_functions error message names (Wilbert).
  • Fixed Audio cache ac_expected_next regression.
  • Fixed ImageSource deal with add 1 to IL_NUM_IMAGES bug (Wilbert)
  • Fixed Overlay YV24 V plane conversion.
  • Fixed Overlay YV24 mode with shared input clip, needed a MakeWritable.
  • Fixed ImageReader upside down TIFF in 178 DevIL. (Wilbert)
  • Fixed string+string bug when total length is 4096*K-1.
  • Fixed SincResize misuse of "int abs(int)" (Gavino). Fix Lanczos and Blackman sinc use of float == 0.0, use small limit "> 0.000001".
  • Fixed Classic mode legend drawing for planar right limit and yuy2 centre line.
  • Fixed possible MT race. Use "env->ManageCache(MC_IncVFBRefcount, ...)" in ProtectVFB.
  • Fixed SwapYToUV output image size bug for 3 clip case.
  • Fixed Crop limit tests for RGB.
  • Fixed Overlay yellow tint on rec601 RGB import conversion.
  • Fixed YtoUV() output image size bug for 3 clip case.
  • Fixed ConvertToPlanar chroma alignment.
  • Fixed Levels (RGB) change use of PixelClip(x) to min(max(x, 0), 255).
  • Fixed SwapYtoUV yuy2 crash (StainlessS).
  • Fixed Overlay saturate UV in add and subtract mode.
  • Fixed Info.h range protect display characters (StainlessS).
  • Fixed AviSource packed planar import chroma offsets.
  • Fixed AviSource NULL GetWritePtr() failure due to premature setting of last_frame.
  • Fixed Mask rounding in greyscale calcs (Wilbert), minor refactor.
  • Fixed SelectRangeEvery audio snafu (Gavino).
  • Fixed LoadPlugin, SaveString of result string.
  • Fixed LoadPlugin, use _vsnprintf.
  • Fixed LoadVirtualdubPlugin, don't add vdub filter to chain on load failure.
  • Fixed rounding in RGB HResize (JoshyD) (affects all resizers)
  • Fixed error message name in the filter VerticalReduceBy2
  • Fixed SeparateFields() with variable parity input clip (Wilbert)
  • Fixed AviSource, cannot cast__int64* to long*, it does not work!
  • Fixed ConditionalReader: Don't allow out of range "Range" to overwrite edge values
  • Fixed MonoToStereo with stereo sources.
  • Fixed MergeChannels with only 1 input clip.
  • Fixed AviSource support for negative height DIB format AVI's.
  • Fixed Audio cache crashes.
  • Fixed resize with YV411, missing code.
  • Fixed ConditionalReader rounding with integer interpolation.
  • Fixed Softwire SSE2 bugs.
  • Fixed SSSE3 CPU detection.
  • Fixed SSSE3, SSE4.1 & SSE4.2 detection.
  • Fixed Fastwire encoding of instructions that are >2 opcodes (SSSE3+4).
  • Fixed _RPT5() macro for debug builds
  • Optimizations:
  • ConvertToPlanarGeneric explicit add Cache before chroma rescaler.
  • Overlay minor refactor YV12 -> 444 chroma
  • Speedup ConvertToMono(), minor refactor MixAudio().
  • Change StackVertical/Horizontal to interative instead of recursive, 2^N performace increase for 3 and more clips, i.e. 1 blit total instead of blit(blit(blit(...
  • RGBtoY8 Dynamic ASM code, support for RGB24.
  • YV24backtoYUY2 Dynamic ASM code.
  • UtoY8, VtoY8 abuse subframe, zero cost.
  • YV24RGB Add SSE2 and SSSE3 code paths, get rid of wide_enough.
  • ConvertToYUY2 Add SSE2, MMX restore full speed on platforms with poor ooox.
  • ConvertAudio, manage tempbuffer and floatbuffer independantly.
  • ConvertAudio, prefer SSE2 over 3DNow for super AMD cores.
  • Info.h, full refactor, a good example of "Never look down", thx StainlessS
  • DoubleWeaveFrames, If A not writable, try to write to B, else make new frame
  • Histogram, fix GetFrame/NewVideoFrame call order
  • HResizer, interleave code +4% faster
  • YtoUV() Abuse Subframe to snatch the Y plane / UV planes, Derestrict destination colorformat autogeneration.
  • ImageSource: Improve thread interlock code
  • ConditionalReader/WriteFile: Full refactor.
  • Replace _strdup with SaveString in AddFunction (Thanks Gavino)
  • SuperEQ: Improve channel unpacking/packing code.
  • H-Resize: Use SSE4.1 (movntdqa) loads for use once memory access.
  • H-Resize: Added SSE2 horizontal unpacker.
  • Resize: Use SSE3 (lddqu) loads for unaligned memory access.
  • Added ultra fast vertical PointResizer (64 pixel/cycle).
  • Added dynamic SSSE3 vertical resizer (16 pixel/cycle) ~ twice as fast as old MMX.
  • Added dynamic SSE2 vertical resizer (16 pixel/cycle).
  • Added dynamic MMX vertical resizer (8 pixel/cycle).
  • Added SSSE3 version for RGBYV24 conversions.
  • Added dynamic compiled MMX/iSSE for RGBYV24 conversions. Speed is approx 200% of C-code.
  • Changes:
  • BlankClip: Supply useful defaults for new Audio/Video when using a Video/Audio only template clip.
  • BlankClip: Use duration from Audio only template as default length for new clip.
  • Define new IClip::SetCacheHints cachehint constants.
  • Force int call arguments to user script function float params to be explicit floats.
  • Splice pass CacheHints through to both children in + and ++ mode.
  • WriteFileStart/End save current_frame and set Last.
  • ConditionalReader do not ignore syntax errors in input file.
  • ImageSourceAnim Pad/Crop images to match first frame (Wilbert)
  • ImageSource Add version to messages (Wilbert)
  • Initial 2.6 API entry point linkage.
  • Use Invoke for graph tail, enhance non-clip output error reporting.
  • PopContext when inner block Asserts/throws (maxxon).
  • Remove duplicate definitions (Wilbert).
  • Enhance non-clip output error reporting.
  • Explicitly specify calling sequence as __cdecl for Avisynth softwire routines, (was the compiler default)
  • Use env->Invoke("Cache", ...) everywhere instead of Cache::Create_Cache(), allows for Cache to be overloaded by a plugin.
  • ConvertToYUY2 Change from 0-1-1 kernel to 1-2-1 kernel.
  • Tweak make Interp same units as minSat and maxSat.
  • Check HKEY_CURRENT_USER for PluginDir first. (henktiggelaar)
  • Make forced, -ve, planar alignment of chroma planes match subsampling.
  • Enforce planar alignment restrictions.
  • C-api: Remove func sub-struct from AVS_Library struct
  • Add error code to plugin load failure message
  • Make default planar AVI output packed. Control with OPT_AVIPadScanlines=True.
  • WriteFile() now supports unlimited number of unlimited strings. (was 16 by 254 byte strings).
  • ConvertToRGB*, make C++ code sample chroma the same as the MMX code i.e. use both pixels.
  • ConvertToRGB*, use YV24 path for planar, complain when options are present for YUY2.
  • ConvertToYUY2, use YV16 path for planar, complain when options are present for RGB see: http://forum.doom9.org/showthread.ph...81#post1378381
  • Thread safe code, part 2.
  • Correct IClip baked documentation
  • Passify compilation error/warnings (XhmikosR)
  • for, const, extern and ansi patches for VC2008 (SEt)
  • Disable OPT_RELS_LOGGING option
  • Change implicit Last parsing for argless, bracketless calls to match bracketed cases. (Gavino)
  • DirectShowSource: Support last minute format renegotiation thru IPin::QueryAccept() & Validate the size of the provided directshow buffer.
  • Remove non ascii chars from comments.
  • Add core stubs for DirectShowSource, TCPServer & TCPSource, report when plugins are missing.
  • Add note for original source downloads - SoundTouch
  • Add more lineage history to Info()
  • Move convertaudio, alignplanar, fillborder & MIN/MAX_INT definitions.
  • Run AtExit before dismantling world.
  • Change setcachehints definition from void to int. Test IClip version >= 5.
  • Move PixelClip definition to avisynth.cpp
  • SubTitle, etc, make X & Y options float (0.125 pixel granularity).
  • ShowSMPTE() supports all integer FPS and multiplies of drop frame FPS.
  • SubTitle, stop overwriting string constants (Gavino).
  • SubTitle, improve pixel registration (Gavino).
  • Make Info() CPU display hierarchical.
  • Thread safe code, part 1.
  • SoftwireHelper: explicit hardware exception handling.
  • Resize: Moved GetResampleFunction into Resamplefuntion, to allow overrides.
  • Resampler: Removed dead stlf code.
  • Updated Soundtouch to 1.31 (2.5.8)
  • Put dynamic matrix conversion into separate file.
  • Moved chroma subsampling to image_type section.
  • Added specific error reporting when requesting chromasubsampling with Y8.
  • Split up merge and plane Swappers.
  • Split up Plane transfers into separate classes.
  • Added automatic destination colorspace detection on planar YtoUV.
  • Took out greyscale and RGB32RGB24 from convert.cpp and placed them in separate files.
  • All code assuming UVwidth = Ywidth/2 and similar should be gone.

New in AviSynth 2.6.0 Alpha 3 (May 26, 2011)

  • Additions:
  • Added support for argument passing and EAX return value to SoftwireHelper.
  • Added "Global OPT_VDubPlanarHack=True" to flip YV24 and YV16 chroma planes for old VDub's.
  • Added ContinuedDenominator/ContinuedNumerator(f[]i[limit]i) script functions. [undocumented]
  • Tweak: fix MaskPointResizing + put back Dividee ISSE code (use sse=true, can't use all settings in that case). [undocumented]
  • Added ChromaPlacement and ChromaResample options to planar colour conversions.
  • Added MaskHS.
  • Minor tweaks to get ready for VC8.
  • Add Y8 for DevIL, planarize EBMP.
  • Planar support for many filters.
  • Added Info() time indicator on audio length and video (current frame & total). (2.5.8)
  • Added UtoY8 and VtoY8.
  • Added more info to Info(). (2.5.8)
  • ColorYUV: Added all adjustment parameters as conditional variables "coloryuv_SETTING". Enable by setting conditional=true. [undocumented]
  • ConditionalReader: Added support for type String. [undocumented]
  • ConditionalReader: Added offset keyword to offset all frame numbers after the keyword. [undocumented]
  • Added SincResize() with optional taps parameter (default is 4).
  • Added Custom band setting to SuperEQ to allow all 16 bands to be set from script. Usage: SuperEQ(clip,band1, band2, band3....) values are dB in float.
  • Added fast 0-1-0 kernel for YV24 to ConvertBacktoYUY2().
  • Added formats: YV24, YV16, Y8, YV411.
  • Bugfixes:
  • Fixed MonoToStereo with stereo sources.
  • Fixed MergeChannels with only 1 input clip.
  • Fixed support for negative height DIB format AVI's. (Oops still not quite right yet)
  • Fixed Audio cache crashes.
  • Fixed resize with YV411 missing code.
  • Fixed ConditionalReader rounding with integer Interpolation.
  • Fixed Softwire SSE2 bugs.
  • Fixed SSSE3 CPU detection.
  • Fixed SSSE3, SSE4.1 & SSE4.2 detection.
  • Fixed Fastwire encoding of instructions that are >2 opcodes (SSSE3+4).
  • Fixed _RPT5() macro for debug builds
  • Optimizations:
  • WriteFile() now supports 32 unlimited strings. (was 16 by 254 byte strings).
  • SuperEQ: Improve channel unpacking/packing code.
  • H-Resize: Use SSE4.1 (movntdqa) loads for use once memory access.
  • H-Resize: Added SSE2 horizontal unpacker.
  • Resize: Use SSE3 (lddqu) loads for unaligned memory access.
  • Added ultra fast vertical PointResizer (64 pixel/cycle).
  • Added dynamic SSSE3 vertical resizer (16 pixel/cycle) ~ twice as fast as old MMX.
  • Added dynamic SSE2 vertical resizer (16 pixel/cycle).
  • Added dynamic MMX vertical resizer (8 pixel/cycle).
  • Added SSSE3 version for RGBYV24 conversions.
  • Added dynamic compiled MMX/iSSE for RGBYV24 conversions. Speed is approx 200% of C-code.
  • Changes:
  • ConditionalReader/WriteFile: Full refactor.
  • SoftwireHelper: explicit hardware exception handling.
  • Resize: Moved GetResampleFunction into Resamplefuntion, to allow overrides.
  • Resampler: Removed dead stlf code.
  • Updated Soundtouch to 1.31 (2.5.8)
  • Put dynamic matrix conversion into separate file.
  • Moved chroma subsampling to image_type section.
  • Added specific error reporting when requesting chromasubsampling with Y8.
  • Split up merge and plane Swappers.
  • Split up Plane transfers into separate classes.
  • Added automatic destination colorspace detection on planar YtoUV.
  • Took out greyscale and RGB32RGB24 from convert.cpp and placed them in separate files.
  • All code assuming UVwidth = Ywidth/2 and similar should be gone.

New in AviSynth 2.6.0 Alpha 2 (Sep 28, 2009)

  • Additions
  • Added support for argument passing and EAX return value to SoftwireHelper.
  • Added "Global OPT_VDubPlanarHack=True" to flip YV24 and YV16 chroma planes for old VDub's.
  • Added ContinuedDenominator/ContinuedNumerator(f[]i[limit]i) script functions. [undocumented]
  • Tweak: fix MaskPointResizing + put back Dividee ISSE code (use sse=true, can't use all settings in that case). [undocumented]
  • Added ChromaPlacement and ChromaResample options to planar colour conversions.
  • Added MaskHS.
  • Minor tweaks to get ready for VC8.
  • Add Y8 for DevIL, planarize EBMP.
  • Planar support for many filters.
  • Added Info() time indicator on audio length and video (current frame & total). (2.5.8)
  • Added UtoY8 and VtoY8.
  • Added more info to Info(). (2.5.8)
  • ColorYUV: Added all adjustment parameters as conditional variables "coloryuv_SETTING". Enable by setting conditional=true. [undocumented]
  • ConditionalReader: Added support for type String. [undocumented]
  • ConditionalReader: Added offset keyword to offset all frame numbers after the keyword. [undocumented]
  • Added SincResize() with optional taps parameter (default is 4).
  • Added Custom band setting to SuperEQ to allow all 16 bands to be set from script. Usage: SuperEQ(clip,band1, band2, band3....) values are dB in float.
  • Added fast 0-1-0 kernel for YV24 to ConvertBacktoYUY2().
  • Added formats: YV24, YV16, Y8, YV411.
  • Bugfixes
  • Fixed MonoToStereo with stereo sources.
  • Fixed MergeChannels with only 1 input clip.
  • Fixed support for negative height DIB format AVI's. (Oops still not quite right yet)
  • Fixed Audio cache crashes.
  • Fixed resize with YV411 missing code.
  • Fixed ConditionalReader rounding with integer Interpolation.
  • Fixed Softwire SSE2 bugs.
  • Fixed SSSE3 CPU detection.
  • Fixed SSSE3, SSE4.1 & SSE4.2 detection.
  • Fixed Fastwire encoding of instructions that are >2 opcodes (SSSE3+4).
  • Fixed _RPT5() macro for debug builds
  • Optimizations
  • WriteFile() now supports 32 unlimited strings. (was 16 by 254 byte strings).
  • SuperEQ: Improve channel unpacking/packing code.
  • H-Resize: Use SSE4.1 (movntdqa) loads for use once memory access.
  • H-Resize: Added SSE2 horizontal unpacker.
  • Resize: Use SSE3 (lddqu) loads for unaligned memory access.
  • Added ultra fast vertical PointResizer (64 pixel/cycle).
  • Added dynamic SSSE3 vertical resizer (16 pixel/cycle) ~ twice as fast as old MMX.
  • Added dynamic SSE2 vertical resizer (16 pixel/cycle).
  • Added dynamic MMX vertical resizer (8 pixel/cycle).
  • Added SSSE3 version for RGBYV24 conversions.
  • Added dynamic compiled MMX/iSSE for RGBYV24 conversions. Speed is approx 200% of C-code.
  • Changes
  • ConditionalReader/WriteFile: Full refactor.
  • SoftwireHelper: explicit hardware exception handling.
  • Resize: Moved GetResampleFunction into Resamplefuntion, to allow overrides.
  • Resampler: Removed dead stlf code.
  • Updated Soundtouch to 1.31 (2.5.8)
  • Put dynamic matrix conversion into separate file.
  • Moved chroma subsampling to image_type section.
  • Added specific error reporting when requesting chromasubsampling with Y8.
  • Split up merge and plane Swappers.
  • Split up Plane transfers into separate classes.
  • Added automatic destination colorspace detection on planar YtoUV.
  • Took out greyscale and RGB32RGB24 from convert.cpp and placed them in separate files.
  • All code assuming UVwidth = Ywidth/2 and similar should be gone.

New in AviSynth 2.6.0 Alpha 1 (Aug 31, 2009)

  • The main pupose of this release is to confirm compatibility with version 2.5.8. For scripts using only 2.5.8 features the results should be identical.
  • This version does not contain all of the latest features in the experimental 2_6 CVS tree. It supports Y8, YV24 and YV16 colour spaces in most existing filters. Other features will be imported in an on going manner.
  • Note this installer does not include any of the documentation. You should install 2.5.8 and then install this version over the top.

New in AviSynth 2.5.8 RC5 / 2.5.7 (Dec 27, 2008)

  • Includes Czech documentation.
  • Other minor documentation updates.
  • Fix YV12 regression is ShowFiveVersions()
  • Add 0.5millisecond rounding to convertfps logic n DirectShowSource()

New in AviSynth 2.5.8 RC2 (Jul 31, 2008)

  • Additions:
  • Added Polish doc translation (by Slim, Krismen & Co).
  • Added Japanese translation (by niiyan).
  • Installer standalone option for putting avisynth.dll, etc into install directory and NOT updating registry.
  • Blankclip added audio channels= and sample_type= arguments.
  • ConvertAudio(cii) available to plugins via env->Invoke().
  • Added font aspect, rotation and alpha to text routines.
  • Added /xxx */ block comments.
  • Added [[xxx *] *] nestable block comments.
  • SetMemoryMax(0) to just return current Memory Max value.
  • Added planar YV12 color format to Compare() [Fizick].
  • ColorKeyMask: Allow independant tolerance levels for each channel.
  • Added Tweak Hue/Saturation range limiting.
  • Added AudioLevels and Color2 modes to Histogram.
  • Adding global OPT_UseWaveExtensible=True to your script enables WAVE_FORMAT_EXTENSIBLE audio output.
  • Added ShowTime() script verb, like ShowSMPTE() but with milliseconds.
  • Added BlackmanResize() and Spline64Resize().
  • Modified DeleteFrame()/DuplicateFrame() to process multiple arguments.
  • Added Min()/Max() script functions.
  • Bugfixes:
  • Fixed AviSource() decoding to RGB24 logic regression.
  • Added workaround for HuffYUV, Xvid reading past end of input buffer.
  • Fixed current_frame value in nested runtime script invocations. (Gavino)
  • Fixed Dissolve overlap arg range checking. (gzarkadas)
  • Fixed OpenDMLSource() multithreading race problem. (QuaddiMM)
  • Fixed unsaved variableName string in ConditionalReader.
  • Fixed Parser FunctionTable::TypeMatch() missing compulsory arguments. Dissolve bug (Various).
  • Fixed DirectShowSource() QueryId() use CoTaskMemAlloc for returned value (Dean Pavlekovic).
  • Fixed DirectShowSource() use GraphBuilder object for media control (Avery Lee).
  • Fixed DirectShowSource() remove PulseEvent calls (Avery Lee).
  • Fixed DirectShowSource() QueryAccept() modifying VideoInfo in running script (Haali).
  • Fixed Blankclip clip= argument parsing.
  • Fixed trashed GPF report, i.e reading 0x0 at 0x0 exception reporting.
  • Fixed and refactored Overlay RGBYUV conversion routines.
  • Fixed ImageReader incompletely inited videoInfo.
  • Fixed Layer RGB32 100% alpha implementation, use level=257 (new default).
  • Fixed avisynth_c.h avs_is_parity_known().
  • Fixed C ConvertAudio::Saturate_int32() rounding.
  • Fixed WriteFile(), Now remembers absolute path to file.
  • Fixed Info() frame pitch, reports pitch of input frame.
  • Fixed Invert() right edge memory overrun/corruption.
  • Fixed Histogram() Classic mode pixel values exceeding YUV limits.
  • Fixed Histogram() chroma plane initialization to 128.
  • Fixed Conditional reader/writer illegally saving IScriptEnvironment pointer.
  • Fixed YV12 Blur()/Sharpen() right edge pixel corruption with non-writable input frames.
  • Fixed MMX Blur()/Sharpen() code to full 8 bit precision.
  • Fixed IsAudioFloat()/IsAudioInt() script functions.
  • Fixed Cache memory oversubscription of SetMemoryMax() limit.
  • Optimizations:
  • DirectShowSource() FPS detection as last attempt tries getting the duration of 1st frame.
  • DirectShowSource() convertfps=true rely only on sample start time.
  • Refactor horizontal planar resizer, no width restrictions or 2 byte overwrite.
  • Provide a simple and fast text writing primatives, see info.h
  • Make audio cache actually functional.
  • Tweak() speed improvements.
  • Subtract() speed improvements.
  • Tuneup Overlay() ISSE Convert444ChromaToYV12 and also provide MMX version.
  • PokeCache internal interface implemented.
  • Cache and Memory management enhancements.
  • Changes:
  • Test VFB data buffer for NULL malloc's, if so then Throw!
  • Initial Memory Max value clamped to 1GB.
  • Installer Start menu shortcut names translated.
  • Test for UTF-8 and Unicode BOM prefixes and issue a useful warning.
  • Removed useless current_sample from runtime script environment.
  • Added critical section to CAVIFileSynth class.
  • Enable Installer multi language support [Need volunteers to do translations].
  • FunctionTable::Lookup() now considers named arguments in making its selection.
  • ImageWriter supports negative values as -count for End argument.
  • ChanegFPS() use floor instead of round in source frame number calculation.
  • Update usage of correct (updated) Rec.709 coefficients.
  • Add TCPDeliver.map and DirectShowSource.map to releases.
  • Convert to Dynamic Assembled rgb to yuy2 code.
  • Avisynth_c.h boolean functions return 1 for true instead of arbitrary non-zero.
  • Internal RGB2YUV() now copies Alpha top byte through.
  • CoUninitialize() done immediately for S_FALSE CoInitialize() returns, i.e we do not hold a COM use count.
  • Pfc, Softwire and SoundTouch updated and added as dependency projects.
  • UPX updated to version 2.03 (2006-11-07).
  • Default Memory Max value increased to half minus 64Mb when over 256MB free.
  • AVISource/WavSource map WAVEFORMATEXTENSIBLE back to equivalent WAVEFORMATEX.
  • DirectShowSource() now recognises incorrect AM_MEDIA_TYPE subtype for WAVE_FORMAT_EXTENSIBLE audio and corrects the data and accepts it.
  • DirectShowSource() now attempts to use partial graph from failing RenderFile call.
  • DirectShowSource() now detects and handles non 32 bit aligned picture lines from dud codecs.
  • Crop(align=true) tests actual alignment in each GetFrame call.
  • Relax YV12 resizer width restriction, now mod 2 was mod 4.
  • .AVSI failures during env->CreateScriptEnvironment() are now available to the GetError() interface.
  • SetCacheHints(CACHE_RANGE, n) will now surrender frames to satisfy SetMemoryMax().
  • CoInitialize()/CoUninitialize() now done as part of ScriptEnvironment creation/deletion.
  • Much code from 2.6 base included. Typically IsYV12() changed to IsPlanar().

New in AviSynth 2.5.8 RC1 (27.05.2008) (May 28, 2008)

  • Additions
  • ConvertAudio(cii) available to plugins via env->Invoke().
  • Added font aspect, rotation and alpha to text routines.
  • Added /* xxx */ block comments.
  • Added [* [* xxx *] *] nestable block comments.
  • SetMemoryMax(0) to just return current Memory Max value.
  • Added planar YV12 color format to Compare() [Fizick].
  • ColorKeyMask: Allow independant tolerance levels for each channel.
  • Added Tweak Hue/Saturation range limiting.
  • Added AudioLevels and Color2 modes to Histogram.
  • Adding global OPT_UseWaveExtensible=True to your script enables WAVE_FORMAT_EXTENSIBLE audio output.
  • Added ShowTime() script verb, like ShowSMPTE() but with milliseconds.
  • Added BlackmanResize() and Spline64Resize().
  • Modified DeleteFrame()/DuplicateFrame() to process multiple arguments.
  • Added Min()/Max() script functions.
  • Bugfixes
  • Fixed ImageReader incompletely inited videoInfo.
  • Fixed Layer RGB32 100% alpha implementation, use level=257 (new default).
  • Fixed avisynth_c.h avs_is_parity_known().
  • Fixed C ConvertAudio::Saturate_int32() rounding.
  • Fixed WriteFile(), Now remebers absolute path to file.
  • Fixed Info() frame pitch, reports pitch of input frame.
  • Fixed Invert() right edge memory overrun/corruption.
  • Fixed Histogram() Classic mode pixel values exceeding YUV limits.
  • Fixed Histogram() chroma plane initialization to 128.
  • Fixed Conditional reader/writer illegally saving IScriptEnvironment pointer.
  • Fixed YV12 Blur()/Sharpen() right edge pixel corruption with non-writable input frames.
  • Fixed MMX Blur()/Sharpen() code to full 8 bit precision.
  • Fixed IsAudioFloat()/IsAudioInt() script functions.
  • Fixed Cache memory oversubscription of SetMemoryMax() limit.
  • Optimizations
  • DirectShowSource() FPS last attempt try for duration of 1st frame.
  • DirectShowSource() convertfps rely only on sample start time.
  • Refactor horizontal planar resizer, no width restrictions or 2 byte overwrite.
  • Provide a simple and fast text writing primatives, see info.h
  • Make audio cache actually functional.
  • Tweak speed improvements.
  • Subtract speed improvements.
  • Tuneup Overlay() ISSE Convert444ChromaToYV12 and also provide MMX version.
  • PokeCache interface implemented.
  • Cache and Memory management enhancements.
  • Changes
  • Convert to Dynamic Assembled rgb to yuy2 code.
  • Avisynth_c.h boolean functions return 1 for true instead of arbitrary non-zero.
  • Internal RGB2YUV() now copies Alpha top byte through.
  • CoUninitialize() done immediately for S_FALSE CoInitialize() returns, i.e we do not hold a COM use count.
  • Pfc, Softwire and SoundTouch updated and added as dependency projects.
  • UPX updated to version 2.03 (2006-11-07).
  • Default Memory Max value increased to half minus 64Mb when over 256MB free.
  • AVISource/WavSource map WAVEFORMATEXTENSIBLE back to equivalent WAVEFORMATEX.
  • DirectShowSource() now recognises incorrect AM_MEDIA_TYPE subtype for WAVE_FORMAT_EXTENSIBLE audio and corrects the data and accepts it.
  • DirectShowSource() now attempts to use partial graph from failing RenderFile call.
  • DirectShowSource() now detects and handles non 32 bit aligned picture lines from dud codecs.
  • Crop(align=true) tests actual alignment in each GetFrame call.
  • Relax YV12 resizer width restriction, now mod 2 was mod 4.
  • .AVSI failures during env->CreateScriptEnvironment() are now available to the GetError() interface.
  • SetCacheHints(CACHE_RANGE, n) will now surrender frames to satisfy SetMemoryMax().
  • CoInitialize()/CoUninitialize() now done as part of ScriptEnvironment creation/deletion.
  • Much code from 2.6 base included. Typically IsYV12() changed to IsPlanar().

New in AviSynth 2.5.7 (Jan 7, 2007)

  • Avisynth COM object now implements IAVIStreaming interface.
  • DirectShowSource() enhancements.
  • Added KillVideo() verb.
  • TimeStretch SoundTouch library update, fixes and access to tuning parameter.
  • Explicitly try to request full sample rate, all channels and float, 32 bit then 24 bit samples from the audio codec.
  • File input/output support for WAVE_FORMAT_IEEE_FLOAT audio.
  • File input more than 2 channels in the audio stream.
  • Installer enhancments. Handling of readonly/protected target files.
  • Avisynth_c interface enhancments.
  • Hack for Fraunhoffer MP3 codec to work when wBitPerSample==16.
  • Added Portugese translation by RoLon.
  • Partly updated French translation by JasonFly.
  • Subtitle multi line text.
  • xxxFPS("preset") string preset FPS values.
  • ImageSource no longer uses static buffer.
  • Fixed Negative int arg handling for ApplyRange() and Animate().
  • Fixed SaveString memory block overrun.
  • Fixed $Plugin!Functionname!Param$ bug.
  • Fixed Various resource leaks.
  • Fixed runtime mixed SEH/C exception handling for XPsp2.
  • Fixed CAVIStreamSynth::Read audio buffer overrun.
  • Fixed Assert("...%...") crash.
  • Fixed Number parser returning inaccurate float conversions.
  • Fixed resizer subpixel shifting functionality and bad edge condition handling.
  • YUV ColorBars now match BT.801-1.
  • TCPDeliver updates, crash fixes and enhancments, big buffers.
  • Fixed Turn*() YUY2 mod 2 height test.
  • Fixed AVISource() corrupted error messages.
  • Fixed AVISource() direct input drop frame handling.
  • Remove 50 plugin auto prescan load limit.
  • Bracketless call of functions without arguments now get a cache.
  • Over-range numbers now raise a compile time exception.
  • xxxFPS(float) now uses continued fraction to generate a minimal rational pair.
  • ConvertFPS() blend mode works for all pixel formats.
  • SaveString memory blocks are now 32 bit aligned.
  • Default planar chroma planes mod 16 aligned.

New in AviSynth 2.5.7 RC3 (Jan 2, 2007)

  • Fix Cache of a cache of a cache .... problem (regression)
  • Have parser check for cache of a cache and skip extra instances.
  • Change ImageSource to not use a static buffer.