Srestore
From Avisynth wiki
(Difference between revisions)
(Update version and change-log) |
m |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{FilterCat4|External_filters|Scripts|Restoration_filters|Deblenders}} | {{FilterCat4|External_filters|Scripts|Restoration_filters|Deblenders}} | ||
{{Filter3 | {{Filter3 | ||
− | |MOmonster | + | |MOmonster, Real.Finder |
− | |v2. | + | |v2.796 |
| | | | ||
− | 3= [ | + | 3= [http://pastebin.com/raw/JYBjMBvx srestore v2.796] |
|4= Deblenders | |4= Deblenders | ||
|5= Open Source | |5= Open Source | ||
Line 15: | Line 15: | ||
<br> | <br> | ||
== Requirements == | == Requirements == | ||
− | * AviSynth 2. | + | * *[http://sourceforge.net/projects/avisynth2/ AviSynth 2.6] or [[AviSynth+]] (x86 / x64) |
* Supported color formats: [[YV12]], [[YUY2]] | * Supported color formats: [[YV12]], [[YUY2]] | ||
* [[FAQ_different_types_content#How_do_I_recognize_progressive.2C_interlaced.2C_telecined.2C_hybrid_and_blended_content.3F|Progressive]] input only | * [[FAQ_different_types_content#How_do_I_recognize_progressive.2C_interlaced.2C_telecined.2C_hybrid_and_blended_content.3F|Progressive]] input only | ||
Line 27: | Line 27: | ||
*[[RgTools]] - recommended drop-in replacement for RemoveGrain! | *[[RgTools]] - recommended drop-in replacement for RemoveGrain! | ||
*[[Average]] - (only for double-blend-removal, not default) | *[[Average]] - (only for double-blend-removal, not default) | ||
− | *[ | + | *[[GRunT]] (only for <tt>Srestore v2.7f</tt> or greater) |
<br> | <br> | ||
Line 125: | Line 125: | ||
== Changelog == | == Changelog == | ||
Version Date Changes<br> | Version Date Changes<br> | ||
+ | 2.796 2019/02/21 - ? [http://forum.doom9.org/showthread.php?p=1846373#post1846373]<br> | ||
+ | 2.795 2018/07/11 - Update to masktools 2.2.17, clean up [http://forum.doom9.org/showthread.php?p=1846373#post1846373]<br> | ||
+ | 2.794 2018/06/12 - Fix another bug in 12bit ([http://forum.doom9.org/showthread.php?p=1844327#post1844327 StainlessS])<br> | ||
+ | 2.793 2018/06/10 - Fix bug in 12bit ([http://forum.doom9.org/showthread.php?p=1844217#post1844217 StainlessS])<br> | ||
2.792 2018/03/14 - Native ReplaceStr using in avs+<br> | 2.792 2018/03/14 - Native ReplaceStr using in avs+<br> | ||
2.791 2017/11/22 - Some edit in speed parameter (in avs26 or avs+ will get different results now)<br> | 2.791 2017/11/22 - Some edit in speed parameter (in avs26 or avs+ will get different results now)<br> |
Latest revision as of 17:20, 28 February 2019
Abstract | |
---|---|
Author | MOmonster, Real.Finder |
Version | v2.796 |
Download | srestore v2.796 |
Category | Deblenders |
License | Open Source |
Discussion | Doom9 Thread |
Contents |
[edit] Description
Srestore is the replacement function for mrestore, Cdeblend, FixBlendIVTC and DupHq from the R_pack. It is an AviSynth script function that uses conditional frame evaluation for the output calculation.
Generally it was written to undo norm-conversions with blends, but the last version can be useful for decimation ratios between 5 and 1 using the frate parameter.
[edit] Requirements
- *AviSynth 2.6 or AviSynth+ (x86 / x64)
- Supported color formats: YV12, YUY2
- Progressive input only
[edit] Required Plugins
Latest version of the following plugins are recommended unless stated otherwise.
Optional plugins:
- TIVTC - (only for cache>0, not default)
RemoveGrain - part of the RemoveGrain v1.0b package.- (only for double-blend-removal, not default)- RgTools - recommended drop-in replacement for RemoveGrain!
- Average - (only for double-blend-removal, not default)
- GRunT (only for Srestore v2.7f or greater)
[edit] Syntax and Parameters
- srestore(clip source, float "frate", "omode", float "blocks", int "mthresh", int "bthresh", bool "chroma", int "cache", float "rr", clip "dclip")
- source clip =
- Input clip.
- source clip =
- frate float = optional
- You don't need to set the decimation parameters for the norm conversions restoring Pal_to_NTSC (50->23.976 or 25->11.988) and NTSC_to_Pal (59.94->25 or 29.97->12.5),
- but for some seldom other blend conversion (for example 29.97 back to 23.976 or 50 to 25 - DEFT). Use frate to set the wanted output-framerate.
- If source-framerate/frate >5 or <1 the output-framerate will be the same as the input-framerate. This can be useful if you want to have only the dup functionality of srestore.
- frate float = optional
- omode string (0-6 or mode, default 6)
- Srestore can be used as blend-decimation-function, as simple deblend-function and for double-blend-removal
- 1 - deblend-mode 1 -> detected blends will be replaced with the previous frame
- 2 - deblend-mode 2 -> next frame is used instead of the detected blend
- 3 - deblend-mode 3 -> detected blends will be replaced with the neighbour that has the smaller difference
- 4 - deblend-mode 4 -> use the neighbour with the smaller blend-possibility
- 5 - deblend-special -> outputs the one of four frames with the smallest blend-possibility
- >5 - blend-decimation -> for all decimation operations
- Srestore can be used as blend-decimation-function, as simple deblend-function and for double-blend-removal
- omode string (0-6 or mode, default 6)
- The output-modes 1-5 are simple deblending modes, so the framerate will not change.
- To enable the double-blend-removal you have to set a string for omode. This string decides about the postprocessing mode that is used on the restored frames:
- pp0 -> the fastest mode, no postprocessing
- pp1 -> use difference masking, higher quality and still good speed
- pp2 -> use a special blurring mask on luma and chroma that reduces artefacts
- pp3 -> combines postprocessing 1 and 2 -> slowest
- To enable the double-blend-removal you have to set a string for omode. This string decides about the postprocessing mode that is used on the restored frames:
- You can add also your own postprocessing to these modes. Just add your function like this:
omode="pp3.blur(1)" -> pp3 + blurring
- You can add also your own postprocessing to these modes. Just add your function like this:
- If you want to add a function with its own inputstrings use three quotation marks:
omode="""pp2.deen("a2d")"""
- If you want to add a function with its own inputstrings use three quotation marks:
Important Note:
- Also the double-blend-removal does no decimation. It's created only for double-blends caused by blend deinterlacing of telecined sources.
- You have to add an decimation function for full restoring:
source #progressive srestore(dmode=-4,omode="pp0") decimate(cycle=5,quality=0) #recommed decimating
- speed int (-25-25, default 9)
- With the speed parameter you can set a speed-vs-detail-detection value. If you set speed=25, only one of 25 pixels (5*5) is used for the detection.
- Higher values result in a lower possibility of low-detail detection. Set a negative speed value for high quality and hd sources. This can improve the detection of small details.
- mode int (1-3, default 2)
- With the mode parameter you can decide if chroma should be used for detection and if srestore have to merge neighboured frames or look for dups to improve output quality:
- 1 - simple output mode, decimation is not touched
- 2 - duping feature, if a frame has a dup-neighbour, that seems to have a higher quality, this one will be outputed
- 3 - like 2 but the duplicates will be merged
- >3 - mode 2 and 3 combined
- By setting the compatible negative values, the chroma values will be also used for the detection.
- Note: The double-blend-removal does not use this parameter (-> only mode 1 or -1).
- thresh int (12-44, default 22)
- The detection of srestore is pretty stable, but the threshold is still important to weight the detection influence.
- Use small values for sources with little temporal artefacts (bobbing effect, aliasing, blocks, noise, ...) and higher values for the opposite case.
- cache int (-1-10, default -1)
- With cache>=0 srestore use the RequestLinear function (TIVTC) to be more compatible with non-linear requesting (codec or other functions).
- Best way to use srestore is to do a lossless first pass right after calling srestore and do all other filtering and the final encoding in a second pass.
- If you do not have enough space to do a lossless pass and you cannot avoid non-linear frame requesting and the pattern of the source is pretty unstable set cache around 5-10,
- but keep in mind that this can increase memory usage.
- dclip clip =
- The detection clip can be used to improve (deblock, smooth, ...) and speed-up blend and motion detection.
- The selected clip is only used for detection and not for output, so it does not affect the output quality.
- If you use a high quality deinterlacing on the source you can speed up the detection by using a faster deinterlacing function (third code example) for the detection clip.
- It's recommended to crop the bobbed source (deinterlace BEFORE cropping!) to avoid the detection influence of the bobbing borders (second code example).
[edit] Examples
bobbed (or progressive) source
srestore()or:
ord = last.getparity() ? 1 : 0 leakkernelbob(ord,4,true,true) srestore(dclip=last.crop(8,16,-8,-24))or:
d = last.bob(-0.2,0.6).reduceflicker(strength=1) tdeint(mode=1) #or for example yadif(mode=1) srestore(mode=4,dclip=d)
[edit] Changelog
Version Date Changes
2.796 2019/02/21 - ? [1]
2.795 2018/07/11 - Update to masktools 2.2.17, clean up [2]
2.794 2018/06/12 - Fix another bug in 12bit (StainlessS)
2.793 2018/06/10 - Fix bug in 12bit (StainlessS)
2.792 2018/03/14 - Native ReplaceStr using in avs+
2.791 2017/11/22 - Some edit in speed parameter (in avs26 or avs+ will get different results now)
2.78 2017/06/15 - Some fix
2.77 2017/05/25 - Fix high bit depth
2.76 2017/03/31 - Update to masktools 2.2.5
2.75 2017/03/09 - Now works with all high bit depth in avs+
2.7i 2017/02/09 - Clean up and add YUY2 and other format
2.7h 2014/03/23 - Changes by real.finder - Update to use tp7's updated Average
2.7g 2013/11/12 - Changes by martin53 - Refactored to use a single line ScriptClip() call like v2.7e - necessary to save AviSynth string heap space when RTE is called
2.7f 2013/10/28 - Changes by martin53 - Callable more than once from the same script with help of unique global variables per instance. - Moderate reformatting to re-establish readability with the new variable names. - Needs GRunT plugin
2.7e 2009/11/18 - Last official version by MOmonster
[edit] External Links
- Doom9 Forum - Srestore discussion.
Back to External Filters ←