Skip to content

Commit d5ed9ee

Browse files
committed
rstdoc: update Invert, add ShowCRC32, update readme_history.txt
1 parent d9a6e95 commit d5ed9ee

4 files changed

Lines changed: 179 additions & 4 deletions

File tree

distrib/Readme/readme_history.txt

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,30 @@ For online documentation check https://avisynthplus.readthedocs.io/en/latest/
88

99
Actual:
1010
https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/changelist376.html
11-
20260430 3.7.5.rXXXX (pre 3.7.6)
11+
12+
20260506 3.7.5.r4589 (pre 3.7.6)
1213
--------------------------------
14+
TL;DR (since r4565):
15+
- Layer/Overlay/Merge: weighted and masked-merge kernels unified into a shared family (C/SSE4.1/AVX2/NEON);
16+
SIMD chroma-placement mask downsampling for 4:2:0/4:2:2/4:1:1 sources;
17+
"placement" parameter for Overlay "blend" (new) and Layer (new "top_left" option added):
18+
values are "mpeg2" (default), "mpeg1", "top_left".
19+
- Layer: new "mulovr" mode (Overlay-compatible YUV multiply with luma-driven chroma desaturation);
20+
new "top_left" placement option; legacy MMX/iSSE removed.
21+
- Merge (non-masked) C/SIMD integer arithmetic unified.
22+
- SIMD additions: AVX2/SSE4.1/NEON float chroma-mask row preparation; AVX2 float weighted merge.
23+
- Further optimizations: Invert (AVX2/SSE2), ExtractX (direct packed-RGB path),
24+
ConvertBits int depth-reduce C loop, PlanarRGB(A)->RGB32/64 (AVX2).
25+
- SetFilterProp: conditional injection by filter argument value; capture mode;
26+
SetFilterPropPassthrough helper; GetFilterProps() diagnostics function.
27+
See also: https://github.com/AviSynth/AviSynthPlus/issues/393
28+
and the online documentation at https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/setfilterprop.html
29+
30+
- Bug fixes: Text("\n") crash on zero-length lines; Layer no longer silently rounds odd x/y
31+
offsets on subsampled YUV — accepts them as-is like Overlay; ceiling formula for
32+
non-grid-aligned positions — last chroma column/row is no longer skipped in either filter.
33+
Full change list: https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/changelist376.html
34+
1335
- Layer: add "mulovr" mode — Overlay-style multiply for YUV(A) formats only (RGB raises an error).
1436
The overlay luma (Y) plane drives darkening of all base planes: dark overlay Y pulls base luma toward
1537
black and simultaneously desaturates base chroma toward neutral (128d for 8-bit integer, 0.0 for float).

distrib/docs/english/source/avisynthdoc/changelist376.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,16 @@ Bugfixes
263263
in v3.7.5, intermediate calculations could slightly exceed the boundary (e.g., 360.00000000000006
264264
when interpolating from 0 to 360.0 in 564 steps), requiring this clamp to prevent out-of-range errors.
265265
- Fix: ``Text`` filter crash when input contains a zero-length line (e.g. ``Text("\n")``).
266+
- Fix: "Layer"/"Overlay" subsampled YUV chroma alignment:
267+
268+
* "Layer": x/y offsets that are not aligned to the chroma grid (e.g. odd x for 4:2:0/4:2:2)
269+
are now accepted as-is, matching "Overlay" behaviour. Previously they were silently snapped
270+
to the nearest aligned value; that snap also incorrectly shifted the luma start position,
271+
causing a one-pixel luma displacement that did not occur in Overlay.
272+
* "Layer"/"Overlay": the last chroma column/row of the blend region is now correctly processed
273+
when the overlay position is not chroma-grid-aligned. A ceiling formula replaces the old
274+
floor division, which caused the rightmost column or bottom row of affected chroma pixels
275+
to be skipped.
266276

267277

268278
Optimizations
@@ -349,6 +359,8 @@ Documentation
349359
See :ref:`Ubuntu->Windows mingw crosscompilation<compiling_avsplus_crosscompiling2>`
350360
- Add :doc:`ColorBarsUHD <./corefilters/colorbarsuhd>`
351361
- Add :doc:`SetFilterProp / SetFilterPropPassthrough <./corefilters/setfilterprop>`
362+
- Add ``ShowCRC32`` documentation to :doc:`showframes <./corefilters/showframes>`
363+
(filter exists since 3.7.0; rst page was not updated at the time).
352364
- Update :doc:`Layer <./corefilters/layer>` with ``"mulovr"`` mode, ``"top_left"`` placement
353365
option, and related chroma-placement refactoring notes.
354366
- Update :doc:`Overlay <./corefilters/overlay>` with ``"placement"`` parameter for ``"blend"`` mode.

distrib/docs/english/source/avisynthdoc/corefilters/invert.rst

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,36 @@ Syntax and Parameters
3333
Default: "RGBA" if input clip is RGB, "YUVA" if input clip is YUV.
3434

3535

36+
Notes
37+
-----
38+
39+
**Integer formats (8–16 bit)**
40+
41+
*Luma and RGB channels* are inverted by ``max - value`` (equivalent to XOR with the maximum
42+
sample value, e.g. ``255 - value`` for 8-bit).
43+
44+
*Chroma channels (U/V) in planar YUV* are inverted by reflecting around the neutral value:
45+
``result = 2 × neutral - value``, clamped to the valid range.
46+
For 8-bit this means ``256 - value``:
47+
48+
- sample value 1 → 255, value 255 → 1
49+
- neutral value 128 → 128 (unchanged)
50+
- value 0 has no proper inverse (it would require 256, which is out of range) and is mapped to 255
51+
52+
**32-bit float**
53+
54+
*Luma and RGB channels* are inverted as ``1.0 - value``, reflecting around the midpoint of
55+
the ``[0.0, 1.0]`` luma range. No clamping is applied.
56+
57+
*Chroma channels (U/V)* are negated: ``result = -value``.
58+
In AviSynth+ 32-bit float YUV the chroma planes are signed, ranging from ``-0.5`` to ``+0.5``
59+
with ``0.0`` as the neutral. Negation is an exact mirror around that neutral, with no clamping
60+
needed (``0.5 → -0.5``, ``-0.5 → 0.5``, ``0.0 → 0.0``).
61+
62+
**YUY2** still inverts chroma by XOR with 255 (``255 - value``), which does *not* preserve
63+
the neutral value. Convert to a planar format first if correct chroma inversion is needed.
64+
65+
3666
Examples
3767
---------
3868

@@ -56,6 +86,13 @@ Changelog
5686
+-----------------+--------------------------------------------------------+
5787
| Version | Changes |
5888
+=================+========================================================+
89+
| AviSynth+ 3.7.6 | Planar YUV: U/V chroma inversion changed from XOR with |
90+
| | maximum to pivot around neutral (``256 - value`` for |
91+
| | 8-bit). Value 0 maps to 255 (no valid inverse). |
92+
| | YUY2 retains the old XOR behaviour. |
93+
| | Added proper AVX2 and SSE2 SIMD paths for planar |
94+
| | luma and chroma. |
95+
+-----------------+--------------------------------------------------------+
5996
| AviSynth+ r2487 | Added support for YUV(A)/PlanarRGB(A) 8,10-16,32 bit, |
6097
| | RGB48/64 color formats, with SSE2. |
6198
+-----------------+--------------------------------------------------------+
@@ -66,4 +103,4 @@ Changelog
66103
| AviSynth 2.5.3 | Initial Release. |
67104
+-----------------+--------------------------------------------------------+
68105

69-
$Date: 2022/03/20 16:58:20 $
106+
$Date: 2026/05/08 11:03:00 $

distrib/docs/english/source/avisynthdoc/corefilters/showframes.rst

Lines changed: 106 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22
ShowFrames
33
==========
44

5-
Set of filters to overlay frame numbers and timecodes onto a video clip:
5+
Set of filters to overlay frame numbers, timecodes, and debug information onto a video clip:
66

77
* `ShowFrameNumber`_ displays the frame number on each frame.
88
* `ShowSMPTE`_ displays SMPTE timecodes.
99
* `ShowTime`_ displays time for the current frame.
10+
* `ShowCRC32`_ computes and displays the CRC32 checksum of the default plane (debug filter).
1011

1112
See the `Examples`_ section for visuals.
1213

@@ -392,6 +393,107 @@ See the :ref:`ShowTime examples <ShowTime-examples>` section.
392393
393394
Default: false
394395

396+
.. _ShowCRC32:
397+
398+
ShowCRC32
399+
---------
400+
401+
A debug filter that computes the CRC32 checksum of the **default plane** of each frame
402+
and overlays the result as an 8-character uppercase hexadecimal string (e.g. ``"AB12CD34"``).
403+
Only the default plane is checksummed: luma (Y) for YUV clips, the green plane for planar RGB,
404+
or the interleaved data for packed formats such as YUY2.
405+
406+
The text placement and scrolling behaviour are identical to `ShowFrameNumber`_.
407+
408+
.. rubric:: Syntax and Parameters
409+
410+
::
411+
412+
ShowCRC32 (clip, bool "scroll", int "offset", float "x", float "y", string "font", float "size",
413+
int "text_color", int "halo_color", float "font_width", float "font_angle",
414+
bool "bold", bool "italic", bool "noaa")
415+
416+
.. describe:: clip
417+
418+
Source clip; all color formats supported.
419+
420+
.. describe:: scroll
421+
422+
| If *true*, the checksum will be drawn only once on the video and
423+
scroll from top to bottom;
424+
| If *false*, it will be drawn on one side, stacked vertically as often
425+
as it fits.
426+
427+
Default: false
428+
429+
.. describe:: offset
430+
431+
Frame number offset added to the internal counter. A positive value makes the
432+
display start from a later logical frame; a negative value from an earlier one.
433+
434+
Default: 0
435+
436+
.. describe:: x, y
437+
438+
Text position. Their interpretation corresponds to :doc:`Subtitle's <subtitle>`
439+
*align=4*. ``x`` and ``y`` must be used together or not at all; when present,
440+
the ``scroll`` option is ignored.
441+
442+
Default: 0.0, 0.0
443+
444+
.. describe:: font
445+
446+
Font name; can be the name of any installed Windows font.
447+
448+
Default: "Arial"
449+
450+
.. describe:: size
451+
452+
Height of the text in pixels.
453+
454+
Default: 24
455+
456+
.. describe:: text_color, halo_color
457+
458+
| Colors for font fill and outline respectively. Default is yellow and black.
459+
| See :doc:`Subtitle <subtitle>` and the :doc:`colors <../syntax/syntax_colors>`
460+
page for more information on specifying colors.
461+
462+
Default: $00FFFF00, $00000000
463+
464+
.. describe:: font_width
465+
466+
| Set character width in logical units, to the nearest 0.125 unit.
467+
| See the example section of :doc:`Subtitle <subtitle>` for an example.
468+
469+
Default: 0 (use Windows' default width)
470+
471+
.. describe:: font_angle
472+
473+
Adjust the baseline angle of text in degrees anti-clockwise to the
474+
nearest 0.1 degree.
475+
476+
Default: 0.0 (no rotation)
477+
478+
.. describe:: bold
479+
480+
Using bold letters or not.
481+
482+
Default: true on Windows GDI, false otherwise (e.g. Linux)
483+
484+
.. describe:: italic
485+
486+
Using italic letters or not.
487+
488+
Default: false
489+
490+
.. describe:: noaa
491+
492+
Disables antialiasing when drawing the text.
493+
494+
Default: false
495+
496+
395497
Examples
396498
--------
397499

@@ -492,6 +594,8 @@ Changelog
492594
+=================+=============================================================================+
493595
| AviSynth+ 3.7.3 | Add ``bold``, ``italic`` and ``noaa`` |
494596
+-----------------+-----------------------------------------------------------------------------+
597+
| AviSynth+ 3.7.0 | Added ``ShowCRC32``. |
598+
+-----------------+-----------------------------------------------------------------------------+
495599
| AviSynth 2.6.0 || All functions: position (x,y) can be float (previously int) (with 0.125 |
496600
| | pixel granularity). |
497601
| || ShowSMPTE: added drop-frame for other framerates (other than 30). |
@@ -502,7 +606,7 @@ Changelog
502606
| AviSynth 2.5.6 | Added ``offset`` and other options. |
503607
+-----------------+-----------------------------------------------------------------------------+
504608

505-
$Date: 2023/11/03 11:15:00 $
609+
$Date: 2026/05/08 11:02:00 $
506610

507611
.. _Interlaced Fieldbased:
508612
http://avisynth.nl/index.php/Interlaced_fieldbased

0 commit comments

Comments
 (0)