View Full Version : New Plugins and Utilities
Pages :
1
2
3
4
[
5]
6
7
8
fieliapm
10th April 2017, 19:52
There is new version of VideoInputSource:
discussion (https://forum.doom9.org/showthread.php?t=170311)
binary (https://github.com/fieliapm/himawari_avs_plugin/raw/master/VideoInputSource/VideoInputSource.dll)
source (https://github.com/fieliapm/himawari_avs_plugin/tree/master/VideoInputSource)
Everyone can use it to grab video frame from video capture card or webcam in real-time
StainlessS
14th April 2017, 00:33
FredAverage().
A simple average filter for Avisynth v2.6 standard colorspaces, only.
Returns a clip where each return frame is a single color average of input frame, same size and colorspace as input.
Does an invert on result if Bool Invert==true.
FredAverage, (not to be confused with RedAverage).
Avisynth v2.6 only plugin.
ColorSpace, YV12, YV16, YV24, YV411, Y8, YUY2, RGB24, RGB32, only.
Return clip Y, U and V, or R, G and B, will be channel averages, unless Invert==True, where channels averages will be inverted.
FredAverage(clip c, Bool "Invert"=false)
Invert, Default false == sampled average. Otherwise Inverted average.
Returns clip same colorspace and size as input.
See home thread here:- https://forum.doom9.org/showthread.php?t=174520
fieliapm
16th April 2017, 18:09
avsi4comp (https://forum.doom9.org/showthread.php?t=172972) - some utility functions help video editing/compositing easily in AviSynth
Not well documented yet, but example scripts in example directory show that how to use them.
It is compatible with AviSynth 2.5x,2.6x,and AviSynth+
StainlessS
7th June 2017, 20:23
StrFmt,
Simple plugin to produce formatted string, and additional function to string replace with another string.
StrFmt(String format, dat1,...,datn)
Returns a formatted string. The unnamed 'format' string and optional unnamed 'dat' args are used to construct the text string that is
returned, uses C/CPP printf() style formatting.
Format: compulsory string controlling format and describing the datn type args that are expected.
datn: Variable number of data args of any type (excluding clip).
printf Format spec here:- http://msdn.microsoft.com/en-us/library/56e442dc%28v=vs.71%29.aspx
NOTE, the only support for printing Bool variables is %s as string, ie prints "True" or "False".
Formatting supported, %[flags] [width] [.precision] type
flags, one of "-,+,0, ,#"
width, integer, "*" supported (width supplied via dat arg).
Precision, integer, "*" supported (precision supplied via dat arg).
type,
"c,C,d,i,o,u,x,X", Integer type, c,C=character, d,i=signed, o,u,x,X=unsigned (o=octal, x=Hex).
"e,E,f,g,G", Floating point type
"s,S", String type (also Bool).
Formatting Insertion point is marked with '%' character in the format string (as in Avisynth String function), if you wish to use
a percent character within the returned string, it should be inserted twice in the format string ie '%%' will produce a single '%'.
The data datn arg strings do not require a double '%' character.
A Backslash character '\' introduces escape sequences, to insert a backslash character itself, you must supply a double
backslash sequence ie '\\'.
Converts embedded escape character sequences (Case Significant):-
'\\' Converted to '\' Single Backslash
'\n' Converted to Chr(10) NewLine
'\r' Converted to Chr(13) Carriage Return
'\t' Converted to Chr(9) Horizontal TAB
'\v' Converted to Chr(11) Vertical TAB
'\f' Converted to Chr(12) FormFeed
'\b' Converted to Chr(8) BackSpace
'\a' Converted to Chr(7) Bell
'\x', where x is ANY OTHER CHARACTER not included above, will be copied verbatim, ie '\x'.
eg
StrFmt("Hello there %s and %s.\nGoodbye %d.","Fred","Ted",2013)
would return same as:- "Hello there Fred and Ted." + Chr(10) + "Goodbye 2013."
*****
*****
*****
StrRep(string source,string find,string replace,bool "sig"=True) # Based on Algorithm by Vampiredom, Gavino & IanB.
String args 'source', 'find' and 'replace' unnamed and compulsory.
Takes a source string, searches for all occurences of find string and replaces the found strings with the replace string.
Can use "" in replace string (only in replace) to delete the found substrings from the source string.
Newlines are treated no differently to other characters, and could be replaced/deleted.
'sig' arg,default true is Case Significant. Set false for case insignificant find string.
See home thread here:- http://forum.doom9.org/showthread.php?t=174649
real.finder
16th January 2018, 05:06
can this https://github.com/DmitryUlyanov/deep-image-prior be avs/avs+ plugin?
it look interesting
StainlessS
21st January 2018, 20:58
FrameStore v0.01 - Avs+ x86/x64
FrameStore_ReadMe.txt
FrameStore(clip c) # by StainlessS
Requires VS 2008 runtimes.
An Avisynth v2.6, Filter to both take and produce a single frame.
All standard AVS+ v2.6 Colorspaces.
The function creates a store for FRAME 0 of the input clip c.
The function is intended to sever the link between a frame and any clips that it is reliant upon.
A=Colorbars.trim(0,-1) # 1 frame
B=A.FlipVertical # B is reliant upon clip A
C=A.Overlay(B,Opacity=0.5) # C is reliant upon clips A and B
D=C.FrameStore # D is not reliant upon A, or B, or C.
return D
https://forum.doom9.org/showthread.php?p=1831346#post1831346
introspected
2nd February 2018, 20:31
AutoOverlay - new plugin to auto-align two clips in different modes with histogram matching: https://github.com/introspected/AutoOverlay
Discussion (https://forum.doom9.org/showthread.php?t=175247)
`Orum
24th March 2018, 10:30
DupStep (https://forum.doom9.org/showthread.php?t=175338), a frame deduplicator (CFR to VFR conversion; eventually will support VFR to VFR). Similar to other filters like DeDup, but adds support for things they don't have (e.g. deep color). It can also emulate other filters perfectly given certain parameter restrictions, e.g. ExactDedup(_keeplastframe=true). Supports only 64-bit environments.
StainlessS
1st April 2018, 22:20
New Script function, Duplicity() v1.01,
Duplicity(), by StainlessS @ Doom9.
A two faced scheming and double dealing [on your behalf] de-dupe tool. [writes duplicate frame number/ranges to Frames file].
Req RT_Stats v1.43 + CallCmd (c) StainlessS, + GSCript + Grunt (c) Gavino.
[GScript not needed if Avs+, Will Not AutoDelete DBase if CallCmd not available]
Avs 2.6 Planar, YUY2, RGB24/32 (RGB converted to Luma-Y using Matrix arg, defaults to PC levels 601/709 based on Width & Height).
DeDuppers use some method to determine if a frame is a duplicate of its predecessor, a typical measuring method might be
LumaDifference (average absolute luma difference per pixel), unfortunately the result of such measure may be due to a small
frame global change (lots and lots of pixels change by a small amount), or a smaller number of pixels change by a
larger amount, both these cases could produce the exact same result. Another case may be that of a very small number of
pixels change by a very large amount (eg a person closing a fist with remainder of frame static) and such measure might seem
to be a duplicate as it could produce much smaller numbers than a frame global change of a small amount.
Duplicity() uses a double measurement system, Primary measurement (LumaDifference) to detect frames 'Unique' to their immediate
predecessor (large or 'frame Global' changes), and a Secondary method to determine if 'Non-Unique' frames are either 'Low Motion'
or 'Duplicate' frames. This second measurement method is LumaPixelsDifferent (result 0.0->255.0 where 255.0 is equivalent to
100.0%, user args for this method actually require Duplicity arg 'IgnorePercL' in range 0.0->100.0%).
LumaPixelsDifferent(as far as this dupe function is concerned), compares frames and shows percent of pixels whose
corresponding pixel absolute luma difference is greater than Int arg 'ThL', if this percent difference is greater than 'IgnorePercL',
then it is deemed to be a 'Low motion' frame and if less or equal to 'IgnorePercL' then is a duplicate ('IgnorePercL' can be
0.0, meaning any pixels at all with difference greater than 'ThL' is a 'Low Motion' Frame). Where both 'ThL' and 'IgnorePercL'
are 0 and 0.0 respectively, will show percentage of pixels that are not Exactly the same. 'IgnorePercL' could be set to 0.0
in which case the function is governed soley by any pixel differences exceeding 'ThL', or can set 'IgnorePercL'= eg 0.001%
meaning the it will disregard as noise 1 pixel difference exceeding 'ThL' in every 100,000 pixels [eg 1 pixel in every
316x316 region].
The function determines if the current frame is a 'Unique' frame or not (via 'ThG' LumaDifference to predecessor), if Unique,
then the job is done and is considered a Non-Duplicate, these Unique frames are marked in a DBase as Unique. If a frame is
'Non-Unique', then the function scans both backwards and forwards looking for 'Unique Start' and 'Unique End' frames (and if
necessary, marking them in DBase). This Backwards/Forwards scanning permits jumping around in the clip for perusal and getting
exact same results as if travelling forwards only (even backwards traversal only, should work just fine). When the
'Unique Start' and 'Unique End' frames are established, we then know the extent of the unknown (unvisited) frames, and can scan
and measure those with the second measurement method (LumaPixelsDifferent) to determine Low Motion/Dupe status.
When determining Low Motion/Dupe status, we compare with an 'Anchor Frame', which at the beginning of a 'Non-Unique' sequence
is the 'Unique Start' frame. When scanning a Duplicate sequence the 'Anchor Frame' is the predecessor frame to the very first
duplicate in the current sub sequence of the 'Non-Unique' sequence, so potential duplicates are not necessarily compared with
their immediate predecessor. When a frame is determined to be 'Low Motion' (not a dupe), any detected duplcates are written to
the DBase and also to the output Frames file, and it switches to detecting sequences of 'Low Motion' frames within the
'Non-Unique' sequence. On each detected 'Low Motion' frame, the Anchor frame for the next frame (whether it be another
'Low Motion' frame or a new 'Dupe' frame) will be switched to that newly detected 'Low Motion' frame. With this method,
all frames BETWEEN (but excluding) the 'Unique Start' and 'Unique End' in the 'Non-Unique' sequence are detected as perhaps
multiple 'Low Motion' and 'Duplicate' sub sequences.
Setting LagMax arg to some low number (min 1), will limit distance of the Anchor frame prior to the current frame, eg setting
LagMax=1, would always do LoMo/Dupe compare with the current frame and its predecessor.
Although you might be able to scan backwards and get same detections, results are written to file in visited sequence and
you should NOT jump about whilst writing the final frames file. Also, this is a Multi-Instance script, can use multiple instances
at the same time (view side by side metrics) but you should really choose a unique 'Frames' filename for each instance.
https://forum.doom9.org/showthread.php?t=175357
EDIT: Update to v1.01.
StainlessS
28th April 2018, 14:57
FDecimate2 v2.00 - 28 Apr 2018
FDecimate2, mod of FDecimate v1.02.
FDecimate2, fixes some problems with bugged metrics in FDecimate v1.02.
EDIT: Also adds support for RGB32/24 and 8 bit v2.60 Planar colorspaces.
Dll's for Avisynth v2.58 x86, v2.60 x86 and x64.
Here:- https://forum.doom9.org/showthread.php?p=1840557#post1840557
MWilson
1st May 2018, 20:00
New Script Functions, Trog and WDG. For Reducing Grain.
Requires RGTools, Median, DFTTest, and UU_MT_Blend.
function trog(clip v,int "tr",bool "push")
{###(c) MWilson 2018
tr=default(tr,12)
push=default(push,true)
v=v.converttoyv12()
repair(v.temporalmedian(tr,true),v,18,18,18)
return (push==true) ? repair(last.m10(),last,18,18,18) : last
}
function wdg(clip v,int "sigma")
{###(c) MWilson 2018
sigma=default(sigma,32)
v=v.converttoyv12()
grainreduced=v.dfttest(sigma=sigma)
mask=merge(v,grainreduced.Invert())
darkened=mask.coloryuv(cont_y=768)
darkened.temporalmedian(1,true).m10()
coloryuv(cont_y=-127)
grainmask=last
return uu_mt_blend(grainreduced,grainmask,1,"gmerge",3)
}
function m10 (clip y)
{###(c) MWilson 2018
y=y.converttoyv12()
a1=y.trim(1,-0)
a2=y.trim(2,-0)
a3=y.trim(3,-0)
a4=y.trim(4,-0)
a5=y.trim(5,-0)
a6=y.trim(6,-0)
a7=y.trim(7,-0)
a8=y.trim(8,-0)
a9=y.trim(9,-0)
a10=y.trim(10,-0)
merge(a10,a9,.05)
merge(last,a8,.1)
merge(last,a7,.15)
merge(last,a6,.2)
merge(last,a5,.25)
merge(last,a4,.3)
merge(last,a3,.35)
merge(last,a2,.4)
merge(last,a1,.45)
merge(last,y,.5)
c=last
return c
}
Probably not worth it's own thread, but I made a bar generator for VapourSynth. NTSC on up to 8K is supported with SDR/HDR (HLG, PQ) and 709/2020 primaries.
ColorBars is a filter for generating test signals. The output is a single frame of color bars according to SMPTE RP 219-1, 219-2, or ITU-R BT.2111-0. For NTSC, the bar pattern is described in SMPTE EG 1. For PAL, EBU bars are generated.
https://github.com/ifb/vapoursynth-colorbars
videoh
2nd June 2018, 22:20
Sweet, that will come in handy. Thanks for your work, ifb.
StainlessS
24th July 2018, 16:03
ForceProcess v1.00 - 24 July 2018
A standalone drop in replacement for RT_Stats v2.0(currently Beta11) RT_ForceProcess().
ForceProcess(), v1.00, By StainlessS @ Doom9
Requires VS2008 CPP runtimes,
ForceProcess(clip, bool "Video"=True,bool "Audio"=false,Bool "Debug"=True) :- Returns 0
If Video (default true), Force read every frame of clip from 0 to FrameCount-1.
If Audio (default false), Force read every sample of clip from 0 to NumberOfSamples-1.
Useful where a clip outputs some kind of file for use in a second filter, this function would in such a case
forcibly read and therefore write the file, so that it may be available to other filters or to a second pass of the filter that
initially wrote the file.
Debug, default true. Write Progress to DebugView.
The ForceProcess function forcibly processes both video and audio streams (ie reads each frame/sample in sequence),
so that any eg log files produced by either video and/or audio processing filter will be forcibly written to disk.
ForceProcess is a runtime function not filter and so only returns on completion.
Example:
Two Pass:
WhateverSource(...)
A_Two_Pass_Function(Pass=1) # Create some kind of deshaker log or whatever.
ForceProcess() # Force Pass 1, creating log
A_Two_Pass_Function(Pass=2) # Use created log
return Last
https://forum.doom9.org/showthread.php?t=175616
wonkey_monkey
27th August 2018, 02:04
pixelscope, a debugging filter to display pixel values.
https://forum.doom9.org/showthread.php?p=1849850
https://i.imgur.com/lrn7ZmO.png
StainlessS
2nd September 2018, 19:51
DirtBox_MI_v0.03.avs New filter.
Fixes damage like this (two consecutive damaged frames, left fixed with metrics, right bad source, middle Zebra dc detection clip)
Frame Before Bad Frames pair [showing LHS detection metric of 4.598, and hilited 'L' flag denoting left Source frame for interpolation]
https://s20.postimg.cc/4ox3enegp/Dirt_Box_MI_v0.03_165.jpg (https://postimg.cc/image/4ox3enegp/)
First of bad frame pair
https://s20.postimg.cc/u7pfrosvt/Dirt_Box_MI_v0.03_166.jpg (https://postimg.cc/image/u7pfrosvt/)
Second of bad frame pair
https://s20.postimg.cc/51ohkuzbd/Dirt_Box_MI_v0.03_167.jpg (https://postimg.cc/image/51ohkuzbd/)
Frame after bad frame pair [showing RHS detection metric of 2.303, and hilited 'R' flag denoting right Source frame for interpolation]
https://s20.postimg.cc/5r79x87kp/Dirt_Box_MI_v0.03_168.jpg (https://postimg.cc/image/5r79x87kp/)
(Above top frame, LHS detection [left of damage detection is shown in the rhs metric], the damage is to the right, bottom frame RHS detection, the damage is to the left)
Or Flash Frame Photography (static or near static cam), where Th arg might want to be somewhat bigger.
Adjust Th setting by viewing RHS RAT metrics on frame before bad frames, so that it is below the lowest bad frame metrcs ratio.
DirtBox_MI(), v0.03
[ Take your time saying the name out aloud when in public place ].
Req:- GScript OR Avs+, Grunt, MvTools2, Masktools2, RemoveGrain, CallCmd, RT_Stats v1.43.
CallCmd() optional, will auto delete DBase on clip closure if present.
YUV Only (well whatever MvTools2 + MaskTools2 supports).
Function DirtBox_MI(clip c,clip "dc"=c,Float "Th"=1.3,Float "ThMin"=0.5,Int "MinLen=1",Int "MaxLen"=2,
\ Int "SPad"=16, Int "SSharp"=1, Int "SRFilter"=4, [* MSuper *]
\ Int "ABlkSize"=16, Int "AOverlap"=4, Int "ASearch"=3,Int "ADct"=0, [* MAnalyse *]
\ Int "RBlkSize"=8, Int "ROverlap"=2, Int "RthSAD"=100, [* MRecalculate *]
\ Float "Iml"=200.0, Bool "IBlend"=True, Int "IthSCD1"=400, Int "IthSCD2"=130, [* MFlowInter *]
\ Int "OthSCD1"=400,Int "OthSCD2"=130, [* Detect Override *]
\ bool "Show",Int "Chop",String "SurgeonFile",String "OverrideFile"
\ )
Args:-
c, Source clip.
dc, Detection Clip, Default c. Must have same number of frames as Src c, no other requirement.
Intent to use eg Zebra Bands to better tune for detection, Used only for primary detect of
leftmost and rightmost frames where damage occurs.
Th, Bad Ratio Threshold, default 1.3. If eg Cur->Nxt / Max(Prv->Cur,0.001) > Th then Nxt
frame is possble 1st of damaged frames (but Cur->Nxt must also be >= ThMin as described below).
Suggest much higher for flash frame detection (probably dont need Zebra dc clip)..
Default Th of 1.3 is VERY sensitive, take care with this setting, it could well chew up your
prized video clip.
ThMin, Difference of Cur->Nxt must be at least this to detect Left 'breakup'. default 0.5.
(Avoid detection where current frame is a duplicate of prev frame and Cur->Nxt diff is very small.)
[Same in reverse for detecting RHS breakup]. Do Not set to 0.0, ie OFF.
MinLen, Minimum length of damaged sequence to fix, default 1.
MaxLen, Maximum length of damaged sequence to fix, default 2 (1 <= MinLen <= MaxLen <= 9).
MaxLen provides the maximum supported by the FrameSurgeon script, ie 9, and so will not be
increased further.
Suggest only use MaxLen of 9 where Th is really quite high, bare minimum of maybe 5.0 or
perhaps even 10.0, even then is probably a bit dodgy.
MSuper args:
SPad, Default 16, See MvTools MSuper(hpad=8,vpad=8) [We use same for both].
SSharp, Default 1, See MvTools MSuper(sharp=2)
SRFilter, Default 4, See MvTools MSuper(rfilter=2)
MAnalyse args:
ABlkSize, Default 16, See MvTools MAnalyse(BlkSize=8,BlkSizeV=8) [We use same for both].
AOverLap, Default 4, See MvTools MAnalyse(OverLap=0)
ASearch, Default 3, See MvTools MAnalyse(Search=4)
ADct, Default 0, See MvTools MAnalyse(Dct=0). Using other than default value can be VERY slow.
MRecalculate args:
RBlkSize, Default 8, See MvTools MRecalculate(BlkSize)
NOTE, RBlkSize = 0 Will Switch OFF MRecalculate, probably a bit faster at possible expense of quality.
ROverlap, Default 2, See MvTools MRecalculate(Overlap)
RthSAD, Default 100, See MvTools MRecalculate(thSAD=200)
MFlowInter args:
Iml, Default 200.0, See MvTools MFlowInter(ml=100.0)
IBlend, Default True, See MvTools MFlowInter(Blend=True). Blend or copy frame at scene change.
IthSCD1, Default 400, See MvTools MFlowInter(thSCD1=400) : (0 < IthSCD1 <= (8*8)*255)
IthSCD2, Default 130, See MvTools MFlowInter(thSCD2=130) : (0 < IthSCD2 <= 255)
Threshold which sets how many blocks have to change for the frame to be considered as a
scene change. It is ranged from 0 to 255, 0 meaning 0 %, 255 meaning 100 %.
Default is 130 (which means 51.0%).
Used by MvTools2 MFlowInter during interpolation.
Detection Override args:
OthSCD1, Default 400. as MVTools MSCDetection arg. (0 < OthSCD1 <= (8*8)*255). See MvTools2.
OthSCD2, Default 130. as MVTools MSCDetection arg. (0 < OthSCD2 <= 255)
These two thresholds govern whether frames either side of bad sequence are determined to be
from the same scene, if not from Same scene then detection is Overidden and 'E' flag is set in metrics,
on what would have been the 1st/leftmost interpolation Source frame.
NOTE, If OthSCD1 > 8*8*255 or OthSCD2 > 255 then switches OFF scene change testing, will NOT override
any detections that seem to have good frames either end from different scenes. (will likely
result in blended scene transitions).
Metrics Args:
Show, Show Metrics, default True.
Chop, Show Mode if Show=True,
0 Normal
1 Left half of frame is fixed, Right original.
2 Top half of frame is fixed, Bottom original.
File Output args:
SurgeonFile, Default "FrameSurgeonCmd.txt". If Non "", then writes a FrameSurgeon() command file to
recreate result, so can manually edit the result file and re-render in FrameSurgeon.
[part of the Sawbones/FrameSurgeon combo which also requires ClipClop()].
If using Multi-instances, each instance should have its own SurgeonFile file.
OverrideFile, Default "Overridden.txt". Detected Sequences that were Overridden because the interpolation
source frames seemed to be from Different scenes
[In FrameSurgeon() format,
"I2 666" would be two frame bad seq starting at frame 666, where interp src frames would have
been frames 665 and 668].
Dc clip implemented to assist in detection, where can use eg Zebra() to create a 'tuned to error' diagnostic clip.
Most damage will likely occur horizontally (in eg VHS tracking gunk), and so we might use Zebra Default Row=true
to create a vertical set of Zebra bars (same height as clip c), and can use the Zebra args, Threshold, Lo and Hi,
to tune some of the bars to better reveal where errors occur. If any of the bars seem of no use, then best
get rid of those bars (crop) so as not to 'water down' the detection metrics.
May be able to detect several kinds of frame corruption, including flash frames, up to 9 frames catered for.
Where it can detect flash frames, will only likely be possible where frames are from the SAME SCENE, not two
different scenes separated by white gunk.
Dc clip probably not needed for flash photography flashes.
To deal with Interlaced clip, can eg SeparateFields / SelectEven/Odd and handle each separately, then weave them
back together again afterwards. Is multi-instance capable and so (despite use of global vars) will work just fine.
Probably better to not jump about, jumping into middle of bad sequence will start detect from jump point,
but OK to go backwards where already visited.
Shows Flags where hi-lited,
E = End Of Scene
Shown only on 1st detected Interpolation Src frame (frame before bad sequence starts).
Override where detected bad seq interpolation source frames are NOT from same scene (by OthSCD1 and OthSCD2)
0 = Any Digit 0 to 9, 0 when E flag not hi-lited, else digit representing length of bad sequence
that was Overridden as for E flag above.
L = Left Intep Src frame
R = Right Interpolate Src frame,
* = Interpolated frame.
Here:- https://forum.doom9.org/showthread.php?t=175708
StainlessS
14th January 2019, 19:21
RandomSource(), Simple source filter prodcing RGB32 640x480@24 FPS clip by default, random colored for test purposes.
dll's for avs v2.58, Avs/+ v2.60 x86 & x64.
Requires VS2008 CPP Runtimes,
Here:- https://forum.doom9.org/showthread.php?p=1862844#post1862844
https://i.postimg.cc/Cz1fvq45/Random.jpg (https://postimg.cc/Cz1fvq45)
wonkey_monkey
14th January 2019, 20:42
warp, a filter to correct or distort video geometry using control points. Also includes a new version of quad.
https://forum.doom9.org/showthread.php?p=1862853
Demo/tutorial video: https://www.youtube.com/watch?v=SG1eex7HmLM
https://i.imgur.com/5Aerv2g.png
StainlessS
4th February 2019, 02:21
TitleBar, v1.02, new plug.
TitleBar() - by StainlessS @ Doom9:- https://forum.doom9.org/showthread.php?t=176062
Requires VS2008 CPP Runtimes.
VIDEO: Planar, YUY2, RGB32, & RGB24.
Plugin's for both Avisynth v2.58 and v2.6 (avs+ x86 & x64).
Filter to Add a 20 pixel Black TitleBar to top of clip, and to write a title string and optional Frame Number to each frame.
Uses DDigit text renderer & where showing FrameNumber, does not require ScriptClip() filter call.
Titlebar(clip c,String "Tit"="",Bool "ShowFrameNo"=True,Int "Col"=$000000,String "ColChr"="",Bool "Esc"=True)
Tit, Default "", Title string to write above video clip to the TitleBar.
The Tit title string may also contain Escape codes if Esc Arg is True, see later.
ShowFrameNo, Default True. If True, then also writes Frame Number as in eg "1234] My Title String".
Col, Default $000000. RGB color of the TitleBar background.
ColChr, Default "" (Starting Color = default). A single character as a string which sets the Starting color used for printing the FrameNumber/Title text.
If the ColChr string contains more than a single character, it will throw an error.
Valid single character can be any one of these (upper or lower case):-
"0123456789ABCDEF" # 16 Color character codes '0' to 'F'
"GHIJKLMNOPQRSTUV" # 16 Greyscale character codes in ascending order of lightness 'G' to 'V' ($00 -> $FF)
"-!*" # 3 Specials,
# '-' = Default color. : As '7' [White] in Color colorspace : As 'S' [Near white $CC] in Y8.
# '!' = HiLite color. : As 'A' [Orange] in Color colorspace : As 'V' [White $FF] in Y8.
# '*' = Silently converted to '-', ie Default color. (Only has real meaning embedded in the Tit title string).
Esc, Default True. If True, then Escape codes "\a?", and "\x??" can be used to embed data into Tit Title string (The 'a' and 'x' MUST BE LOWERCASE).
Where "\a?", '?' is any character valid as in above ColChr, enables changing color on title bar, within the Tit title string.
In such a case, "\a*" switches to the OnEntry or Starting color, ie same color as set via ColChr.
Where "\x??", each '?' character MUST BE an UPPERCASE hex digit '0' -> 'F'. Enables embedding 8 bit Hex character code into the Tit title string.
You can use eg "\\x00" to embed a literal sequence of "\x00" into the title string, ie "\\" embeds a single backslash and so does not interpret as hex insertion code.
Use similar to avoid color escape code eg "\\a-" to embed literal "\a-".
Esc=False, does NOT process color Escape codes nor Hex insertion Escape code.
NOTE, the only character in range 0->31 that can be used in Tit title string is BEL [chr(7)] (where "\a" is converted to BEL color switch code), all other codes
in range 0->31 (eg chr(9) TAB) are converted to SPACE character. Also, CarriageReturn(13) and Newline(10) will terminate the title string early, eg you cannot
use Newline(10) to print on the input clip [neither as "\n" nor Chr(10)].
Likewise, characters $E0 -> $FF will be converted to SPACE character (they also do not exist in font).
eg,
# Chr(137) [$C9]is Copyright symbol (c).
ColChr = "!" # Hilite Code (takes effect from FrameNumber as ShowFrameNumber=True)
Return ColorBars.Titlebar("TitleBar \a-\xC9 StainlessS \a*2019",True,ColChr,Esc=true) # FrmNo=Hilite, copyright in Default, Year in same as FrmNo
COLOR TABLE:-
# Ordinal Color ColChr or eg("\a0" for embedded DARKGRAY)
00) DARKGRAY "0"
01) DODGERBLUE "1"
02) ORANGERED "2"
03) ORCHID "3"
04) LIME "4"
05) AQUAMARINE "5"
06) YELLOW "6"
07) WHITE "7"
08) SILVER "8"
09) CORNFLOWERBLUE "9"
10) ORANGE "A"
11) PLUM "B"
12) CHARTREUSE "C"
13) POWDERBLUE "D"
14) GOLD "E"
15) GAINSBORO "F"
#
# Grey ColChr
16) $00 "G"
17) $11 "H"
18) $22 "I"
19) $33 "J"
20) $44 "K"
21) $55 "L"
22) $66 "M"
23) $77 "N"
24) $88 "O"
25) $99 "P"
26) $AA "Q"
27) $BB "R"
28) $CC "S"
29) $DD "T"
30) $EE "U"
31) $FF "V"
# Specials
DEFAULT "-"
HILITE "!"
ON_ENTRY "*"
###################################
TitleBarTest.avs
############
ColorBars(width=1024)
# Chr(137) [$89]is Copyright symbol (c).
SHOWFRAMENO = true
COLCHR = "!" # Hilite Code (takes effect from FrameNumber if ShowFrameNumber=True, Else takes effect on Tit title string)
ESC = True
Titlebar("Title\aDBar \a-\x89 \a2S\a3t\a4a\a5i\a6n\a8l\a9e\aAs\aBs\aCS \a*2019",ShowFrameNo=SHOWFRAMENO,ColChr=COLCHR,Esc=ESC)
############
https://i.postimg.cc/NKbwVGYZ/Titlebar-Test.jpg (https://postimg.cc/NKbwVGYZ)
See here:- https://forum.doom9.org/showthread.php?t=176062
StainlessS
12th March 2019, 23:26
Shuffle, plugin v1.03, (req VS 2008 runtimes). https://forum.doom9.org/showthread.php?t=176193
Shuffle, by StainlessS @ Doom9.
Shuffle spacial columns or rows (1D), or blocks(2D) of frames, or temporal shuffle (frame order), all shuffles Inversable, ie undoable.
Potential usage in clip obfuscation using 'secret keys', or slideshow random ordering of frames.
Plugin for all Avs/+ valid colorspace.
Dll's for Avs v2.58, v2.60/+ x86 and x64.
Shuffle1D_X(clip c, Int "Seed"=0, Int "blkW"=8, Bool "Once"=False, Bool "Inverse"=False ) # Horizontal 1D Shuffle
Shuffle1D_Y(clip c, Int "Seed"=0, Int "blkH"=8, Bool "Interlaced"=False, Bool "Once"=False, Bool "Inverse"=False ) # Vertical 1D Shuffle
Shuffle2D (clip c, Int "Seed"=0, Int "blkW"=8, Int "blkH"=blkW, Bool "Interlaced"=False, Bool "Once"=False, Bool "Inverse"=False ) # 2D Shuffle
ShuffleT (clip c, Int "Seed"=0, Bool "Inverse"=False ) # Shuffle Temporal, ie frame order.
c, Clip to Shuffle
Seed, -1=Random seed (Non inverse-able), 0 (default) same shuffle every time, Else any other int = UserSeed or 'SECRET_KEY'.
BlkW, Default 8, width of blocks or columns to shuffle.
(Must be compatible with X Crop args, eg 2 or multiple thereof for YV12, also must divide exactly into Width of clip, use crop or Addborders where necessary).
BlkH, Shuffle1D_Y Default=8. Shuffle2D Default=BlkW, NOTE, Changed from original default 8.
Height of blocks or rows to shuffle.
(Must be compatible with Y Crop args, eg 2 or multiple thereof for YV12, also must divide exactly into Height of clip, use crop or Addborders where necessary).
Interlaced, If True, then doubles minimum requirement of BlkH (Shuffle1D_Y and Shuffle2D ONLY).
eg YV12, where Interlaced=False blkH would require multiple of 2, and where Interlaced, Would would require multiple of 4, so as not to destroy interlacing.
Once, Default False. If true, then uses the same shuffle pattern for every frame, else shuffled differently for every frame.
Perhaps better compression if not using ShuffleT.
Inverse, Reverses previously done shuffling, Must Use Same Key as was used for the Shuffling stage (and maybe ideally all in reverse shuffle order).
Where ONLY 2 x 1D shuffles (ie both X and Y shuffling), then the order for de-shuffling does not matter, can use Inverse X and then Inverse Y or vice versa.
Shuffle2D is much better than 2x1D shuffles ie Shuffle1D_X + Shuffle1D_Y (or vice versa).
Shuffle2D together with either of the 1D shuffles is a bit pointless.
If using ShuffleT (frame order shuffle) suggest before or after ALL other shuffles, and in reverse order when Inverse = true.
If Inverse, then must uses same Seed, BlkW, BlkH, Interlaced and Once args to recover obfuscated source.
Seed, can be different for all Shuffle instances, if any of them use random seed (-1), you will not be able to inverse the result.
For ShuffleT(), source clip should be frame accurate and ideally not from eg DIVX/XDIV (they can often have a key frame only every 8 seconds or so, so would be VERY slow).
(Q) What use is seed=0 ? (A) Exact same sequence every time.
(Q) What use is Random seed ? (A) maybe for ShuffleT() of pics for slideshow.
The AVS Folder has a number of Demos (7 at time of writing) that will run with Colorbars or An Avi.
Some images from included scripts.
Shuffle_2x1D.avs
https://i.postimg.cc/jWPy4j45/Shuffle-2x1-D-00.jpg (https://postimg.cc/jWPy4j45)
Shuffle_2D.avs
https://i.postimg.cc/qNQPMk3N/Shuffle2-D-00.jpg (https://postimg.cc/qNQPMk3N)
Shuffle_Compared.avs
https://i.postimg.cc/VSmk2Lc5/Shuffle-Compared-00.jpg (https://postimg.cc/VSmk2Lc5)
Shuffle_T.avs
https://i.postimg.cc/LhY2CZZN/Shuffle-T-00.jpg (https://postimg.cc/LhY2CZZN)
Shuffle_3D.avs
https://i.postimg.cc/0b5RgMzT/Shuffle-3-D-00.jpg (https://postimg.cc/0b5RgMzT)
https://i.postimg.cc/wBnVvVF1/Shuffle-2x1-D.jpg (https://postimages.org/)
.
https://i.postimg.cc/BbPfFMfR/Shuffle2-D.jpg (https://postimages.org/)
.
https://i.postimg.cc/mDzT3bQd/Shuffle-Compared.jpg (https://postimages.org/)
see here:- https://forum.doom9.org/showthread.php?t=176193
wonkey_monkey
12th March 2019, 23:32
petrol stations open 24 hours (https://gasstation-nearme.com/open-24-hours)
:confused:
StainlessS
12th March 2019, 23:51
Thanks Wonkey, I had just spotted that myself, Not sure if PostImage slips in the odd advert into its links, I've seen the same thing at least once before.
Fixed.
StainlessS
6th April 2019, 03:22
NumCommandProcessor() v1.02
# NumCommandProcessor.avsi
NumCommandProcessor(), v1.02 by StainlessS @ Doom9 : https://forum.doom9.org/showthread.php?p=1870956#post1870956
Call some clip function with int command args taken from a Command String or File.
Can write/append generated commands to Logfile for further hand edit and frameserve with raw log commands and without NumCommandProcessor.
Required:-
RT_Stats v1.43+ [(c) StainlessS]
Avs+ [(c) Ultim, Pinterf & others], OR GScript [(c) Gavino].
NumCommandProcessor(clip c, String CMD,String CmdFunc,Int "NumMax"=c.Framecount-1,Int "NumMaxStep"=0,Bool "Reverse"=False,Bool "Debug"=True,String "LogFile"="",Bool "LogAppend") : returns result clip
Two modes of operation governed by CmdFunc string,
1 ) EMBEDDED single Number, eg "DeleteFrame(%d)" where Commands in CMD(String or File) must be single integer number only, no ranges allowed.
'%d' in above string is the insertion point for the integers read from CMD String or File.
If CmdFunc function is some kind of Delete or Insert function eg DeleteFrame or DuplicateFrame or RemovePixelRow or etc, then assuming the CMD string/file
integers are in ascending order, then should set Reverse=True, as when deleting/inserting something, higher number eg frames will move by 1 place due to the deleted/inserted frame/pixelRow.
In addition, if eg deleting frames, then should also set NumMaxStep=-1, to reduce the frame count so that validation check is decremented after each frame deleted.
If CmdFunc is some kind of Insertion function eg "DuplicateFrame(%d)" then should set NumMaxStep=1 as frame count will grow at every frame duplicate insertion.
If ANY kind of EMBEDDED non frame style function, eg "RemovePixelRow(%d)" then MUST set NumMax = c.Height-1 to validate cmd integers against height, and if eg
"RemovePixelColumn(%d)" then set NumMax = c.Width-1 (assuming that your clip is called c).
2 ) APPLYRANGE (NON-EMBEDDED), eg "Blur(1.58,1.58)" [NO insertion point ie no embedded '%d'].
In this mode, the CmdFunc is applied using ApplyRange with the numbers obtained from the CMD string/file (Can be single frame or range).
NEITHER of the above modes are of any use for trimming a clip, if you require command file for trimming ranges see
FrameSel Plugin (Especially SelectRanges.avs, which also requires Prune if trimming audio)
FrameSel:- https://forum.doom9.org/showthread.php?t=167971&highlight=FrameSel
Prune:- https://forum.doom9.org/showthread.php?t=162446
FrameSel SelectRanges.avs allows for Either Selecting or Rejecting command frames/ranges.
CMD, If First character is an Asterisk(*) then is interpreted as a multiline Command String of command numbers[one number/range per line], Otherwise a FileName of command numbers.
EMBEDDED mode allows only single Integers in CMD, whereas APPLYRANGE mode allows for 1 (frame) or 2 (range) on any command line.
Best if numbers/ranges in ascending order, and non overlapping ranges suggested (but not enforced).
CmdFunc, Function Name and optional positional insertion marker '%d' where the command number will be inserted, eg "DeleteFrame(%d)".
Do not include source clip, uses Last as in "DeleteFrame(%d)" or "Blur(1.58,1.58)".
See previously noted EMBEDDED and APPLYRANGE (NON-EMBEDDED) modes.
Do not use more than 1 insertion marker, it will produce error alert (there are no checks).
NumMax, Default c.FrameCount-1.
Maximum possible valid command number for validation, eg if "DeleteFrame(%d)" then use c.FrameCount-1, or for "RemovePixelRow(%d)" then c.Height-1,
For "RemovePixelColumn(%d)" use c.Width-1, etc (assuming that your clip is called c).
For APPLYRANGE (Non-EMBEDDED) mode, always set as as Default c.FrameCount-1.
NumMaxStep, Default 0. (Range: -1, or 0, or 1 ONLY)
Adjustment to NumMax validation check after some EMBEDDED mode delete or insert style CmdFunc,
eg use NumMaxStep=-1 for "DeleteFrame(%d)" or "RemovePixelRow(%d)" and NumMaxStep=1 for "DuplicateFrame(%d)" or "DuplicatePixelRow(%d)".
NOT USED in APPLYRANGE mode.
Reverse, Default False. If True, then Process CMD list of numbers in reverse order, from bottom of list to top, Else from top to bottom.
If eg Deleting or Inserting frames, then after each operation, all frames above would change their frame number, so must do in reverse order.
Probably does not really matter in APPLYRANGE mode unless ranges overlap (which they really should not).
Debug, Default True. Send Func calls to DebugView as each are called (Google DebugView) .
LogFile, Default "" ie No Log file. Give it a Filename to Produce log of commands used.
LogAppend, Default False. Only valid if LogFile!="". If True, then Append to existing Logfile, else Delete existing Logfile at Start.
LogFile and LogAppend, allow you to 'Collect' a bunch of generated commands for perhaps further hand edit, using NumCommandProcessor
just to generate a template with correct frames/ranges (including Reverse order if necessary, and validating ranges),
then make small adjustments eg Change Subtitle text or colors for one off adjustment.
Returns result clip after all commands executed, ALL processing of frames/ranges done before frame serving commences.
Eg >>>>>>>>>>>>>>>>>>>>>>>>>>>
Import(".\NumCommandProcessor.avsi")
Import(".\NumCommandUtility.avsi")
Import(".\PixelRemDup.avsi")
Colorbars(Width=1024,Height=768).KillAudio.ConvertToYV24.ShowFrameNumber
CMD="""* # <<<<<<<========== If 1st Character is Asterisk/Star ['*'] Then is a Command String, ELSE is a FileName.
100
200
300
400
500
"""
#CMD="CMD.txt" # Alternate use where numbers in File (same format)
RANGECMD="""* # <<<<<<<========== If 1st Character is Asterisk/Star ['*'] Then is a Command String, ELSE is a FileName.
100 149
200, 299
400
500 ,599
"""
#RANGECMD="RANGECMD.txt" # Alternate use where numbers in File (same format)
LOGFILE="MyLog.Log" # APPEND All to Log (Default="" ie not used)
LOGAPPEND=TRUE # APPEND All to Log (Default=FALSE, ie Delete LOG at start)
############################
## Pick One of below to Return, comment out others (Reverse assumes that CMD/RANGECMD are in ascending order)
## EMBEDDED mode frame Deletion / Insertion (Using CMD)
Return NumCommandProcessor(CMD,"DuplicateFrame(%d)",NumMaxStep=1,Reverse=True,LogFile=LOGFILE,LogAppend=LOGAPPEND).Info # Embedded, Insertion so REVERSE=True and NumMaxStep=1
#Return NumCommandProcessor(CMD,"DeleteFrame(%d)",NumMaxStep=-1,Reverse=True,LogFile=LOGFILE,LogAppend=LOGAPPEND).Info # Embedded, Deletion so REVERSE=True and NumMaxStep=-1
## APPLYRANGE modes (Using RNGCMD) NO Optional names allowed, and ALL (used) args in proper order (ApplyRange requirement).
#Return NumCommandProcessor(RANGECMD,"FlipVertical",LogFile=LOGFILE,LogAppend=LOGAPPEND).Info # APPLYRANGE, Accept Defaults, Frame or Range Commands
#Return NumCommandProcessor(RANGECMD,"FlipHorizontal",LogFile=LOGFILE,LogAppend=LOGAPPEND).Info #
#Return NumCommandProcessor(RANGECMD,"Blur(1.58,1.58)",LogFile=LOGFILE,LogAppend=LOGAPPEND).Info #
#Return NumCommandProcessor(RANGECMD,"Sharpen(1.0,1.0)",LogFile=LOGFILE,LogAppend=LOGAPPEND).Info #
#Return NumCommandProcessor(RANGECMD,"Levels(24,1.2,220,16,235,false)",LogFile=LOGFILE,LogAppend=LOGAPPEND).Info # NO Optional names allowed, and in order.
#Return NumCommandProcessor(RANGECMD,"""MySub("Hello, World!","Ariel",64,$FF5555,$0,5)""",LogFile=LOGFILE,LogAppend=LOGAPPEND).Info # NO Optional names allowed, and in order.
## EMBEDDED pixel row/col Delete/Insert. (Using CMD)
## Assumes that you have RemovePixelRow, RemovePixelColumn, DuplicatePixelRow, and DuplicatePixelColumn script functions.
#Return NumCommandProcessor(CMD,"DuplicatePixelRow(%d)",NumMax=Height-1,NumMaxStep=1,Reverse=True,LogFile=LOGFILE,LogAppend=LOGAPPEND).Info # Embedded, Insertion so REVERSE=True and NumMaxStep=1
#Return NumCommandProcessor(CMD,"RemovePixelRow(%d)",NumMax=Height-1,NumMaxStep=-1,Reverse=True,LogFile=LOGFILE,LogAppend=LOGAPPEND).Info # Embedded, Deletion so REVERSE=True and NumMaxStep=-1
#Return NumCommandProcessor(CMD,"DuplicatePixelColumn(%d)",NumMax=Width-1,NumMaxStep=1,Reverse=True,LogFile=LOGFILE,LogAppend=LOGAPPEND).Info # Embedded, Insertion so REVERSE=True and NumMaxStep=1
#Return NumCommandProcessor(CMD,"RemovePixelColumn(%d)",NumMax=Width-1,NumMaxStep=-1,Reverse=True,LogFile=LOGFILE,LogAppend=LOGAPPEND).Info # Embedded, Deletion so REVERSE=True and NumMaxStep=-1
<<<<<<<<<<<<<<<<<<<<<<<<<<<
See home thread here:- https://forum.doom9.org/showthread.php?t=176257
lansing
8th April 2019, 02:21
I don't get why are people still posting their software updates in this thread, the first post have not been update in 7 years...
ChaosKing
8th April 2019, 08:36
I don't get why are people still posting their software updates in this thread, the first post have not been update in 7 years...
You can always start exploring from the last post...
wonkey_monkey
8th April 2019, 10:27
I don't get why are people still posting their software updates in this thread, the first post have not been update in 7 years...
Because this is the "New Plugins and Utilities" thread. The first post may not be any use, but the last ones are.
fvisagie
8th April 2019, 12:30
Plus, subscribed users get the updates anyway.
StainlessS
8th April 2019, 13:49
This thread is monitored by RSS feeds all over the world (for new plugs).
sadly, whenever anybody posts some inane remark, the feeds also get that too, (like this inane remark) :(
lansing
8th April 2019, 15:51
You can always start exploring from the last post...
I thought the main purpose of this thread is to have a place for people who're looking for plugins to find them easily in a list with brief descriptions on the first post, like a wiki. And the fact that people were posting their new plugins here is to have them added to the first post so others can find them easily. Having regular users digging up the thread looking for plugin themselves completely defeated the purpose.
StainlessS
8th April 2019, 23:17
find them easily in a list with brief descriptions
It is for new/nearly new plugs that cannot be found anywhere else when initially posted.
At time when this thread was new, OP could handle a few new plugs and add to first post, but as gets bigger, then can no longer do that,
posts in Usage forum have max post size of 16KB, so when at max, can no longer expand (even if enthusiasm to do so has not died).
.
StainlessS
24th April 2019, 13:22
problem where eg dll has been downloaded from another computer or internet, and is blocked by the system because of this, you need to remove NTFS Alternate Data stream for the file.
Problem already posted about here[and some dozen posts following it]:- http://forum.doom9.org/showthread.php?p=1837271#post1837271
https://i.postimg.cc/13hhcYbq/Untitled.jpg (https://postimages.org/)
Solution, can Unblock via file Properties[as shown by above image arrow] , or use SysInternals Streams.exe or easiest found so-far is to use NirSoft "AlternateStreamView"
which allows mass removal via "Delete Selected Streams" menu option.
AlternateStreamView:- https://www.nirsoft.net/utils/alternate_data_streams.html
Below showing the Zone.Identifier Data that needs removal.
https://i.postimg.cc/HssDSyLp/Untitled.jpg (https://postimages.org/)
NOTE, some of Nirsoft tools may flag an Antivirus warning about PUP's (potentially unwanted programs), as many of its utils are sys fix tools to show passwords and such.
All Nirsoft tools are hi quality top notch tools and are nothing whatever to worry about [EDIT: So long as you download direct from NirSoft].
EDIT: After scanning all my drives, I found I had hundreds [if not thousands] of blocked files.
EDIT: Files are so blocked for your protection, only unblock if you think they are safe [non-malware].
EDIT:
To STOP all downloaded files from being blocked by system, under XP with GpEdit.msc, [Group Policy Editor].
gpedit.msc
User Configuration > Administrative Templates > Windows Components > Attachment Manager
Enable: "Do not preserve zone information in file attachments"
Above GpEdit.msc does NOT have an icon in Administrator tools (bit of a secret one and already exists in basic XP, Server 2003 Admin tools install not necessary), need use Start/Run or from command line.
For a easy removal of multiple Alternate Data Streams, can move all files to FAT32 partition [FAT32 dont support alternate data streams] and then move them back again.
EDIT: Below, Registry edit for fixing the problem [folder contents].
Folder: "STOP_DownloadedFileBlocking"
File: "!!! ENABLE Switches OFF file blocking !!!" [empty text file for info only]
File: "ENABLE_DoNotPreserveZoneInformationInFileAttachments_(FileBlockingIsDisabled).reg"
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments]
"SaveZoneInformation"=dword:00000001
File: "DISABLE_DoNotPreserveZoneInformationInFileAttachments_(FileBlockingIsReEnabled).reg"
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments]
"SaveZoneInformation"=dword:00000000
Groucho2004
24th April 2019, 13:41
All Nirsoft tools are hi quality top notch tools and are nothing whatever to worry about.I second that, they have very useful tools.
Groucho2004
7th May 2019, 00:46
Not exactly a new Avisynth plugin but I'll post it here anyway:
This plugin returns info about OS/CPU/Memory/Screen/etc.
https://i.postimg.cc/434z3c8z/SysInfo.png
Details in its dedicated thread (https://forum.doom9.org/showthread.php?t=176131).
StainlessS
22nd May 2019, 10:43
Function to estimate required rFactor for Nnedi3_RPow2() upscale function.
(Purpose is to enable automated decision for rFactor without human intervention.)
Function Estimate_Nnedi3_Rpow2(clip c,Int OutW,Int OutH, Float "Th"=Sqrt(2.0),Bool "Debug"=False) # https://forum.doom9.org/showthread.php?t=176437
Requires:- RT_Stats if DEBUG==True, else no requirements.
Estimate required rfactor for nnedi3_rpow2() based on greatest output dimension (OutW or OutH)
Returns Int, 1(dont use nnedi3_rpow2), or 2^(1->10).
c, Input clip, used to obtain input frame size.
OutW, Output resize clip Width.
OutH, Output resize clip Height.
Th, Default sqrt(2.0) ~ 1.4142 (range 1.0 <= Th <= 2.0), choice threshold.
Th=1.0 : Always upscale twice as much as required [DONT USE]
Th=1.5 : Produces rfactor that when upscaled greatest dimension is at least 50% greater than that produced by next lower rfactor (if that makes sense).
eg, out c.Width is biggest = 100, and Th = 1.5, then
result = 1 if OutW < 150 and 2 if OutW >= 150.
result = 2 if OutW < 300 and 4 if OutW >= 300.
result = 4 if OutW < 600 and 8 if OutW >= 600.
result = 8 if OutW < 1200 and 16 if OutW >= 1200.
Th=1.1 : eg, out c.Width is biggest = 100, and Th = 1.1, then (10% greater)
result = 1 if OutW < 110 and 2 if OutW >= 110.
result = 2 if OutW < 220 and 4 if OutW >= 220.
result = 4 if OutW < 440 and 8 if OutW >= 440.
result = 8 if OutW < 880 and 16 if OutW >= 880.
Th=2.0 : Never upscale enough [DONT USE]
Debug, Default False. When true return Messageclip with some debug info, else return Int rFactor result.
Simple Client using Debug mode (requires RT_Stats)
BlankClip(width=100,height=100)
Estimate_nnedi3_rpow2(600,600,1.5,Debug=TRUE)
Return Last
https://i.postimg.cc/htdnNngL/pow-00.jpg (https://postimages.org/)
Default Th=SqRt(2.0), Assuming both dimensions equally scaled and upscaling between 1.0 and 2.0 times, then SqRt(2.0) threshold is broken when Input clip is to be doubled in Area.
Similar decision when deciding between rFactor of 2 and 4, 4 and 8, etc.
Home thread here:- https://forum.doom9.org/showthread.php?t=176437
StainlessS
12th June 2019, 18:35
For the few of you Math Monsters on-site (many probably know bout these already),
Free Stuff:
MicroSoft Mathematics,
From WikiPedia:- https://en.wikipedia.org/wiki/Microsoft_Mathematics
MicroSoft Mathematics
Microsoft Maths also known as Microsoft Mathematics is a freely downloadable educational program, designed for Microsoft Windows, that allows users to solve math and science problems. Developed and maintained by Microsoft, it is primarily targeted at students as a learning tool.
Also versions for Windows phone available, and Office addons.
x86 and x64 version, XP compatible,
M$ Download:- https://www.microsoft.com/en-us/download/details.aspx?id=15702#tm
EigenMath:- http://www.eigenmath.org/
Eigenmath is a symbolic math program for people who need to compute with symbols as well as numbers.
Produces some nice output
https://i.postimg.cc/fkM5m0z1/Eigen-Math.jpg (https://postimg.cc/fkM5m0z1)
https://i.postimg.cc/Mv38hS3K/Eigen-Math-2.jpg (https://postimg.cc/Mv38hS3K)
https://i.postimg.cc/ZW9hmMXP/Eigen-Math-3.jpg (https://postimg.cc/ZW9hmMXP)
Script
y=1/3x^2
y
Result
https://i.postimg.cc/xqkGKyrx/Eigen-Math-4.jpg (https://postimg.cc/xqkGKyrx)
EDIT: EigenMath executable is only 570KB, expanded entire folder incl PDF docs and tutorial video ~ 4.5MB. (Very small in comparison to similar type programs).
Non install, easily portable.
wonkey_monkey
30th June 2019, 13:36
Info2 (https://forum.doom9.org/showthread.php?p=1878222), a replacement for the built-in Info() filter:
https://i.imgur.com/c4rDblj.png
https://forum.doom9.org/showthread.php?p=1878222
wonkey_monkey
30th June 2019, 17:52
FastBlur (https://forum.doom9.org/showthread.php?t=176564). It blurs fast.
https://i.imgur.com/u8Ffqhq.png
https://forum.doom9.org/showthread.php?t=176564
Bernardd
7th August 2019, 17:09
Hello,
This new script brings the RGBAdapt plugin an automatic mode to achieve the white balance.
The default white balance results from the combination of gain, contrast, average, gamma (rpow) and gamma correction with S (spow) curve on each color channel.
The correction in agreement with the gray-world theory results from the combined action of a correction of bias and a correction of rpow, the second treating the part not taken into account by the first one. The script calculates for each image the proportion of work done by each process. Finally a spow correction (S curve) is added.
The data used to calculate these corrections, ie the average, maximum and minimum values of the color channels, do not allow a continuous description of the histogram curve of the three basic colors, so they are not sufficient to choose the inflection point of the S curve. By default, the script proposes for each channel, an inflection centered on its average value. For a little disturbed movie, this solution may be satisfactory, but in general, you will need to adjust the spmid of each channel by watching the movie.
Script here
https://forum.doom9.org/showpost.php?p=1881328&postcount=60
wonkey_monkey
27th November 2019, 22:07
ColourWarp (https://forum.doom9.org/showthread.php?p=1891529). It warps colours.
Examples: https://i.imgur.com/q6tI4xq.jpg
StainlessS
24th August 2020, 16:34
SpotLess(), new de-spotting script filter.
Script filter to remove Spots and noise using mvTools2 and Medianblur2.
Copes with spots on multiple consecutive frames, setting RadT accordingly.
Based on an idea by Didée.
Mvtools2/MedianBlur2 by Pinterf, so AVS+ colorspace and x64 compatible.
Chosen function name would seem to be a very good choice, not perfect, but very nearly is.
Adjective: spotless
1) Completely neat and clean
You should also try spotless as a prefilter in smdegrain. Worked very good for me with almost zero artifacts left from spotless.
yes, it's do better job than any methods ...
This is a wonderful tool. As it happens, I've been cleaning a VHS cap and the silly video has quite a lot of spots and scratches in every other field. SpotLess cleans them up nicely and also takes care of most of the chroma noise too.. I haven't checked things with longer samples but looks good anyway.
Home Thread here:- https://forum.doom9.org/showthread.php?t=181777
real.finder
13th March 2021, 17:23
sAddGrainCT https://github.com/realfinder/AVS-Stuff/blob/Community/avs%202.5%20and%20up/sAddGrainCT.avsi
the support in https://forum.doom9.org/showthread.php?t=174121
wonkey_monkey
5th May 2021, 17:55
DebugColourSpaces (https://horman.net/avisynth/download/DebugColourSpaces.zip) - for testing filters against multiple colourspaces at once
Discussion (in Avisynth Development) (https://forum.doom9.org/showthread.php?t=182817)
wonkey_monkey
15th May 2021, 19:51
Waveform 2.0 (https://forum.doom9.org/showthread.php?t=182866)
wonkey_monkey
31st May 2021, 22:55
Feedback (https://forum.doom9.org/showthread.php?t=182910)
Lets you send a filter chain's output back into itself as input for the next frame.
kedautinh12
15th August 2021, 17:10
EEDI2CUDA ported from Vapoursynth
https://github.com/AmusementClub/VapourSynth-EEDI2CUDA/issues/3#issuecomment-899069883
kedautinh12
16th August 2021, 13:14
EEDI2CUDA now have x86 ver
https://github.com/AmusementClub/VapourSynth-EEDI2CUDA/actions/runs/1135300628
kedautinh12
26th August 2021, 02:20
BestAudioSource@a5b0669 (have x86 ver)
https://drive.google.com/file/d/1F3FC98vKDKVxBIkBTAlWZ7TF1eyY19I-/view?usp=sharing
I got from
https://gitlab.com/uvz/AviSynthPlus-Plugins-Scripts/-/tree/master
Parameters
https://forum.doom9.org/showthread.php?t=177337
kedautinh12
9th September 2021, 15:04
New fork frfun7 from pinterf
https://github.com/pinterf/Frfun7/releases
GMJCZP
9th September 2021, 20:37
New fork frfun7 from pinterf
https://github.com/pinterf/Frfun7/releases
Fabulous! If the whole family of prunedtree plugins is revived it would be great, and if we add the TUnsharp update to that my Khameleon script would be 100% operational in HBD.
I'm going to update the information on Khameleon, thanks to pinterf.
kedautinh12
12th September 2021, 17:31
Avisynth-retinex
https://github.com/Asd-g/AviSynth-Retinex
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.