Srestore
From Avisynth wiki
Abstract | |
---|---|
Author | MOmonster |
Version | v2.792 |
Download | srestore v2.792 |
Category | Deblenders |
License | Open Source |
Discussion | Doom9 Thread |
Contents |
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.
Requirements
- AviSynth 2.5.8 or later
- Supported color formats: YV12, YUY2
- Progressive input only
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)
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).
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)
Changelog
Version Date Changes
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
External Links
- Doom9 Forum - Srestore discussion.
Back to External Filters ←