@@ -28,6 +28,11 @@ Additions, changes
2828- ``ConvertToPlanarRGB(A) ``: added ``quality `` parameter: forces 32-bit float
2929 internal processing instead of S18.13 fixed-point arithmetic when converting
3030 from YUV, regardless of source or target bit-depth. See :doc: `ConvertToPlanarRGB <./corefilters/convert >`.
31+ - "ConvertToYUV(A)xxx" and legacy 8 bit name versions: ``bits `` parameter: on-the-fly bit-depth conversions to RGB->YUV conversion.
32+ See :doc: `ConvertToYUV444 <./corefilters/convert >`.
33+ - ``ConvertToYUV(A)xxx `` and legacy 8 bit name versions: added ``quality `` parameter: forces 32-bit float
34+ internal processing instead of S18.13 fixed-point arithmetic when converting
35+ to YUV, regardless of source or target bit-depth. See :doc: `ConvertToYUV444 <./corefilters/convert >`.
3136- "ResetMask": add parameter float "opacity"
3237- "AddAlphaPlane": add parameter float "opacity"
3338- "Layer": YUY2 is handled as YV16 (lessen source code bloat)
@@ -70,6 +75,24 @@ Additions, changes
7075 computed from ground-truth linear RGB values converted through the active
7176 YUV matrix, giving accurate Cb/Cr coordinates at all bit depths including
7277 32-bit float.
78+ - "ConvertToYUY2": rewritten to route all conversions through YV16 as
79+ intermediate format, using the full ``ConvertToPlanarGeneric `` infrastructure.
80+ ``ChromaOutPlacement `` parameter added (was missing, present in ConvertToYV16).
81+ All source formats (YV12, YUV420/422/444, planar/packed RGB, high bit depth)
82+ are now handled correctly. ``bits `` parameter accepted; must be 8 if specified.
83+ See :doc: `Convert <./corefilters/convert >`.
84+ - "ConvertBackToYUY2": kept for backward compatibility; now forwards to
85+ ``ConvertToYUY2 ``. The pre-2.5 left-pixel-only chroma hack is no longer
86+ needed or applied; the YV16 lossless repack path avoids chroma resampling
87+ loss entirely for roundtrip workflows.
88+ - "ConvertToYV12" (legacy 8-bit name): the YUY2 fast-path shortcut is removed;
89+ now routes directly through ``ConvertToPlanarGeneric::CreateYUV420 ``.
90+ ``bits= `` parameter semantics corrected: the legacy 8-bit-named functions
91+ (``ConvertToYV12 ``, ``ConvertToYV16 ``, ``ConvertToYV24 ``) now check the
92+ *target * bit depth rather than the source bit depth, allowing high-depth
93+ sources when ``bits=8 `` is explicitly specified.
94+ - 8 bit packed RGB formats are converted to planar RGB before 444 conversion.
95+ Stop using direct rgb-yv24 conversions (16 bits were already converted for long time).
7396
7497
7598Build environment, Interface
@@ -129,6 +152,21 @@ Build environment, Interface
129152
130153Bugfixes
131154~~~~~~~~
155+ - Fix: "ConvertToYUY2" / "ConvertToYV12": YV12<->YUY2 interlaced conversion
156+ used asymmetric 0.75/0.25 chroma interpolation coefficients instead of the
157+ MPEG-2 specified 7/8,1/8 and 3/8,5/8 coefficients, introducing opposite-
158+ direction vertical chroma shifts in top and bottom fields. First diagnosed
159+ by Gavino in 2009; now resolved by routing through ``ConvertToPlanarGeneric ``.
160+ - Fix: "ConvertToYUY2" / "ConvertToYV12": progressive YV12<->YUY2 conversion
161+ used asymmetric 0.75/0.25 averaging (quarter-pixel offset) instead of the
162+ correct 0.5/0.5 midpoint average for left-sited chroma, introducing a
163+ 1/4-pixel vertical chroma shift.
164+ - Fix: "ConvertToYUY2": ``_ChromaLocation ``, ``_Matrix `` and ``_ColorRange ``
165+ frame properties were not read from YV12 source frames and not written to
166+ YUY2 output frames in the legacy direct conversion path.
167+ - Fix: "ConvertToYUY2": SSE2 interlaced upsampling used wrong weighting
168+ direction for the lower line of each field pair (75%/25% toward current
169+ instead of 25%/75% toward next), differing from the C reference implementation.
132170- Fix: memory leak in Subframe/MakePropertyWritable after static-frame sources (ColorBars, BlankClip)
133171- Fix: "Histogram" Color2 mode to copy alpha channel from source for alpha-carrying formats
134172 (YUVA, RGBPA, RGB32, RGB64); initialize alpha to zero in the histogram panel area.
@@ -237,15 +275,19 @@ Documentation
237275- Update :doc: `Histogram <./corefilters/histogram >` with new vectorscope parameters
238276- Update :doc: `ColorBars <./corefilters/colorbars >`
239277- Update :ref: `matrix syntax <matrix_parameter_syntax >`
240-
278+ - Update :doc: `Convert <./corefilters/convert >` with ``ConvertToYUY2 ``
279+ ``ChromaOutPlacement `` parameter and corrected chroma placement behavior.
280+ - Update :doc: `Convert <./corefilters/convert >` with ``bits `` and ``quality `` parameters
281+ - Update :doc: `Sampling <./advancedtopics/sampling >` with historical content notes
282+ on legacy ``YUY2 `` handling.
241283- Add another Ubuntu->Windows DLL cross-compilation guide:
242284 See :ref: `Ubuntu->Windows mingw crosscompilation<compiling_avsplus_crosscompiling2> `
243285
244286
245287Please report bugs at `github AviSynthPlus page `_ - or - `Doom9's AviSynth+
246288forum `_
247289
248- $Date: 2026/02/24 20:24 :00 $
290+ $Date: 2026/03/02 21:50 :00 $
249291
250292.. _github AviSynthPlus page :
251293 https://github.com/AviSynth/AviSynthPlus
0 commit comments