SangNom2

From Avisynth wiki
(Difference between revisions)
Jump to: navigation, search
m (update)
m (add Deep_color_tools category)
(25 intermediate revisions by one user not shown)
Line 1: Line 1:
{{FilterCat|External_filters|Restoration_filters|Deinterlacers}}
+
{{FilterCat6|External_filters|Plugins|Plugins_x64|Restoration_filters|Deinterlacers|Deep_color_tools}}
[[Category:Plugins]]
+
 
{{Filter3
 
{{Filter3
| {{Author/tp7}}
+
| {{Author/tp7}}, {{Author/Asd-g}}
| v0.35
+
| v0.5.0
| [http://github.com/tp7/SangNom2/releases/download/0.35/SangNom2-x86.zip SangNom2-x86.zip]
+
| [https://github.com/Asd-g/AviSynth-SangNom2/releases SangNom2-0.5.0.7z]
 
| Deinterlacing  
 
| Deinterlacing  
| [http://opensource.org/licenses/MIT MIT]
+
| [http://opensource.org/licenses/MIT MIT] but binaries are [http://www.gnu.org/licenses/gpl-2.0.txt GPLv2]
|}}
+
|6=[http://forum.doom9.org/showthread.php?t=168315 Doom9 Thread]
<br>
+
}}
 +
 
 
== Description ==
 
== Description ==
:SangNom2 is a reimplementation of MarcFD's old [[SangNom]] filter. The output is not completely but mostly identical.
+
SangNom2 is a reimplementation of MarcFD's old [[SangNom]] filter. Originally it's a single field deinterlacer using edge-directed interpolation but nowadays it's mainly used in anti-aliasing scripts. The output is not completely but mostly identical to the original [[SangNom]].
 
<br>
 
<br>
==== What's different ====
+
*'''Note:''' SangNom2 v0.5.0 is a port of the VapourSynth version. See [[SangNom2#Changelog|changelog for details]].
:*It's open source
+
:*Correct borders processing
+
:*Additional colorspace support
+
:*Multithreading support
+
:*Requires [[SSE2]]
+
 
+
:: *Single threaded performance is mostly identical to the old version despite this plugin using [[SSE2]].
+
 
<br>
 
<br>
==== Y8 ====
+
== What's Different ==
 +
*It's open source
 +
*Correct borders processing
 +
*Additional colorspace support
 +
*Internal multithreading support (v0.35 only)
 +
*Requires [[SSE2]]
 +
*Single threaded performance is mostly identical to the old version despite this plugin using [[SSE2]].
 +
* High bit-depth support (v0.4.0)
  
:One of the most important differences is [[Y8]] support in AviSynth 2.6. This enables much faster anti-aliasing  
+
=== Y8 ===
:(especially when used with FTurn plugin) without any chroma processing. See [[maa]] for example.
+
One of the most important differences is [[Y8]] support in AviSynth 2.6. This enables much faster anti-aliasing (especially when used with the [[FTurn]] plugin) without any chroma processing. See [[MAA2]] for example.
 +
<br>
 
<br>
 
<br>
== Requirements ==
 
:- [http://forum.doom9.org/showthread.php?t=168764 AviSynth 2.6.0 Alpha5] or later
 
:- Supported color formats: [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]]
 
  
:- [[SSE2]] capbale CPU
+
== Requirements ==
 +
* [x86]: [[AviSynth+]] or [https://sourceforge.net/projects/avisynth2/ AviSynth 2.6]
 +
* [x64]: [[AviSynth+]]
 +
* Supported color formats: [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]]
 +
**AviSynth+: all [[planar]] Y and YUV formats, 8-16 bit and 32-bit float are supported
 
<br>
 
<br>
 +
* [[SSE2]] capable CPU
 +
* [https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads Microsoft Visual C++ 2019 Redistributable Package (x86 / x64)]
 +
:<span style="color:red">***</span> <tt>vcredist_x86.exe</tt> required for <tt>SangNom2-x86</tt>
 +
:<span style="color:red">***</span> <tt>vcredist_x64.exe</tt> required for <tt>SangNom2-x64</tt>
 +
<br>
 +
 
== [[Script variables|Syntax and Parameters]] ==
 
== [[Script variables|Syntax and Parameters]] ==
:{{Template:FuncDef|SangNom2 (''clip'', ''int'' "order", ''int'' "aa", ''int'' "aac", ''int'' "threads")}}
+
:{{Template:FuncDef|SangNom2 (clip, int "order", int "aa", int "aac", int "threads", bool "dh" , bool "luma", bool "chroma" )}}
 +
<br>
 +
::{{Par2| |clip| }}
 +
:::Input clip must be [[planar]] Y or YUV, 8-16bit and 32-bit float.
 
<br>
 
<br>
 
::{{Par2|order|int|1}}
 
::{{Par2|order|int|1}}
Line 43: Line 54:
 
<br>
 
<br>
 
::{{Par2|aa|int|48}}
 
::{{Par2|aa|int|48}}
:::Strength of luma anti-aliasing.  
+
:::The strength of luma anti-aliasing, this value is considered in 8 bit clip.
 +
:::Must be between 0 and 128.
 
<br>
 
<br>
 
::{{Par2|aac|int|0}}
 
::{{Par2|aac|int|0}}
:::Strength of chroma anti-aliasing. The original [[SangNom]] always assumes {{Template:FuncDef|aa}}=0 for chroma processing. This makes some use  
+
:::Strength of chroma anti-aliasing. The strength of chroma anti-aliasing, this value is considered in 8 bit clip.
:::cases harder to implement, so additional parameter {{Template:FuncDef|aac}} was introduced. It's the same as {{Template:FuncDef|aa}} but for chroma. Default value  
+
:::Must be between 0 and 128.
:::is 0 to maintain backward compatibility.  
+
:::*The original [[SangNom]] always assumes {{Template:FuncDef|aa}}=0 for chroma processing.  
 +
:::*This makes some use cases harder to implement, so additional parameter {{Template:FuncDef|aac}} was introduced. Default value is 0 to maintain backward compatibility.
 
<br>
 
<br>
 
::{{Par2|threads|int| }}
 
::{{Par2|threads|int| }}
:::Control how many threads SangNom2 uses. This plugin uses min(number of logical processors, 4) threads to do its job. In my
+
:::It's a dummy parameter for backward compatibility. (v0.4.0 only)
:::tests performance doesn't get any better when using more than 4 threads. Internally it uses a simple thread pool.
+
:::v0.35 only:
 +
:::*Control how many threads SangNom2 uses. This plugin uses min(number of logical processors, 4) threads to do its job.
 +
:::*In my tests performance doesn't get any better when using more than 4 threads. Internally it uses a simple thread pool.
 +
<br>
 +
::{{Par2|dh|bool|false}}
 +
:::Doubles the height of the input. Each line of the input is copied to every other line of the output and the missing lines are interpolated.
 +
:::Note: If <code>dh=true</code>, it will force all planes to be processed.
 +
:::Default: false.
 +
<br>
 +
::{{Par2|luma|bool|true}}
 +
::{{Par2|chroma|bool|true}}
 +
:::Planes to process.
 +
:::Default: luma=true; chroma=true.
 +
<br>
 +
===SangNom===
 +
Backward compatible SangNom() function.
 +
<br>
 +
<br>
 +
:{{Template:FuncDef|SangNom (clip, int "order", int "aa")}}
 +
<br>
 +
::{{Par2| |clip| }}
 +
:::Input clip must be [[planar]] Y or YUV, 8-16bit and 32-bit float.
 +
<br>
 +
::{{Par2|order|int|1}}
 +
:::Order of deinterlacing:
 +
 
 +
::::*0 : Single frame rate, Keep bottom field.
 +
::::*1 : Single frame rate, keep top field. [default]
 +
::::*2 : Double frame rate, top and bottom fields are kept but [[DoubleWeave]] must be called before SangNom.
 +
<br>
 +
::{{Par2|aa|int|48}}
 +
:::The strength of luma anti-aliasing, this value is considered in 8 bit clip.
 +
:::Must be between 0 and 128, default is 48.
 +
<br>
 +
 
 +
== Examples ==
 +
SangNom with default settings:
 +
[[AviSource]]("blah.avi")
 +
SangNom2(order=1, aa=48, aac=0, dh=false, luma=true, chroma=false)
 +
<br>
 +
SangNom with double frame rate output:
 +
[[AviSource]]("blah.avi")
 +
[[DoubleWeave]]()
 +
SangNom2(order=0, aa=48, aac=0)
 
<br>
 
<br>
 
== Changelog ==
 
== Changelog ==
 
  Version      Date            Changes<br>
 
  Version      Date            Changes<br>
  v0.35        11/26/2013     - x64 build added.  
+
v0.5.0      2020/05/26      - Fixed order=0.
                                 Confirmed to be a little slower than x86 on some resolutions with 4 threads and faster in other cases.<br>
+
                              - Added backward compatible SangNom function.<br>
  v0.3        07/26/2013     - This plugin now works only with AviSynth 2.6 Alpha4 or later. All previous versions are not supported.  
+
v0.4.0      2020/05/23      - Backport VapourSynth port by James1201 and dubhater.
 +
                              - High bit depth support
 +
                              - Add parameters: "dh", "luma", "chroma".
 +
                              - Internal multithreading disabled, "threads" is now just a dummy parameter.
 +
                              - AviSynth+: self-registers as [[MT_MULTI_INSTANCE]].
 +
                              - Added support for AviSynth+ v8 interface.<br>
 +
  v0.35        2013/11/26      - x64 build added.  
 +
                                 Confirmed to be a little slower than x86 on some resolutions with 4 threads and faster in other cases.
 +
                              - Compiled with MSVC++12, requires Microsoft Visual C++ 2012 Redistributable Package <br>
 +
  v0.3        2013/07/26      - This plugin now works only with AviSynth 2.6 Alpha4 or later. All previous versions are not supported.  
 
                                 Download previous release if you need that.
 
                                 Download previous release if you need that.
 
                               - This version adds aac parameter, which allows to configure chroma aa strength.
 
                               - This version adds aac parameter, which allows to configure chroma aa strength.
 
                               - It now also works on YV24 correctly, instead of processing only half chroma resolution.<br>
 
                               - It now also works on YV24 correctly, instead of processing only half chroma resolution.<br>
  v0.2        07/14/2013     - Second release, containing some significant performance improvements.
+
  v0.2        2013/07/14      - Second release, containing some significant performance improvements.
 
                               - This plugin is now threaded with min(number of logical processors, 4) threads used by default.
 
                               - This plugin is now threaded with min(number of logical processors, 4) threads used by default.
 
                                 To change number of threads, just use threads parameter.<br>
 
                                 To change number of threads, just use threads parameter.<br>
  v0.1        07/13/2013     - First public release.  
+
  v0.1        2013/07/13      - First public release.  
 
                                 Should be more or less stable but doesn't include many improvements.
 
                                 Should be more or less stable but doesn't include many improvements.
 
<br>
 
<br>
Line 94: Line 159:
 
<br>
 
<br>
 
== External Links ==
 
== External Links ==
*[http://forum.doom9.org/showthread.php?t=168315 Doom9 Forum] - SangNom2 discussion.
+
*[https://github.com/tp7/SangNom2 GitHub] - Source code repository (original).
 +
*[https://github.com/Asd-g/AviSynth-SangNom2 GitHub] - Source code repository (updated).
 +
*[https://github.com/dubhater/vapoursynth-sangnom GitHub] - Source code repository (VapourSynth Port).
 +
<br>
 +
<br>
 +
-----------------------------------------------
 +
'''Back to [[External_filters#Deinterlacing|External Filters]] &larr;'''

Revision as of 22:14, 25 June 2020

Abstract
Author tp7, Asd-g
Version v0.5.0
Download SangNom2-0.5.0.7z
Category Deinterlacing
License MIT but binaries are GPLv2
Discussion Doom9 Thread

Contents

Description

SangNom2 is a reimplementation of MarcFD's old SangNom filter. Originally it's a single field deinterlacer using edge-directed interpolation but nowadays it's mainly used in anti-aliasing scripts. The output is not completely but mostly identical to the original SangNom.


What's Different

  • It's open source
  • Correct borders processing
  • Additional colorspace support
  • Internal multithreading support (v0.35 only)
  • Requires SSE2
  • Single threaded performance is mostly identical to the old version despite this plugin using SSE2.
  • High bit-depth support (v0.4.0)

Y8

One of the most important differences is Y8 support in AviSynth 2.6. This enables much faster anti-aliasing (especially when used with the FTurn plugin) without any chroma processing. See MAA2 for example.

Requirements


*** vcredist_x86.exe required for SangNom2-x86
*** vcredist_x64.exe required for SangNom2-x64


Syntax and Parameters

SangNom2 (clip, int "order", int "aa", int "aac", int "threads", bool "dh" , bool "luma", bool "chroma" )


clip   =
Input clip must be planar Y or YUV, 8-16bit and 32-bit float.


int  order = 1
Order of deinterlacing:
  • 0 : Double frame rate, top and bottom fields are kept but DoubleWeave must be called before SangNom2.
  • 1 : Single frame rate, keep top field.
  • 2 : Single frame rate, Keep bottom field.


int  aa = 48
The strength of luma anti-aliasing, this value is considered in 8 bit clip.
Must be between 0 and 128.


int  aac = 0
Strength of chroma anti-aliasing. The strength of chroma anti-aliasing, this value is considered in 8 bit clip.
Must be between 0 and 128.
  • The original SangNom always assumes aa=0 for chroma processing.
  • This makes some use cases harder to implement, so additional parameter aac was introduced. Default value is 0 to maintain backward compatibility.


int  threads =
It's a dummy parameter for backward compatibility. (v0.4.0 only)
v0.35 only:
  • Control how many threads SangNom2 uses. This plugin uses min(number of logical processors, 4) threads to do its job.
  • In my tests performance doesn't get any better when using more than 4 threads. Internally it uses a simple thread pool.


bool  dh = false
Doubles the height of the input. Each line of the input is copied to every other line of the output and the missing lines are interpolated.
Note: If dh=true, it will force all planes to be processed.
Default: false.


bool  luma = true
bool  chroma = true
Planes to process.
Default: luma=true; chroma=true.


SangNom

Backward compatible SangNom() function.

SangNom (clip, int "order", int "aa")


clip   =
Input clip must be planar Y or YUV, 8-16bit and 32-bit float.


int  order = 1
Order of deinterlacing:
  • 0 : Single frame rate, Keep bottom field.
  • 1 : Single frame rate, keep top field. [default]
  • 2 : Double frame rate, top and bottom fields are kept but DoubleWeave must be called before SangNom.


int  aa = 48
The strength of luma anti-aliasing, this value is considered in 8 bit clip.
Must be between 0 and 128, default is 48.


Examples

SangNom with default settings:

AviSource("blah.avi")
SangNom2(order=1, aa=48, aac=0, dh=false, luma=true, chroma=false)


SangNom with double frame rate output:

AviSource("blah.avi")
DoubleWeave()
SangNom2(order=0, aa=48, aac=0)


Changelog

Version      Date            Changes
v0.5.0 2020/05/26 - Fixed order=0. - Added backward compatible SangNom function.
v0.4.0 2020/05/23 - Backport VapourSynth port by James1201 and dubhater. - High bit depth support - Add parameters: "dh", "luma", "chroma". - Internal multithreading disabled, "threads" is now just a dummy parameter. - AviSynth+: self-registers as MT_MULTI_INSTANCE. - Added support for AviSynth+ v8 interface.
v0.35 2013/11/26 - x64 build added. Confirmed to be a little slower than x86 on some resolutions with 4 threads and faster in other cases. - Compiled with MSVC++12, requires Microsoft Visual C++ 2012 Redistributable Package
v0.3 2013/07/26 - This plugin now works only with AviSynth 2.6 Alpha4 or later. All previous versions are not supported. Download previous release if you need that. - This version adds aac parameter, which allows to configure chroma aa strength. - It now also works on YV24 correctly, instead of processing only half chroma resolution.
v0.2 2013/07/14 - Second release, containing some significant performance improvements. - This plugin is now threaded with min(number of logical processors, 4) threads used by default. To change number of threads, just use threads parameter.
v0.1 2013/07/13 - First public release. Should be more or less stable but doesn't include many improvements.


Archived Downloads

Version Download Source Code
v0.35 SangNom2-x86.zip

SangNom2-x64.zip

0.35.zip
v0.3 SangNom2.dll v0.3.zip
v0.2 SangNom2.dll v0.2.zip
v0.1 SangNom2.dll v0.1.zip


External Links

  • GitHub - Source code repository (original).
  • GitHub - Source code repository (updated).
  • GitHub - Source code repository (VapourSynth Port).




Back to External Filters

Personal tools