RgTools

From Avisynth wiki
(Difference between revisions)
Jump to: navigation, search
(Description: Add TemporalRepair filter in 0.98)
m (Requirements: avs+ link)
 
(4 intermediate revisions by one user not shown)
Line 2: Line 2:
 
{{Filter3
 
{{Filter3
 
| {{Author/tp7}}, {{Author/pinterf}}
 
| {{Author/tp7}}, {{Author/pinterf}}
| v0.97
+
| v0.98
|[https://github.com/pinterf/RgTools/releases RgTools-0.97.7z]
+
|[https://github.com/pinterf/RgTools/releases RgTools-0.98.7z]
 
| Denoisers  
 
| Denoisers  
 
| [https://opensource.org/licenses/MIT MIT] but binaries are [https://www.gnu.org/licenses/gpl-2.0.txt GPLv2]
 
| [https://opensource.org/licenses/MIT MIT] but binaries are [https://www.gnu.org/licenses/gpl-2.0.txt GPLv2]
Line 15: Line 15:
  
 
== Requirements ==
 
== Requirements ==
* [https://sourceforge.net/projects/avisynth2/ AviSynth 2.6.0] or greater
+
* [https://sourceforge.net/projects/avisynth2/ AviSynth 2.6.0] or [[AviSynth+]]
* x64 version requires [https://forum.doom9.org/showthread.php?t=168856 AviSynth+ r1576] or later
+
* x64 version requires [[AviSynth+]]
 
* Supported color formats: [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]]; YUV(A) and planar RGB(A) 10-16 bits on Avisynth+ r2290- and 32 bit float on Avisynth+ r2728-
 
* Supported color formats: [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]]; YUV(A) and planar RGB(A) 10-16 bits on Avisynth+ r2290- and 32 bit float on Avisynth+ r2728-
 
* AVX2 support requires Avisynth+ (also OS dependent, AVX2 needs at least Windows7 SP1)
 
* AVX2 support requires Avisynth+ (also OS dependent, AVX2 needs at least Windows7 SP1)
 
<br>
 
<br>
* [https://go.microsoft.com/fwlink/?LinkId=746571 Microsoft Visual C++ Redistributable for Visual Studio 2017 (x86)]
+
* [https://go.microsoft.com/fwlink/?LinkId=746571 Microsoft Visual C++ Redistributable for Visual Studio 2017-2019 (x86)]
* [https://go.microsoft.com/fwlink/?LinkId=746572 Microsoft Visual C++ Redistributable for Visual Studio 2017 (x64)]
+
* [https://go.microsoft.com/fwlink/?LinkId=746572 Microsoft Visual C++ Redistributable for Visual Studio 2017-2019 (x64)]
  
 
or older versions
 
or older versions
Line 53: Line 53:
 
{{PluginFilterRow|RgTools|VerticalCleaner|
 
{{PluginFilterRow|RgTools|VerticalCleaner|
 
A very fast vertical median, it only has 2 modes.
 
A very fast vertical median, it only has 2 modes.
 +
| [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]], all 8-32bit planar YUV/RGB for AVS+
 +
}}
 +
{{PluginFilterRow|RgTools|TemporalRepair|
 +
TemporalRepair is a temporal filter, primarily useful for restoring static (non moving) details of spatial filters like RemoveGrain. Since 0.98.
 
| [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]], all 8-32bit planar YUV/RGB for AVS+
 
| [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]], all 8-32bit planar YUV/RGB for AVS+
 
}}
 
}}
Line 60: Line 64:
 
== Changelog ==
 
== Changelog ==
 
  Version      Date            Changes<br>
 
  Version      Date            Changes<br>
 +
 +
v0.98        08/14/2019      - Include "TemporalRepair" filter from old RemoveGrainT package (rewritten C and SIMD intrinsics from pure inline asm)
 +
                                Add Y8, YV16, YV24 besides YV12, drop YUY2 support.
 +
                                Add 10-32 bit support for Y, YUV and planar RGB formats
 +
                                Add int "opt" parameter (mainly for debug: 0=C 1=SSE2 2=SSE4.1) for testing specific code paths
 +
                              - Codes for different processor targets (SSSE3 and SSE4.1) are now separated and are compiled using function attributes (clang, gcc).
 +
                              - Other source changes for errorless gcc and clang build
 +
                              - LLVM support, see howto in RgTools.txt
 +
                                Note: use at least LLVM 9.0 build 21 June 2019 due to a clang compiler bug (_mm_avg_epu8 related, fixed on April 14 2019)
 +
                                older versions are up-to 1/3 slower than the Microsoft build. See latest snapshot builds at https://llvm.org/builds/
 +
                              - GCC 8.3 support, CMakeFiles.txt, see howto in RgTools.txt
 +
                              - RemoveGrain/Repair different code paths for SSE2/SSE4.1/AVX2 instead of SSE2/SSE3/AVX2.
 +
                              - Add documentation (from old docs, new part: gcc/clang howto)
 +
                              - todo: Overview 32 bit float parts for some RemoveGrain modes (6, 7, 8, 9, 15, 16, 23, 24)
 +
 
  v0.97        07/02/2018      - Remove some inherited clipping to 0..1 range for 32bit float.
 
  v0.97        07/02/2018      - Remove some inherited clipping to 0..1 range for 32bit float.
 
                                 In general we do not clamp in 32 bit float colorspaces, especially that U/V range is -0.5..+0.5 from Avisynth+ r2728
 
                                 In general we do not clamp in 32 bit float colorspaces, especially that U/V range is -0.5..+0.5 from Avisynth+ r2728

Latest revision as of 22:34, 3 September 2019

Abstract
Author tp7, pinterf
Version v0.98
Download RgTools-0.98.7z
Category Denoisers
License MIT but binaries are GPLv2
Discussion Doom9 Thread

Contents

[edit] Description

RgTools is a modern rewrite of RemoveGrain, Repair, BackwardClense, Clense, ForwardClense, VerticalCleaner and TemporalRepair all in a single plugin. RgTools is mostly backward compatible with the original plugins, incompatibilities mainly come from deprecated parameters in the original filters, read filter documentation for full details. Some routines might be slightly less efficient than original, some are faster. Output of some RemoveGrain modes are not exactly identical to the original due to some minor rounding differences; these differences will not affect your output in any significant way (it might make it better)[1]. Other functions should be identical.

[edit] Requirements

  • AviSynth 2.6.0 or AviSynth+
  • x64 version requires AviSynth+
  • Supported color formats: Y8, YV12, YV16, YV24, YV411; YUV(A) and planar RGB(A) 10-16 bits on Avisynth+ r2290- and 32 bit float on Avisynth+ r2728-
  • AVX2 support requires Avisynth+ (also OS dependent, AVX2 needs at least Windows7 SP1)


or older versions

*** vcredist_x86.exe is required for RgTools-x86
*** vcredist_x64.exe is required for RgTools-x64


[edit] Filters

Filter Description Color format
BackwardClense

Modified version of Clense that works on current and previous frames.

Y8, YV12, YV16, YV24, YV411, all 8-32bit planar YUV/RGB for AVS+
Clense

Temporal median of three frames.

Y8, YV12, YV16, YV24, YV411, all 8-32bit planar YUV/RGB for AVS+
ForwardClense

Modified version of Clense that works on current and next frames.

Y8, YV12, YV16, YV24, YV411, all 8-32bit planar YUV/RGB for AVS+
Repair

Repairs unwanted artifacts from (but not limited to) RemoveGrain, includes 24 modes.

Y8, YV12, YV16, YV24, YV411, all 8-32bit planar YUV/RGB for AVS+
RemoveGrain

Purely spatial denoising function, includes 24 modes.

Y8, YV12, YV16, YV24, YV411, all 8-32bit planar YUV/RGB for AVS+
VerticalCleaner

A very fast vertical median, it only has 2 modes.

Y8, YV12, YV16, YV24, YV411, all 8-32bit planar YUV/RGB for AVS+
TemporalRepair

TemporalRepair is a temporal filter, primarily useful for restoring static (non moving) details of spatial filters like RemoveGrain. Since 0.98.

Y8, YV12, YV16, YV24, YV411, all 8-32bit planar YUV/RGB for AVS+


[edit] Changelog

Version      Date            Changes
v0.98        08/14/2019      - Include "TemporalRepair" filter from old RemoveGrainT package (rewritten C and SIMD intrinsics from pure inline asm)
                               Add Y8, YV16, YV24 besides YV12, drop YUY2 support.
                               Add 10-32 bit support for Y, YUV and planar RGB formats
                               Add int "opt" parameter (mainly for debug: 0=C 1=SSE2 2=SSE4.1) for testing specific code paths
                             - Codes for different processor targets (SSSE3 and SSE4.1) are now separated and are compiled using function attributes (clang, gcc).
                             - Other source changes for errorless gcc and clang build
                             - LLVM support, see howto in RgTools.txt
                               Note: use at least LLVM 9.0 build 21 June 2019 due to a clang compiler bug (_mm_avg_epu8 related, fixed on April 14 2019) 
                               older versions are up-to 1/3 slower than the Microsoft build. See latest snapshot builds at https://llvm.org/builds/
                             - GCC 8.3 support, CMakeFiles.txt, see howto in RgTools.txt
                             - RemoveGrain/Repair different code paths for SSE2/SSE4.1/AVX2 instead of SSE2/SSE3/AVX2.
                             - Add documentation (from old docs, new part: gcc/clang howto)
                             - todo: Overview 32 bit float parts for some RemoveGrain modes (6, 7, 8, 9, 15, 16, 23, 24)

v0.97        07/02/2018      - Remove some inherited clipping to 0..1 range for 32bit float.
                               In general we do not clamp in 32 bit float colorspaces, especially that U/V range is -0.5..+0.5 from Avisynth+ r2728

v0.96        06/09/2017      - RemoveGrain: AVX2. Available when Avisynth+ reports AVX2 usability
                               Can be disabled with new parameter: optAvx2=false
                             - Clense, ForwardClense, BackwardClense: ignore planar colorspace checking when planar=true. Like in RemoveGrain and Repair.
                             - Fix: Mode 11 and 13 for 32 bit float colorspaces (which worked like mode 10 and 12)

v0.95        03/14/2017      - Fix: RemoveGrain Mode 20: overflow at 14 and 16 bit depths in SSE4 (stripes)
                             - Repair: error on unaligned frames (unaligned crop) instead of access violation error

v0.94        01/26/2017      - Clense: new parameter (from v0.9): bool reduceflicker (default false)
                             - Clense: dummy compatibility parameters: bool planar, int cache
                             - autoregister filter MT modes as NICE_FILTER for Avisynth+
                               except for Clense: when reduceflicker is true, MULTI_INSTANCE MT mode is reported
                             - alignment check in Repair and RemoveGrain (anti-unaligned crop measures)  

v0.93        11/27/2016      - Same functionality as 0.92.1
                             - New bit depths 10, 12, 14, 16 bits and 32 bit float
                             - New formats: Planar RGB, Planar RGBA and YUVA support
                             - Use aligned loads if possible, internally
                             - 10+ bit formats require SSE4 for fast processing
                             - XP Support
                             - Built with VS2015, requires Visual Studio Redistributable Update 3 or newer
                             - Of course it works with classic Avisynth for 8 bit videos.
v0.92.1 02/10/2014 - Planar parameter added to VerticalCleaner registration function. It worked before but apparently not.
v0.92 02/10/2014 - Planar parameter added to VerticalCleaner for compatibility with QTGMC. Same behavior as in RemoveGrain.
v0.91 11/30/2013 - Planar parameter is added to RemoveGrain and Repair. It allows to skip any colorspace checks whatsoever, making the filter always assume that planar input is passed.
v0.9 11/26/2013 - Initial release - 24 modes of RemoveGrain, 24 modes of Repair, both modes of VerticalCleaner, and three variations of Clense implemented.




Back to External Filters

Personal tools