Список изменений

## Обновление 2.6.1 csv

* Pacify VS2015 /W4;
* Fix DV chroma positioning (UV swapped), Assert interlaced options only for YV12;
* VFAPI support for > 2^32 audio samples;
* ColorYUV support Y8;
* Make TemporalSoften reentrant (MT ready);
* Fix Histogram mode color, chroma fill;
* Compare support Y8;
* Add TimeStretch overload with rational pair arguments;
* Update to SoundTouch 1.9.2;

## Обновление 2.6.1 alpha 1

### Общие изменения и обновления

* Update to SoundTouch 1.9.0(Wilbert+IanB);
* 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;

### Изменения в коде

* Add offset parameter to conditional functions(Wilbert);
* Replace convert\_a.asm for yuy2 to rgb;
* Redo SEH exception handling code;
* VirtualQuery/GetModuleFileName + Trap on Invoke(SEt);
* Use LoadLibraryEx/LOAD\_WITH\_ALTERED\_SEARCH\_PATH for plugins;
* Use GetVarDef() extensivly;
* Handle exceptions from DevIL.dll now being delay loaded;
* Explicitly catch stray std::bad\_alloc and report;

### Исправления

* 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 (raffriff42);
* Fix avisynth\_c plane=0. Default params are not allowed in plain C;
* Fix MergeLuma allow any Planar test(Wilbert);
* Remove redundant self class spec from definition(Wilbert);

### Улучшения

* Evaluate Invert arguments once in Constructor not every GetFrame, Doh!;
* Move matrix decision into Convert constructor, overcome exceed cacheline;

### Изменения сборки

* Remove msvcP\*.dll dependencies;
* 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;

## Обновление 2.6.0

### Добавлено

* TCPDeliver, 2.6 plugin, support all pixel types. (Wilbert);
* 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;
* Added Script Functions :- BitLRotate, BitRRotate, BitChange, BitClear, BitSet, BitTest and their asm aliases;
* Added WeaveRows (blit cost) and WeaveColumns (slow) frame combining filters;
* Added AudioDuration() [as float seconds], IsY8(), IsYV411() & PixelType() [as a string] script functions;
* Added Echo and Preroll filters;
* Added 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;
* Added "AudioLengthS", "Ord" & "FillStr" script functions;
* Added AudioTrim(clip, float, float) audio priority trimming, args in fractional seconds;
* Added 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;
* Added SeparateRows (zero cost) and SeparateColumns (slow) frame slashing filters;
* Added Script Functions :- Acos, Asin, Atan, Atan2, Cosh, Sinh, Tanh, Fmod, Log10, BitLShift, BitRShiftS, BitRShiftU and Hex;
* Added "ConditionalSelect","csc+[show]b" runtime filter;
* Added dither option to Levels, RGBAdjust & Tweak;
* Added BitAnd(), BitNot(), BitOr() & BitXor() script functions;
* Added StrCmp() & StrCmpI() script functions;
* Added YV24 support for Limiter show option;
* Added "Global OPT\_dwChannelMask={int}";
* Added 0x0063F speaker mask for 7.1 WAVE\_FORMAT\_EXTENSIBLE;
* Added .dll DelayLoad exception texts to crash message formatter;
* ImageWriter, add support for printf formating of filename string, default is ("%06d.%s", n, ext);
* Added avs\_get\_error(AVS\_ScriptEnvironment\*); to avisynth\_c interface;
* Catch and save AvisynthError text in more avisynth\_c entry points, for kemuri-\_9;
* Added ScriptName(), ScriptFile(), ScriptDir() functions (WarpEnterprises);
* Added 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;
* Added IScriptEnvironment::ApplyMessage();
* Added 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];
* Added YV24 mode to ColorBars;
* Added ColorBarsHD based on arib\_std\_b28;
* C-api usability enhancements from kemuri9 [Work in progress!];
* Added 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 "Global OPT\_AVIPadScanlines=True" option for DWORD aligned planar padding;
* 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;
* Tweak: fix MaskPointResizing + put back Dividee ISSE code (use sse=true, can't use all settings in that case);
* Added ChromaInPlacement, ChromaOutPlacement 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;
* 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 formats: YV24, YV16, Y8, YV411;

### Исправления

* Fixed missing I420 in DirectShowSource pixel type error message.
* 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%16 == 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 SaveString 'string+string' bug when total length is 4096\*K-1, K is +int.
* 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 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

### Оптимизация

* 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, suport for RGB24.
* YV24backtoYUY2 Dynamic ASM code.
* UtoY8, VtoY8 abuse subframe, zero cost.
* YV24<->RGB 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 independently.
* 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 RGB<->YV24 conversions.
* Added dynamic compiled MMX/iSSE for RGB<->YV24 conversions. Speed is approx 200% of C-code.

### Изменения

* 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 unistall 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. [undocumented]
* 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 from avisynth.h AlignedPlanar, FillBorder, ConvertAudio. Now in separate include files.
* 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.
* 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.
* 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. Подробнее.
* Thread safe code, part 2.
* Correct IClip baked documentation
* Fix at\_exit executon order
* 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) [not documented yet ???]
* 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.
* ConditionalReader/WriteFile: Full refactor.
* SoftwireHelper: explicit hardware exception handling.
* Resize: Moved GetResampleFunction into Resamplefunction, 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 RGB32<->RGB24 from convert.cpp and placed them in separate files.
* All code assuming UVwidth = Ywidth/2 and similar should be gone.