Changelist 26
From Avisynth wiki
Contents |
Changes from 2.6.1 alpha 1 to 2.6.1 cvs
- 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.
Changes from 2.6.0 to 2.6.1 alpha 1
ENVIRONMENT CHANGES and UPDATES
- 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.
CODE CHANGES
- 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() extensively.
- Handle exceptions from DevIL.dll now being delay loaded.
- Explicitly catch stray std::bad_alloc and report.
BUGFIXES
- 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).
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 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.
Changes from 2.5 series to 2.6.0
Additions
- 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.
Bugfixes
- 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
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, 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.
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 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.