New build with important fixes and some minor tweaks. Thanks for the reports.
Download
Avisynth+ r2664-MT
In this changelog I left there intentionally some lines about a finally postponed modification. Read it as a preliminary info (32 bit float YUV chroma format). We could start a discussion about it.
Code:
20180328 r2664
--------------
- Fix: YUY2 Sharpen overflow artifacts - e.g. Sharpen(0.6)
- Fix: Levels: 32 bit float shift in luma
- Fix: Merge sse2 for 10-14bits (regression)
- Fix: AVX2 resizer possible access violation in extreme resizes (e.g. 600->20)
- Fix: 32bit float PlanarRGB<->YUV conversion matrix
- Fix: VfW: fix b64a output for OPT_Enable_b64a=true
- Enhanced: VfW output P010 and P016 conversion to SSE2 (VfW output is used by VirtualDub for example)
- Enhanced: ColorYUV: recalculate 8-16 bit LUT in GetFrame only when changed frame-by-frame (e.g. in autowhite)
- Enhanced: ConvertBits 32->8 sse2/avx2 and 32->10..16 sse41/avx2 (8-15x speed)
Not included, preliminary for the near future:
- Big change: 32 bit float YUV formats, U and V are now zero based.
Internally YUV 32 bit float chroma center became 0.0 (the neutral value which is 128 in the 8-bit world)
Like in VapourSynth or in avsresizer using z.lib image library.
'Expr' changes are affecting built-in constants/operators when used in chroma plane of a 32bit clip.
- 'cmin', 'cmax' return the zero-based shifted versions of the 16 and 240 (8 bit) values
- For U and V planes, constant 'range_half' results in 0.0 instead of the old 0.5
- 'scaleb' will also give zero-based result when found in an expression for chroma plane
(e.g. for a 32 bit float clip the '128 scaleb' will result in 0.0 instead of 128/255 for U and V planes)
But 'scalef' when the target or source of the constant conversion is 32bits, remains independent from the plane type.
- 'range_max' is 0.5 for 32 bit float chroma
- new constant 'range_min', which is -0.5 for 32 bit float chroma, (0 otherwise)
Additional warning: when you move 32bit float U or V plane to Y using CombinePlane, you have to be sure
that your filters do not rely on this new Y plane being in 0..1 range. Or else convert it by using Expr("x 0.5 +") to the 0..1 range
Similarly: ExtractU and ExtractV will simply return the unaltered chroma planes, which are now zero-centered