Log in

View Full Version : New Plugins and Utilities


Pages : 1 2 3 [4] 5 6 7 8

fvisagie
7th December 2012, 14:26
Yes to both - http://forum.doom9.org/showthread.php?t=166588 and http://forum.doom9.org/showthread.php?t=166627, in this case.

fvisagie
11th December 2012, 21:06
ALBR - Adaptive lens blur repair

Function for adaptively repairing video damaged by lens blur, using a frame-adaptive repair mask, a selection of sharpeners and multi-stage motion-compensated artifact removal. It also provides blanket sharpening and denoising-only modes, the latter mainly for applying an equivalent amount of denoising to footage that did not need repairing.

http://forum.doom9.org/showthread.php?t=166588

fvisagie
11th December 2012, 21:07
SpliceFiltered

Function that simplifies the task of creating a long sequence of splices or blends between filtered and original clips by allowing the user to enter splice frame numbers and optional duration of blend (overlap) into a single text list. It's mainly intended to be used with prefiltered or prerendered clips, and/or when splice blending is needed to mask filtering transitions.

http://forum.doom9.org/showthread.php?t=166627

vcmohan
16th December 2012, 13:05
Reformer (http://avisynth.org/vcmohan/Reformer/Reformer.html) plugin is for conversion between rectangle and quadrilateral image areas. This is similar to my Reform plugin but uses matrix algebra and renders better even if the angle of rotation/displacement of coordinates are 90 degrees or more.
Reformer is probably is very much like David Horman's plugin quad. However Reformer works for YUY2 and YV12 formats in addition to RGB formats. Coordinates of both rectangle and quadrilateral can be specified.discussion on this plugin may be posted in the thread of Reformer (http://forum.doom9.org/showthread.php?p=1605916#post1605916)
__________________

StainlessS
16th December 2012, 22:35
PlanetCrop() v1.0 new script function.

Given a series of time lapse planetoid images, locates those images in frame, crops out and joins them all together into
a video clip of required Frame Aspect Ratio, 1 FPS, with optional Auto Luma Levelling.
First scans each image establishing maximum dimensions for whole sequence (after cropping out the planets). Optionally 'grows' those
dimensions to maintain some of the area around the cropped planets. A 'canvas' size is then established to contain the now maximum
dimensions and respecting the desired Frame Aspect Ratio, synthetic black borders are added where necessary.
Borders are the areas added to maintain aspect ratio and can be hi-lited in red. Margins are areas that use the
original image content instead of synthetic black borders (where possible), they replace synthetic borders, and can be hi-lited
in green. Margins are the areas between the established crop coords and synthetic borders.
http://forum.doom9.org/showthread.php?p=1606025#post1606025

vcmohan
1st February 2013, 13:47
SwitchByAudio (http://avisynth.org/vcmohan/SwitchByAudio/SwitchByAudio.html): is a new plugin which attempts to switch between two clips depending upon the length and level of audio pause.
Please see discussion here (http://forum.doom9.org/showthread.php?t=167087).

maxxon
1st February 2013, 23:06
Hi, haven't been around for a bit, but I just noticed this thread while perusing around again. I'd like to add AviSynthLib (http://forum.doom9.org/showthread.php?t=164305) to the list.

This library supports many things, including but not limited to:

Reference arrays (referenceArray.avs)
Single sized element arrays (singleElementSizeArray.avs)
Native for loops (for.avs)
Blocks to contain data in a string format (block.avs)
Memory management (memory.avs)
Profiling tool (profile.avs)
Regression testing (testing.avs)
File and path manipulations and searches (file.avs)
Variable scope insertion (var.avs/varConst.avs)
Additional hex number support (hex.avs)
Additional string support (string.avs)
Including script files only once with ability to have multiple auto searched include directories (include.avsi)

Follow the link for additional information.

Thanks.


Adrian

pandy
14th March 2013, 12:30
New Avisynth plugin
slicer 0.3 by jmac698
Jul 16, 2012

A plugin to extract raw VBI data. YV12 only. Avisynth 2.58+
Planar only.

http://www.sendspace.com/file/b0798i


"Sorry, the file you requested is not available."

Thx jmac698 - perhaps slicer can be helpful to restore some VBS data.

StainlessS
18th March 2013, 12:29
New Version: RT_Stats, Compile-time/Runtime Functions v1.10 - 17 May 2013

Significant update so posting here


Zip contains dll, + source + avs scripts.
RT_YStats_TestTimer.avs # Speed comparison script (eg YPlaneMin/RT_YPlaneMin).
ImageSplicer.avs # Update, much faster
PlanetCrop.avs # Update, much faster
QueryBorderCrop.avs # Now a plugin
QueryLumaMinMax.avs # Now a plugin
YInRangeLocate.avs # Now a plugin, previously unreleased
DAR.avs # Now a Plugin
LocateFrames.avs
MatchFrames.avs # RT_Stats NOT required
s_ExLogo() # RT_Stats NOT required


http://forum.doom9.org/showthread.php?t=165479
Also see last two Posts #109 & #110
http://forum.doom9.org/showthread.php?p=1620245#post1620245

StainlessS
12th April 2013, 23:05
New Plugin, Zebra v1.02, Test clip generator
http://forum.doom9.org/showthread.php?t=167663

StainlessS
28th April 2013, 02:36
New version FrameSelect v1.02.

Added filter:
FrameReplace(clip,clip, int F1, ... , int Fn, string 'SCmd',string 'Cmd', bool 'Show', bool 'Ver')

Args identical to FrameSelect, with exception of the 2nd clip arg which is a clip of frames to replace into the 1st clip arg.
The other args must be identical to the script that originally extracted the frames.

FrameSelect here:
http://forum.doom9.org/showthread.php?t=164497

FrameReplace() prompted by this thread:
http://forum.doom9.org/showthread.php?p=1625975#post1625975

EDIT:
FrameReplace replaces frames extracted with FrameSelect(), back into the original clip.
Use the same command args that were used to extract the clip.

v1.03,
Added "Reject" arg to FrameSelect, toggles operation to select NON-SELECTED frames instead of selected ones.

EDIT: FrameSel (FrameSelect REVAMP, ie update/renamed plug) : See 3 posts below ie post #164.

StainlessS
16th May 2013, 16:18
SecurityCamExtractMotion.AVS, v1.0, Included as part of new version RT_Stats new v1.17.

Requires RT_Stats v1.17, FrameSelect v1.03, GScript, Grunt, Maybe DeGrainMedian if required.

Extracts movement from security camera footage:- here
http://forum.doom9.org/showthread.php?p=1628675#post1628675

Works really well.

One clip about 11:00 PM, cut down to about 10% of frames, where about 25 vehicles, 3 cyclists, 2 pedestrians and one fox caused
motion detection. Original clip about 18 mins. Dark, rain shimmering under street lamps.

2nd clip, about 02:00 AM cut down to about 3.5% of frames, where about 9 vehicles caused motion detection.
Original clip about 18 mins. Dark, little activity.

EDIT: Also FrameSelect update see previous post EDIT.

StainlessS
11th June 2013, 11:20
New plugin (well a week or so old),

FrameRepeat() v1.00, Plugin for Avisynth v2.5 & v2.6 by StainlessS.

FrameRepeat() is a simple plugin to select frames to repeat.

Video:- Planar, YUY2, RGB32, RGB24.
Audio:- Returns NO AUDIO.

FrameRepeat(Clip,int 'default',string 'Cmd', bool 'Show', bool 'Ver')

default, int, default=0. The default repeat count for frames not mentioned in command file.
Default =0, is, frames not mentioned in Cmd command file are excluded (repeated 0 times, ie not output at all).

Cmd, string, Default= "", Not set.
Command file, frame numbers supplied in a file. Use eg "Repeat.txt" for command file in your script directory.

#------------- # below contents of a text file eg "Repeat.txt".
1 1 # This is a comment. Output frame 1 once.
2 # Single frame number without a repeat count, outputs frame only once, equivalent to 2 1.
3,2 # Can also use ',' COMMA rather than SPACE as a number separator. Outputs frame 3 twice.
5,3 # Output frame 5, 3 times.
#-------------

Given a 6 frame clip (frames 0 -> 5)

FrameRepeat(clip,default=0,cmd="Repeat.txt") # would produce this sequence "1,2,3,3,5,5,5".

FrameRepeat(clip,default=1,cmd="Repeat.txt") # would produce this sequence "0,1,2,3,3,4,5,5,5".

FrameRepeat(clip,default=2,cmd="Repeat.txt") # would produce this sequence "0,0,1,2,3,3,4,4,5,5,5".

FrameRepeat(clip,default=3) # would produce this sequence "0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5".
# Note, above without a command file.

here: http://forum.doom9.org/showthread.php?p=1632538#post1632538

StainlessS
11th June 2013, 11:39
New Plugin, FrameSel/FrameRep v2.0 (FrameSelect REVAMP)


FrameSel() is a simple plugin to select individual frames from a clip.

Can select frames numbers by direct arguments to filter, or in a string, or in a command file.

Video:- Planar, YUY2, RGB32, RGB24.
Audio:- Returns NO AUDIO (Does not really make sense for individual frames).

FrameSel(Clip, int F1, ... , int Fn, string 'scmd',string 'cmd', bool 'show', bool 'ver',bool "reject",bool "ordered",bool "debug")

FrameRep(), replace back into clip (from whence they came).

here: http://forum.doom9.org/showthread.php?t=167971

StainlessS
11th June 2013, 11:46
New Plugin, ClipBlend/Clipblend16 v0.0


ClipBlend(clip,"delay"=0) # 8 bit Planar, YUY2, RGB
ClipBlend16(clip,"delay"=0) # 16 bit, Stack16 Planar, YUY2, RGB (see Dither Tools)

Added Delay arg to plugin.

Delay, default = 0, == ALL frames played so far blended.

1 = blend with previous frame.
10 = blend with 10 previous frames, etc.

Accumulator resets at frame 0 and if you jump about.


See here: http://forum.doom9.org/showthread.php?p=1632542#post1632542

StainlessS
24th July 2013, 12:59
RgbAmplifier v1.01 - Forensic Tool, new plugin

RGB24 and RGB32
========================================
An Avisynth plugin to amplify color shifts

Given a clip, this filter examines every pixel of every frame and independently multiplies the difference of its specific
R, G and B values from the average R, G and B values of that same pixel location spanning a defined radius of adjacent frames.
If the new values are above or below the allowed RGB values, they are capped at those limits.
The revised RGB values replace the original values, and the amplified clip is returned.
If the Multiplier is set to a value of zero, the plugin acts as a temporal frame averager.

This plugin will:
Convert seemingly imperceptible color changes into obvious color changes
Highlight seemingly imperceptible movements of high contrast pixels
Sharpen the details of moving objects
Cause distortion or ghosting/transparency effect to moving objects (an unavoidable side effect)

This plugin requires RGB24 or RGB32 color space, and is intended for forensic analysis of videos created from fixed position cameras.
Usage on non-stationary cameras may produce unpredictable or content destructive results. The faster the object and/or the greater
the radius, the greater the risk of negatively impacting the visual accuracy of the moving object.

here: http://forum.doom9.org/showthread.php?t=168293

StainlessS
9th August 2013, 08:09
MDec2 New Filter v1.0

MDec2, MultiDecimate like decimating filter.

Planar, YUY2, RGB

MDEC2(clip c,float "rate"=24.0,bool "show"=false,bool "create"=false,string "dir"="C:\",bool "chroma"=true,bool "ver"=false)

MDec2 is a 2 pass decimating filter, acting much like the Multidecimate filter by Donald Graft.
Requires MultiDecimate.Exe & ProcessMD.Exe from MultiDecimate package.

See Here:
http://forum.doom9.org/showthread.php?p=1639822#post1639822

StainlessS
11th September 2013, 00:06
RoboCrop() v1.00, new plugin.
http://forum.doom9.org/showthread.php?p=1632662#post1632662


Plugin's for both Avisynth v2.5 and v2.6.

RoboCrop is an automatic cropping solution to crop black borders from video clips, loosely based on (but using no code from)
Autocrop by Glenn Bussell.

For the most part, you can just call it with RoboCrop(clip) and not bother with any other arguements, it is intended to be pretty
much autonomous in its decisions. You might however want to alter eg WMod and HMod if your encoder has special requirements, and
perhaps Laced if your source is likely to be fully progressive.

Borders are detected by sampling at Samples frames, at scanlines (h/v) using AverageLuma (RGB is converted to Luma Y at either TV or
PC levels, See Matrix). This sampling is done on all 4 sides of the frame.
If a scanline Average luma is below or equal to Thresh, then is considered possible black border, above considered possible image,
if Baffle [default=4] adjacent scanlines above Thresh, then it IS image.

vcmohan
27th September 2013, 13:30
A new plugin Planetarium suitable for use by Planetariums for warping input fish eye image for use with spherical mirror to project on to dome.
Discussion thread (http://forum.doom9.org/showthread.php?t=168837)

ChiDragon
9th December 2013, 00:10
WeaveMan: remove arbitrary pulldown patterns manually (http://forum.doom9.org/showthread.php?t=167875)

For perfectionists to undo non-standard 24->25 fps, 25->29.97 fps, etc. telecine conversions, along with other weird telecine anomalies created by broadcasters speeding up film-sourced content.

A sample case is here (http://forum.doom9.org/showthread.php?p=1630931&highlight=weaveman#post1630931). If you have a sample you would like to try the filter with, post it in the thread above and I will try to explain how to use it.

wonkey_monkey
16th August 2014, 23:39
Deshaker3D (http://forum.doom9.org/showthread.php?p=1690146)

3D image stabilisation - effectively an Avisynth substitute for pass 2 of guth's VirtualDub filter Deshaker.

wonkey_monkey
20th December 2014, 21:08
Inspired by RgbAmplifier (http://forum.doom9.org/showthread.php?t=168293), which I couldn't get to work, I've written a plugin called amp (http://horman.net/avisynth/amp.zip).

It performs temporal smoothing, then (optionally) enhances the difference between the windowed average and the current frame. In theory, this should let you do things like make pulses visible in videos of human faces or wrists, but I suspect you need a very low noise video to pick that up.

Also worth noting is that it will easily enhance codec artefacts, so for enhancing very small changes, it probably works best with lossless or intra-frame codecs like MJPEG or DV.

It works in YV12, YUY2, RGB24 and RGB32 colourspaces, and because of this its parameters are a bit changeable:


amp(clip c, int window, double y, double u, double v, double a)


window is the number of frames either side of the current one used for the temporal smoothing, i.e. a value of 5 will smooth over 5*2+1=11 frames.

For YV12/YUY2 colour spaces, the parameters y u v specify the level of enhancement for each channel. a is ignored.

For RGB24/RGB32 colour spaces, the parameters y u v [a] specify the level of enhancement for the channels r g b [a].

A value of 0 performs no enhancement (returns the unaltered channel of the source frame).
If you only specify y, the same value will be used for the other channels.
By not specifying any of these four parameters (or giving them the value of -1) the filter acts purely as a temporal smoother.

David

StainlessS
17th June 2015, 20:26
RgbAdapt v0.3 new(ish) plugin. http://forum.doom9.org/showthread.php?t=170642


For Avisynth v2.58+

RGB24/RGB32.
Audio as original.

RGBAdapt(clip c, \
\ Float "R_Bias"=0.0,Float "R_Gain"=1.0,Float "R_Cont"=1.0,Float "R_RPow"=1.0,Float "R_Spow"=1.0,Float "R_SPMid"=0.5,Bool "R_Pord"=false,
\ Float "G_Bias"=0.0,Float "G_Gain"=1.0,Float "G_Cont"=1.0,Float "G_RPow"=1.0,Float "G_Spow"=1.0,Float "G_SPMid"=0.5,Bool "G_Pord"=false,
\ Float "B_Bias"=0.0,Float "B_Gain"=1.0,Float "B_Cont"=1.0,Float "B_RPow"=1.0,Float "B_Spow"=1.0,Float "B_SPMid"=0.5,Bool "B_Pord"=false,
\ Int "R_IMin"=0,Int "R_OMin"=0,Int "R_IMax"=255,Int "R_OMax"=255,
\ Int "G_IMin"=0,Int "G_OMin"=0,Int "G_IMax"=255,Int "G_OMax"=255,
\ Int "B_IMin"=0,Int "B_OMin"=0,Int "B_IMax"=255,Int "B_OMax"=255
\ )

Bias -512.0 -> 512.0. Bias = Brightness.
Gain -8.0 -> 8.0 Gain = Zero relative contrast.
Cont -8.0 -> 8.0 Cont = Centre relative Contrast.
RPow 0.1 -> 4.0 RPow = Gamma, r shaped power curve.
SPow 0.1 -> 4.0 SPow = S shaped power curve.
SPMid 0.01 -> 0.99 SPMid = Controls Inflection point for S shaped power curve, 0.5 = mid point ie 0.5*255.0
Pord True/False Pord=Rpow processed first (False) or SPow first (True). The power functions are non commutative.

Assuming all settings apart from RPow, SPow and SPMid at defaults:-
Pord Default (false) RPow1st, when modifying RPow or SPow, the SPow power curve inflection point will
remain fixed at Y = SPMid * 255.0, Rpow will slide it left or right.
Pord SPow1st, when modifying RPow or SPow, the SPow power curve inflection point will remain fixed
at X = SPMid * 255.0, RPow will slide it up or down.

New args v0.3
IMin 0 -> 255 : IMin <= (IMax+1)
OMin 0 -> 255
IMax 0 -> 255 : (IMin-1) <= IMax
OMax 0 -> 255

Any INPUT value less than IMin will be mapped to OMin (both default to 0), and values greater than IMax will be mapped to
OMax (both default to 255). With default settings the Min/Max options have no effect.
These options allow for weird shaped LUT's to eg create masks. Example, Leaving all other settings at default and
for some channel set IMax to eg 127 and OMax to 64 would map all input above 127 to 64 while leaving everything else untouched.
If you additionally set eg IMin=128 and OMin=180, then 0-127 would map to 180 and 128->255 map to 64.
The IMin <= (IMax+1) requirement allows you to map the entire 0->255 range to any two output values.



RgbAdapt_Graffer.exe demos the plugin and all arguments. (Will require VB6 runtimes, most will already have these.)


And here a pic of the Graffer:-
https://s20.postimg.cc/wxyq8spkt/Fishv3_zpsfjmoyerr.jpg (https://postimg.cc/image/yd0axiqnt/)

The Ring on the Fish's cheek shows the pixel that is being tracked and the Before and After colors shown in status bar.
Monitor changes for single pixel as you modify the sliders.
The tick box on left show that SPow is locked so R + G + B settings are affected simultaneously.

fvisagie
1st July 2015, 16:18
Update to Histograms in RGB & CMY (http://avisynth.nl/index.php/Histograms_in_RGB_%26_CMY): here (http://forum.doom9.org/showpost.php?p=1728405&postcount=10).

fvisagie
3rd July 2015, 17:38
Histograms in RGB & CMY (http://avisynth.nl/index.php/Histograms_in_RGB_%26_CMY) updated again here (http://forum.doom9.org/showthread.php?p=1728778#post1728778).

wonkey_monkey
12th September 2015, 22:25
rgba_rpn/y8_rpn (http://forum.doom9.org/showthread.php?p=1738374)

RPN pixel manipulator. Does just about anything*

*okay, not anything. But a lot.

StainlessS
27th December 2015, 03:44
VD_EdKey. New Utility for Avisynth, v1.00


VD_EdKey v1.00.

VD_EdKey, is a compiled AutoIt script utility, intended to assist in creating Avisynth frames command files.
Create command file in VirtualDub with VD_EdKey, and use command file in Avisynth script functions.

VD_EdKey is used together with VirtualDub and NotePad. You must run the app, with BOTH VirtualDub and the
NotePad Editor VISIBLE, you can scroll through a video clip, and press eg CTRL/INSERT to insert the current frame number
into the NotePad Editor. You press the keys with VDub as the active window (not NotePad).
VD_EdKey requires VirtualDub, VirtualDubMod will not be recognised (It does not provide marked ranges in Status Bar).
After creating Command file in NotePad, Save as eg Command.txt and provide it as eg SelectRanges(Cmd="Command.txt") or
RejectRanges((Cmd="Command.txt") {Select/RejectRanges supplied with both Framesel and Prune Avisynth plugins).

*** Current frame is shown in VirtualDub in the middle of the status bar. ***
*** Ranges are marked in VirtualDub via HOME and END keys, shown at Left of status bar (when marked). ***

It is important to NOT do any VirtualDub clip editing, if you eg delete a frame in VirtualDub, then all frames after that frame will
be off by 1, and so all VD_EdKey edited ranges/frames inserted later into NotePad file will be also off by 1.
The VDub loaded clip can be either an AVI or AVS clip, it makes no difference.

All VD_EdKey Keyboard commands:-
# Inserted into NotePad Text file
CTRL/INSERT Insert current frame eg '42'.
CTRL/SHIFT/INSERT Insert current range eg '42,52'. (single frame range is converted to single frame)
# Special use (where script frames file processor gives special meaning to -ve frame or range):
CTRL/DELETE Insert -ve current frame '-42'.
CTRL/SHIFT/DELETE Insert -ve current range '-42,52'. (single frame range is converted to single frame)
# Terminate:
CTRL+SHIFT+ALT+PAUSE is TERMINATE Program (or close via System Tray icon). PAUSE is also known as BREAK, usually next to Scroll Lock.

NOTE: A range shown in VDub status bar as eg "Selecting Frames 100-102(2 frames)" represents frames 100 and 101, frame 102 is exclusive and
does not count. By default, VD_EdKey uses Inclusive END frame ranges (same as Avisynth where end frame DOES count).
You can change the default behaviour to behave the same as VDub by Running VD_EdKey.Exe at least once and changing the auto created
VD_EdKey.ini file contents from "RangeEndIsExclusive=0" to "RangeEndIsExclusive=1". When using VDub "RangeEndIsExclusive=1" mode,
we subtract 1 from the End Frame to convert to Avisynth End Frame Inclusive specification when writing range to NotePad command.
When sending a command using VDub exclusive mode with a status bar range of "100-100(frames=0)", it will beep and show a "No Frames"
type error message for a few seconds, in Avisynth Inclusive mode it will send a 1 frame range command to the NotePad window.

It is easy to see what is happening as the NotePad window will be visible and after each insertion into NotePad, an ENTER key
will also be sent to move the cursor down one line, each command is on its own line. If you make a mistake, it is easy to
just switch to NotePad window and delete the erroneous line.

That is it, thats all it does. Is easier than switching windows, insert/delete frame number, and then back to original window again.

AutoiIt compiled executable with source provided, just click Menu Tools/build to create executable (In Scite4AutoIt3 editor).
Requires AutoIt3 and Scite4AutoIt3 editor to re-build executable.

ssS



Here:- http://forum.doom9.org/showthread.php?t=173010

StainlessS
6th January 2016, 06:25
TWriteAVI v2.02, Plugin Update of existing plugin (never appeared in new plugins thread before).

TWriteAVI v2.0, can write lossless whatever can be played to AVI (or WAV), and using the ForceProcessAVI/WAV functions, can write the
files [or logs] without playing them.

Two Pass:

WhateverSource(...)
A_Two_Pass_Function(Pass=1) # Create some kind of deshaker log or whatever.
ForceProcessAVI() # Force Pass 1, creating log (A function From TWriteAVI plug)
A_Two_Pass_Function(Pass=2) # Use created log
return Last

The ForceProcessAVI 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.
ForceProcessAVI/WAV are runtime functions not filters and so only return on completion.

Simultaneous play and save AVI

WhateverSource(...)
FN="Output.AVI"
FOURCC="ULY0" # Ut_Video
TWriteAVI(FN,Overwrite=true,fourcc=FOURCC).
return Last


Do some kind of processing and save AVI, Then play Lossless file.

WhateverSource(...)
FN="Output.AVI"
FOURCC="ULY0" # Ut_Video
Sharpen(0.3) # Whatever
TWriteAVI(FN,Overwrite=true,fourcc=FOURCC). # Write Sharp AVI whilst clip is played
ForceProcessAVI() # Force Write above TWriteAVI file without playing clip.
AVISource(FN) # Load Saved AVI
return Last # Play Sharpened AVI lossless clip



Function TWriteAvi(clip c,String filename,bool "overwrite"=false,bool "showall"=false,string "fourcc"="",int "dwChannelMask"=-1)
ForceProcessAVI(clip c)
Force Process clip c, ie read from first to last frame, for TWriteAVI writes the AVI file (Video + Audio) without having to play clip.
Function TWriteWAV(clip c,String filename,bool "overwrite"=false,int "dwChannelMask"=-1)
ForceProcessWAV(clip c)
Force Process clip c audio only, ie read from first to last audio sample, for TWriteWAV writes the WAV file (Audio) without having to play clip.


Here:- http://forum.doom9.org/showthread.php?t=172837

StainlessS
3rd February 2016, 00:13
SawBones/FrameSurgeon v1.00, a VirtualDub/Avisynth script, utility combo to edit bad frames.
Create Command file in VirtualDub with Sawbones, and use Command file in Avisynth script function FrameSurgeon().


SawBones v1.00

SawBones, is a compiled AutoIt script utility, intended to assist in creating Avisynth command file for FrameSurgeon.avs script.

SawBones is used together with VirtualDub and NotePad. You must run the app, with BOTH VirtualDub and the
NotePad Editor VISIBLE, you can scroll through a video clip, and press eg CTRL/DELETE to insert a FrameSurgeon DELETE (DEL n) command
for the current frame into the NotePad Editor. You press the keys with VDub as the active window (not NotePad).
SawBones requires VirtualDub, VirtualDubMod will not be recognised (It does not provide marked ranges in Status Bar).
After creating Command file in NotePad, Save as eg Command.txt and provide it as eg FrameSurgeon(Cmd="Command.txt").

*** Current frame is shown in VirtualDub in the middle of the status bar. ***
*** Ranges are marked in VirtualDub via HOME and END keys, shown at Left of status bar (when marked). ***
*** FXd clips (where d is Digit 1-9) are user provided to FrameSurgeon.avs function and default to source clip if not user supplied. ***
*** Interpolation commands in FrameSurgeon are for YV12 and YUY2 only, others any colorspace. ***

It is important to NOT do any VirtualDub clip editing, if you eg delete a frame in VirtualDub, then all frames after that frame will
be off by 1, and so all SawBones edited ranges/frames inserted later into NotePad file will be also off by 1.
The VDub loaded clip can be either an AVI or AVS clip, it makes no difference, you could eg have a stacked multi-window frame
open in VDub so as to choose from your FXd clips.

All SawBones Keyboard commands that are inserted into NotePad Text file:-

CTRL/F1 CopyFromPrevious frame to current frame (ie replace current frame n with frame n - 1. (CP n)
CTRL/F2 CopyFromNext frame to current frame (ie replace current frame n with frame n + 1. (CN n)

CTRL/1 Replace current frame with same frame from FX1 clip. (FX1 n)
CTRL/2 Replace current frame with same frame from FX2 clip. (FX2 n)
CTRL/3 Replace current frame with same frame from FX3 clip. (FX3 n)
CTRL/4 Replace current frame with same frame from FX4 clip. (FX4 n)
CTRL/5 Replace current frame with same frame from FX5 clip. (FX5 n)
CTRL/6 Replace current frame with same frame from FX6 clip. (FX6 n)
CTRL/7 Replace current frame with same frame from FX7 clip. (FX7 n)
CTRL/8 Replace current frame with same frame from FX8 clip. (FX8 n)
CTRL/9 Replace current frame with same frame from FX9 clip. (FX9 n)

CTRL/SHIFT/1 Replace range with same range from FX1 clip. (FX1 s,e)
CTRL/SHIFT/2 Replace range with same range from FX2 clip. (FX2 s,e)
CTRL/SHIFT/3 Replace range with same range from FX3 clip. (FX3 s,e)
CTRL/SHIFT/4 Replace range with same range from FX4 clip. (FX4 s,e)
CTRL/SHIFT/5 Replace range with same range from FX5 clip. (FX5 s,e)
CTRL/SHIFT/6 Replace range with same range from FX6 clip. (FX6 s,e)
CTRL/SHIFT/7 Replace range with same range from FX7 clip. (FX7 s,e)
CTRL/SHIFT/8 Replace range with same range from FX8 clip. (FX8 s,e)
CTRL/SHIFT/9 Replace range with same range from FX9 clip. (FX9 s,e)

CTRL/SHIFT/ALT/1 Interpolate current frame n using n-1 and n+1 as source frames. (I1 n)
CTRL/SHIFT/ALT/2 Interpolate 2 frames starting at current frame n, using n-1 and n+2 as source frames. (I2 n)
CTRL/SHIFT/ALT/3 Interpolate 3 frames starting at current frame n, using n-1 and n+3 as source frames. (I3 n)
CTRL/SHIFT/ALT/4 Interpolate 4 frames starting at current frame n, using n-1 and n+4 as source frames. (I4 n)
CTRL/SHIFT/ALT/5 Interpolate 5 frames starting at current frame n, using n-1 and n+5 as source frames. (I5 n)
CTRL/SHIFT/ALT/6 Interpolate 6 frames starting at current frame n, using n-1 and n+6 as source frames. (I6 n)
CTRL/SHIFT/ALT/7 Interpolate 7 frames starting at current frame n, using n-1 and n+7 as source frames. (I7 n)
CTRL/SHIFT/ALT/8 Interpolate 8 frames starting at current frame n, using n-1 and n+8 as source frames. (I8 n)
CTRL/SHIFT/ALT/9 Interpolate 9 frames starting at current frame n, using n-1 and n+9 as source frames. (I9 n)

CTRL/DELETE Delete current frame. (DEL n)
CTRL/SHIFT/DELETE Delete range (DEL s,e)


NOTE, By default, SawBones uses Inclusive END frame ranges (same as Avisynth) whereas VDub uses Exclusive END frame ranges,
ie range 100,102 in Avisynth is 3 frames (100 to 102), in VDub it is only 2 frames (100 to 101), you can change default behaviour
to behave the same as VDub by Running SawBones.Exe at least once and changing the auto created SawBones.ini file contents
to "RangeEndIsExclusive=1". If using default setting "RangeEndIsExclusive=0", then if a marked Range is shown in status bar as
"100-102" then range used will be 3 frames, if "RangeEndIsExclusive=1" then range used will be 2 frames.
It is easy to see what is happening as the NotePad window will be visible and after each insertion into NotePad, an ENTER key
will also be sent to move the cursor down one line, each command is on its own line. If you make a mistake, it is easy to
just switch to NotePad window and delete the erroneous line.

Where same frames are flagged for replacment mulitple times, later one will take precidence.
All frame/range deletes will be done AFTER replacements, multiple deletes on same frame will only result on single frame deletion.
Already Interpolated frames/ranges CANNOT be replaced and will produce an error (In avs script), but they can be deleted.

FrameSurgeon.avs requires MvTools, GScript, RT_Stats, FrameSel, ClipClop and Prune Plugins.

AutoiIt compiled executable with source provided, just click Menu Tools/build to create executable (In Scite4AutoIt3 editor).
Requires AutoIt3 and Scite4AutoIt3 editor to re-build executable.

ssS



Function FrameSurgeon(clip c, String "Scmd",String "Cmd",bool "Show",Int "ShowMode",int "dv",
\ clip "FX1",clip "FX2",clip "FX3",clip "FX4",clip "FX5",clip "FX6",clip "FX7",clip "FX8",clip "FX9",
\ int "pel",int "sharp",int "rfilter",Float "ml") {

FrameSurgeon() by StainlessS:-
Requires MvTools[(c) Manao], GScript[(c) Gavino], RT_Stats, FrameSel, ClipClop and Prune Plugins [(c) StainlessS].
Any colorspace, Interpolation commands in FrameSurgeon for YV12 and YUY2 only.

Replace/Delete damaged frames using commands in a either command string or file (one command per line in both file and string).
If both string (SCmd) and file (Cmd) commands supplied, then File Processed first and then String later (relevant as later
replacements take precedence where a frame replaced more than once). Any deletes take place AFTER ALL replacements have been done.
Interpolation Commands are available for YV12 and YUY2 only due to MVTools usage (fails if 'Id' commands used in other colrspaces).

Args-:
c, Source clip.
SCmd, Default "", Commands supplied as string.
Cmd, Default "", Commands supplied as FileName. (Either SCmd or Cmd MUST be supplied).
Show: Default False, Show Info on Frame.
ShowMode: Default 0, When Show==true, then 0=Show ClipClop metrics(post replacement), else if 1 Show Prune Metrics(post Delete).
Dv, Default 0, ClipClop and Prune DebugView level (0 - 4, Need DebugView utility)
FX1-FX9, Default c, Defaults to source clip, and if Show==True then Subtitled as eg "FX1" in frame center.
User Replacement clips. eg could use FX1 clip as Light Denoise, FX2 as Medium Denoise or whatever.
Interpolation args:- MvTools args. Used for 'Id' commands (where d = digit 1 to 9).
pel Default 2, Default as for MSuper(), ie 2, range=1 or 2 or 4
sharp Default 2, Default as for MSuper(), ie 2, range=0 -> 2
rfilter Default 2, Default as for MSuper(), ie 2, range=0 -> 4
ml Default 100.0, Default as for MFlowInter(), ie 100.0, range=greater than 0.0.

Supported commands (where n=frame number, s= range start frame, e=range end frame, d is digit '1' to '9'
NOTE, e range End Frame behaves as in trim eg -20 means 20 frames starting at frame s, e=0 means to last frame):-
"CP n" CopyFromPrevious ie replace frame n with frame n - 1.
"CN n" CopyFromNext ie replace frame n with frame n + 1.
"I1 n" Interpolate 1 frame n (using frames n-1 and n+1 as Interpolation source frames, (Id commands YV12, YUY2 only).
"I2 n" Interpolate 2 frames starting at frame n, (using frames n-1 and n+2).
"I3 n" Interpolate 3 frames starting at frame n, (using frames n-1 and n+3).
"I4 n" Interpolate 4 frames starting at frame n, (using frames n-1 and n+4).
"I5 n" Interpolate 5 frames starting at frame n, (using frames n-1 and n+5).
"I6 n" Interpolate 6 frames starting at frame n, (using frames n-1 and n+6).
"I7 n" Interpolate 7 frames starting at frame n, (using frames n-1 and n+7).
"I8 n" Interpolate 8 frames starting at frame n, (using frames n-1 and n+8).
"I9 n" Interpolate 9 frames starting at frame n, (using frames n-1 and n+9).
"FXd n" Replace frame n with same frame from FXd clip, eg "FX3 100" replace frame 100 with same frame from FX3 clip.
"FXd s,e" Replace range s to e with same range from FXd clip.
#
"-n" Delete frame n
"DEL n" Delete frame n
"-s,e" Delete frames s to e
"DEL s,e" Delete frames s to e

Here:- http://forum.doom9.org/showthread.php?p=1755859#post1755859

martin53
15th February 2016, 21:13
xNLMeans doom9 forum thread (http://forum.doom9.org/showthread.php?t=172966)
CPU-based 'Non Local Means' denoiser implementation with some extensions for improved usability, please see manual for details

Chikuzen
5th March 2016, 05:54
I wrote a new? plugin.

yadifmod2 (https://github.com/chikuzen/yadifmod2) = yadif + yadifmod for avs2.6/avs+

Binary download (https://github.com/chikuzen/yadifmod2/releases)

If you find a bug, please report here (https://github.com/chikuzen/yadifmod2/issues).

ChiDragon
8th March 2016, 00:39
Thanks. Seems to work fine in 2.6 after installing the 2015 redistributable x86.

Sharc
8th March 2016, 13:56
yadifmod2 works here as well. Thank you.

StainlessS
11th March 2016, 18:03
MediaInfo Client library MIFO_Lib v1.01
MIFO_Library.Avsi v1.01, MediaInfo library routines.
Req GScript, RT_Stats, CallCmd. Using MediaInfo Cli v0.7.83

Library of script functions to access MediaInfo Command Line version, to provide media information on named media file.
Can do Template String and Template file searches (best for Info Display), and extract individual parameter items
(for making decisions in real time, eg source filter selection based on whether AVI is lossless [AviSource] or Lossy [FFMPegSource or L-Smash to Index the file]).
Also can extract full/Raw information or only specific sections.

here:- http://forum.doom9.org/showthread.php?t=173268

Fizick
18th March 2016, 05:04
I wrote a new? plugin.

yadifmod2 (https://github.com/chikuzen/yadifmod2) = yadif + yadifmod for avs2.6/avs+

Binary download (https://github.com/chikuzen/yadifmod2/releases)

If you find a bug, please report here (https://github.com/chikuzen/yadifmod2/issues).
Sorry, I do not have github account. I like results for DV with opt=0. :)
Optimized modes work fine, but results are wrong - strange pixels.

StainlessS
27th March 2016, 03:42
I've just found a nice little utility 'Virtual Magnifying Glass', can be configured to show R,G,B values and coords under mouse.

Here:- http://magnifier.sourceforge.net/

StainlessS
17th April 2016, 23:52
MorphDupes_MI script.

Finds runs of duplicates and replaces them with either Interpolated or blended frames.

Planar, YUY2. Audio, no change. Multi-Instance capable.

http://forum.doom9.org/showthread.php?p=1764865#post1764865

StainlessS
7th May 2016, 23:31
Recent versions of ffmpeg for some reason seem to be heavy on CPU usage, so I'de like to set it permanently to Below Normal or Low Priority.


Prio v2.0.0.2960 (Process Priority Saver) (c) 2005-2011 OK Software.

Tool to Permanently Set Process Priority in Windows XP, and Win 7 [EDIT: Vista too if you care about that], (not Win 8 or above).

Prio is a very easy solution to this problem of Windows Task Manager not saving priorities because it’s actually an
add on component for Task Manager itself giving it the ability to do just that. This means you don’t have another
full blown program running in the background, only a Prio service exe consuming a tiny 384KB.

See Prio here:- http://www.prnwatch.com/prio/
And results of Virustotal scan on executable (0/56) here:- https://www.virustotal.com/en/file/593f35d595aa891f3e2a705da37098c1fd00653740850a5103a57b6e7981927e/analysis/1462641694/
Free for personal use.
EDIT: Prio saves its ini file in "%APPDATA%\prio.ini", on my XP system,
"Documents and Settings\UserName\Application data\prio.ini" but is also available
via the new Task Manager Menu "Prio\User Settings" option so you can inspect or manually edit (comes up in NotePad,
just clear all text or delete the ini to reset to all defaults).

For those with Win8 and above, perhaps something here will be of use
5 Tools to Permanently Set Process Priority in Windows:- https://www.raymond.cc/blog/permanently-set-process-priority-in-windows-task-manager-with-prio/

EDIT:
for some reason seem to be heavy on CPU usage

Windows pretends to be pre-emptive, ie says that it does not require application cooperation for task switching to occur,
this just aint really true. It seems that one of the ways in which Windows performs its trickery is to do task switching
upon calls to the OS (a Windows run of the mill app will usually spend about 90% of run time in OS).
In the past, an app had to call a specific function every now and then so that task switching could occur, they have
replaced this old requirement by strategically scattering task switching checking on OS entry and probably several
additional opportune times whilst inside the OS. Upshot of this is, that if an app does not call the OS over long periods
of time then task switching is so very bad (everything else in system grinds to a nearly halt). Try writing a Visual Basic
program to do nothing but loop indefinitely without calling anything else, it will be a bit of a struggle to try and get some
kind of control so that the offending task can be killed. (I have never tried that on a multi-processor system, perhaps it
does not perform so badly).
My old Sinclair QL computer from 1984/85-ish, had no problems whatever in doing proper task scheduling [EDIT: 32KB OS incl a Pascal like SuperBasic interpreter and rudimentary windowing system], and you could write a machine code program that did nothing after startup except loop around forever, and at highest priority [127 of 127], and it was no problem at all to switch to command line (Basic interpreter) and suspend or kill the offending task, why can windows not do this more than 17 years later ? (XP, or 30 years Win10, I expect W10 is exactly the same).
EDIT: Above in red no longer true, was true for Windows NT (and I think Windows 2000) but no longer so.

Anyway, I suspect that ffmpeg is spending less time in OS (or greater periods between calls) than it used to, hence the minor problems on
my dual core Core Duo XP32.

EDIT: Have installed and set ffmpeg to Low Priority, working well. When I'm not busy, ffmpeg ambles along at close to 100% CPU,
and can eg copy files across network without interference from ffmpeg hogging the cpu (and little difference to ffmpeg speed).
Would normally if eg copying file across network taking 2 mins for copy, and starting ffmpeg, suddenly copy time shoots up to 45 mins,
this no longer happens at all, and CPU still up around 100% and little difference to ffmpeg speed and none to copy speed.
I am a happy bunny. http://www.cosgan.de/images/smilie/tiere/c020.gif

StainlessS
29th June 2016, 13:30
ScriptEd,
Avisynth Script Editor Plugin, for VirtualDub Deep Color modification (A recent VirtualDub Modification by Shekh)
EDIT: 'VirtualDub Deep Color', is a pseudonym for VirtualDub FilterMod.
EDIT: VirtualDub Deep Color AKA VirtualDub FilterMod, now known as VirtualDub2. (A rose by any other name would still smell :) )

VirtualDub Deep Color modification itself:- http://forum.doom9.org/showthread.php?t=172021
Open high bit depth formats like tiff, sgi, ffv1, ... whatever supported by ffmpeg.
Apply "rgb levels" filter - this way can inspect what is the quality of image (whether gradients are actually high precision).
Crop, flip, convert format also work.
Export at full precision as tiff sequence.
Basically, everything that current version of VirtualDub does, Plus More.


ScriptEd, A simple Avisynth/VapourSynth script editor plugin for VDDC:- https://sourceforge.net/p/vdfiltermod/wiki/scripted/

A simple script editor with functionality very similar to that implemented in VirtualDubMod.

Currently implemented for ALL:-
CTRL/G Goto (Script Line or Frame Number)
CTRL/Z Undo
CTRL/Y Redo
CTRL/F Find
F3 Find Next
SHIFT/F3 Find Prev
CTRL/N New file
CTRL/O Open File
CTRL/S Save File
F5 Save and reopen at current frame.
F7 Save and open.
Menu Only Revert
CTRL/SHIFT/O Insert FileName
CTRL/SPACE Start code completion


Currently implemented for Avisynth:-
Avisynth Syntax hi-liting and external functions hi-liting and completion
CTRL/P Insert current frame number
CTRL/R Insert Range
CTRL/T Insert Trim with range
CTRL/I Import Frameset as Trims (replicate VDub range deletions into script).
CTRL/SHIFT/ALT/C Comment selected.
CTRL/SHIFT/ALT/U UnComment selected.

Currently implemented for VapourSynth:-
VapourSynth Syntax hi-liting and external functions hi-liting and completion
CTRL/P Insert current frame number



ScriptEd is implemented as a plugin for VirtualDub Deep Color, and as such could be fairly easily extended for further functionality
without having to re-compile the entire VDub Deep Color App
VapourSynth frame/range insertions should be quite simple to add, mostly copy/paste if someone knows VS/Python syntax for doing so,
ie how is range specified, with comma or hyphen?, how do you specify a Trim(), or multiple Trim()'s with AlignedSplice in between them,
basically that is pretty much all that is required together with some copy/paste.

All Hail Shekh http://www.cosgan.de/images/smilie/musik/k015.gif

EDIT: ScriptEd Plugin will appear in VDDC Menu/Tools/

StainlessS
16th July 2016, 11:24
GamMac v1.00 , Gamma Machine.


GamMac(), An extraordinary Idea by VideoFred. Coded by StainlessS.
http://forum.doom9.org/showthread.php?t=173683

RGB Only. Useful to correct color cast on old 8mm films.
Alters channel pixel average to match LockChan using Gamma correction. (By default alters Red and Blue channels to match Green).
Additional tweaking via RedMul, GrnMul and BluMul.

GamMac(clip c,int "LockChan"=1,Float "LockVal"=128,
\ Float "RedMul"=1.0,Float "GrnMul"=1.0, Float "BluMul"=1.0,
\ Float "MinLim"=32.0,Float "MaxLim"=255.0-32.0,float "GamLo"=0.25,Float "GamHi"=4.0,Bool "Show"=false)


LockChan Default 1. -1 -> 2. -1=Lock to LockVal. 0=Red. 1=Green. 2=Blue. Chan for lock to Ave.
LockVal, default 128.0. Ignored if LockChan != -1. 0.0 < LockVal < 255.0
RedMul, default 1.0. 0.0 < RedMul <= 10.0. Red channel adjustment.
GrnMul, default 1.0. 0.0 < GrnMul <= 10.0. Green channel adjustment.
BluMul, default 1.0. 0.0 < BluMul <= 10.0. Blue channel adjustment.
MinLim, default 32.0. 0.0 < MinLim < 255.0 If any channel average smaller than this, then no effect on channel.
MaxLim, default 255.0-32.0. MinLim < MaxLim < 255.0 If any channel average greater than this, then no effect on channel.
GamLo, default 0.25. 0.1 <= GamLo <= 10.0. Upper value for guess gamma (starting guess range and limit)
GamHi, default 4.0. GamLo < GamHi <= 10.0. Lower value for guess gamma (starting guess range and limit)
Show, default false. True, show info.


Home Thread here:- http://forum.doom9.org/showthread.php?t=173695

johnmeyer
16th July 2016, 20:31
Many thanks. Can't wait to try this out. -John

Reel.Deel
24th July 2016, 16:40
Inspired by RgbAmplifier (http://forum.doom9.org/showthread.php?t=168293), which I couldn't get to work, I've written a plugin called amp (http://horman.net/avisynth/amp.zip).


Hi David,

Something I just noticed, the amp link above is correct but on your homepage is wrong, along with the discussion link.

MWilson
31st July 2016, 12:25
ChromaJig v1.6a - Automatic Colorization

http://forum.doom9.org/showthread.php?p=1775733#post1775733

MWilson
5th August 2016, 04:01
Found a couple plugs on github, KelvinColorShift and HealDeadPixels: https://github.com/ladipro/avisynth_filters/releases

StainlessS
6th August 2016, 22:09
qCombed() v1.00, new plugin, mod of IsCombed (c)Donald Graft.


qCombed(), by StainlessS @ Doom9.org. http://forum.doom9.org/showthread.php?p=1776495#post1776495

Runtime function to establish combing status of video frames, or to write a frames file of combed frames [Intent for ClipClop() use].

ColorSpace, Planar and YUY2. (v2.5 dll but as only examines the luma channel can also function with v2.6 colorspaces).

qCombed() is a mod of IsCombed from DeComb plugin for Avisynth, (c) Donald Graft. [can be found here:- http://rationalqm.us/mine.html].


qCombed has two modes of operation, can use in conditional filter eg Scriptclip() or ConditionFilter() [just like IsCombed()],
and also has complete clip scan and frames file writing capability builtin.

qCombed(clip c,int "Threshold"=20,String "FileName"="",int "ClipIndex"=1,Bool "Range"=False,String "RngSep"="",int "n"=current_frame)

Args:-

Threshold, default 20. Threshold used to establish combed-ness, 0 <= Th <= 255. [same as for IsCombed(Threshold)].

FileName, default "". When filename is default "", qCombed will behave the same as IsCombed() and all other args with exception
of Threshold (and additional 'n') are totally ignored.
When in this mode it uses current_frame as set at each frame by runtime script functions eg Scriptclip()
and WriteFileIf() or ConditionalFilter(). In addition, you can use it within at compile time eg in a GScript
script and interogate frames by setting the n arg to the desired frame number. In this mode the function returns
a Bool status, True = Combed.
If you set FileName to eg "ClipClop_Cmd.txt", it will switch modes from default IsCombed() style
function, to a function which scans entire clip and writes a frames command file. In this mode, all other
args (with exception of 'n', which is ignored) are also valid. Will take time to scan entire clip but
output file will exist on return, and qCombed() will return the number of combed frames in clip as Int.

ClipIndex, default 1. Ignored unless FileName != "", ie in File Writing mode. By Default writes a ClipClop() style frame command file
where commands may look like:
1 100 # Clip index 1, frame 100. (where arg Range=False, or single frame range).
1 200,210 # Clip index 1, frames 200 -> 210 (where arg Range=true).
The clip index (1 as above) is a requirement in ClipClop which supports up to 256 clips, and so needs a clip index.
A ClipIndex of -1, will omit the clip index and just write the frames or ranges.
Valid range -1 -> 255 although 1 is probably the only sensible setting for ClipClop (clip 0 being the unaltered source clip).

Range, Default false. If False (default), writes all frame numbers on individual lines, else if true, then concatenates adjacent
frames into ranges (single frame range will write only a single frame number).

RngSep, Default "". RangSep of "" will be converted to ',' COMMA and used only if Range is True, as shown above in "1 200,210".
Can set RngSep to any character Chr(32) SPACE to Chr(126), only the first character in string is used.

n, n defaults to current_frame when FileName is default "", ie Conditional filter mode, but can be given explicitly as
arg in eg GScript script. When FileName != "", n has no function.



See thread here:- http://forum.doom9.org/showthread.php?p=1776495#post1776495

raffriff42
26th September 2016, 13:23
SmoothLimiter, a slightly improved Limiter (http://avisynth.nl/index.php/Limiter).
* Add a transition zone or "knee" to avoid "flat-topping" gradients.
* Independent limits in black,white,yellow,blue,green & red.

https://www.dropbox.com/s/dlxze946a69hrs9/SmoothLimiter-demo-input.png?raw=1

https://www.dropbox.com/s/yx5qkx9jcqkc4kb/SmoothLimiter-demo-k0.png?raw=1

https://www.dropbox.com/s/7umqvbpehntck3o/SmoothLimiter-demo-k3.png?raw=1

However,
* Don't try to use it as "color correction", or focus on a particular color.
* For example, don't try to kill reds while leaving all other colors untouched - it won't work.

Version 2, supports high bit depth; requires AVS+## requires MaskTools
## requires http://avisynth.nl/images/Utils-r41.avsi
Import("Utils-r41.avsi")

## converted to AVS+ 18-Apr-2017
## refined 3-Oct-2017
##################################
### range limiter with soft 'knee' transition, (AVS+)
### supports independent yellow, blue, green & red limits
### (not for secondary color correction)
##
## @ ymin - black limit; range 0 (no change) to max (extreme) (<=128 depending on <k>)
## @ ymax - white limit; min (extreme) (>=128 depending on <k>) to 255 (no change)
## @ y - 'yellow' (-u) max; range 0.0 (extreme) to 1.0 (default, no change)
## @ b - 'blue' (+u) max
## @ g - 'green' (-v) max
## @ r - 'red' (+v) max
## @ k - "knee" (transition zone); range 0 (none) to 9 (max); default 3
##
## Examples
## | ## all default arguments:
## | SmoothLimiter(0, 255, y=1.0, b=1.0, g=1.0, r=1.0)
## | ## restrict mainly blue:
## | SmoothLimiter(0, 255, y=0.5, b=0.24, g=0.5, r=0.5)
##
function SmoothLimiter(clip C,
\ int ymin, int ymax,
\ float "y", float "b",
\ float "g", float "r",
\ int "k")
{
bits = C.BitsPerComponent
s255 = getFullscale(bits)

k = Min(Max(0, Default(k, 3)), 9)
sk = scbf(8, bits, k)

mmax = 128 - (8 * k)
mmin = 128 + (8 * k)

ymin = scbf(8, bits, Min(Max(0, ymin), mmax))
ymax = scbf(8, bits, Min(Max(mmin, ymax), 255))

umin = scbf(8, bits, Min(Max(0, 128-Round(128.0*Default(y, 1.0))), 124))
umax = scbf(8, bits, Min(Max(132, 128+Round(128.0*Default(b, 1.0))), 255))

vmin = scbf(8, bits, Min(Max(0, 128-Round(128.0*Default(g, 1.0))), 124))
vmax = scbf(8, bits, Min(Max(132, 128+Round(128.0*Default(r, 1.0))), 255))

s = "((x<"+scbs(8, bits, 128)+") "
\ + "? ((x>LO_k) ? x : ((x * LO_s) + xMIN)) "
\ + ": ((x<HI_k) ? x : ((x-HI_k) * HI_s + HI_k)))"

ymin_k = ymin + Round(sk / 16.0 * 128) ## '_k' = knee point
ymax_k = ymax - Round(sk / 16.0 * 128)
ymin_s = (ymin_k-ymin) / Max(0.001, Float(ymin_k)) ## '_s' = slope
ymax_s = (ymax-ymax_k) / Max(0.001, s255-ymax_k)

sy = (ymin==0 && ymax==s255) ? "x"
\ : s.ReplaceStr("xMIN", String(ymin))
\ .ReplaceStr("LO_k", String(ymin_k))
\ .ReplaceStr("HI_k", String(ymax_k))
\ .ReplaceStr("LO_s", StrinF(ymin_s, 3))
\ .ReplaceStr("HI_s", StrinF(ymax_s, 3))

umin_k = umin + Round(sk / 16.0 * 128)
umax_k = umax - Round(sk / 16.0 * 128)
umin_s = (umin_k-umin) / Max(0.001, Float(umin_k))
umax_s = (umax-umax_k) / Max(0.001, Float(s255-umax_k))

su = (umin==0 && umax==s255) ? "x"
\ : s.ReplaceStr("xMIN", String(umin))
\ .ReplaceStr("LO_k", String(umin_k))
\ .ReplaceStr("HI_k", String(umax_k))
\ .ReplaceStr("LO_s", StrinF(umin_s, 3))
\ .ReplaceStr("HI_s", StrinF(umax_s, 3))

vmin_k = vmin + Round(sk / 16.0 * 128)
vmax_k = vmax - Round(sk / 16.0 * 128)
vmin_s = (vmin_k-vmin) / Max(0.001, Float(vmin_k))
vmax_s = (vmax-vmax_k) / Max(0.001, Float(s255-vmax_k))

sv = (vmin==0 && vmax==s255) ? "x"
\ : s.ReplaceStr("xMIN", String(vmin))
\ .ReplaceStr("LO_k", String(vmin_k))
\ .ReplaceStr("HI_k", String(vmax_k))
\ .ReplaceStr("LO_s", StrinF(vmin_s, 3))
\ .ReplaceStr("HI_s", StrinF(vmax_s, 3))

return C.mt_lut(
\ yexpr=mt_polish(sy),
\ uexpr=mt_polish(su),
\ vexpr=mt_polish(sv),
\ chroma="process")
}

Original version:## requires MaskTools

##################################
### range limiter with soft 'knee' transition,
### supports independent yellow, blue, green & red limits
### (not for secondary color correction)
##
## @ ymin - black limit; range 0 (no change) to 124 (extreme)
## @ ymax - white limit; range 132 (extreme) to 255 (no change)
## @ y - 'yellow' (-u) max; range 0.0 (extreme) to 1.0 (default, no change)
## @ b - 'blue' (+u) max
## @ g - 'green' (-v) max
## @ r - 'red' (+v) max
## @ k - "knee" (transition zone); range 0 (none) to 9 (max); default 3
##
## @ Example
## SmoothLimiter(0, 255, y=0.5, b=0.24, g=0.5, r=0.5)
##
function SmoothLimiter(clip C,
\ int ymin, int ymax,
\ float "y", float "b",
\ float "g", float "r",
\ int "k")
{
ymin = Min(Max(0, ymin), 124)
ymax = Min(Max(132, ymax), 255)

umin = Min(Max(0, 128-Round(128.0*Default(y, 1.0))), 124)
umax = Min(Max(132, 128+Round(128.0*Default(b, 1.0))), 255)

vmin = Min(Max(0, 128-Round(128.0*Default(g, 1.0))), 124)
vmax = Min(Max(132, 128+Round(128.0*Default(r, 1.0))), 255)

k = Min(Max(0, Default(k, 3)), 9)

s = "((x<128) "
\ + "? ((x>LO_k) ? x : ((x * LO_s) + xMIN)) "
\ + ": ((x<HI_k) ? x : ((x-HI_k) * HI_s + HI_k)))"

ymin_k = ymin + Round(k / 16.0 * 128) ## '_k' = knee point
ymax_k = ymax - Round(k / 16.0 * 128)
ymin_s = (ymin_k-ymin) / Max(0.001, Float(ymin_k)) ## '_s' = slope
ymax_s = (ymax-ymax_k) / Max(0.001, Float(255-ymax_k))

sy = (ymin==0 && ymax==255) ? "x"
\ : s.StrReplace("xMIN", String(ymin))
\ .StrReplace("LO_k", String(ymin_k))
\ .StrReplace("HI_k", String(ymax_k))
\ .StrReplace("LO_s", String(ymin_s, "%0.3f"))
\ .StrReplace("HI_s", String(ymax_s, "%0.3f"))

umin_k = umin + Round(k / 16.0 * 128)
umax_k = umax - Round(k / 16.0 * 128)
umin_s = (umin_k-umin) / Max(0.001, Float(umin_k))
umax_s = (umax-umax_k) / Max(0.001, Float(255-umax_k))

su = (umin==0 && umax==255) ? "x"
\ : s.StrReplace("xMIN", String(umin))
\ .StrReplace("LO_k", String(umin_k))
\ .StrReplace("HI_k", String(umax_k))
\ .StrReplace("LO_s", String(umin_s, "%0.3f"))
\ .StrReplace("HI_s", String(umax_s, "%0.3f"))

vmin_k = vmin + Round(k / 16.0 * 128)
vmax_k = vmax - Round(k / 16.0 * 128)
vmin_s = (vmin_k-vmin) / Max(0.001, Float(vmin_k))
vmax_s = (vmax-vmax_k) / Max(0.001, Float(255-vmax_k))

sv = (vmin==0 && vmax==255) ? "x"
\ : s.StrReplace("xMIN", String(vmin))
\ .StrReplace("LO_k", String(vmin_k))
\ .StrReplace("HI_k", String(vmax_k))
\ .StrReplace("LO_s", String(vmin_s, "%0.3f"))
\ .StrReplace("HI_s", String(vmax_s, "%0.3f"))

return C.mt_lut(
\ yexpr=mt_polish(sy),
\ uexpr=mt_polish(su),
\ vexpr=mt_polish(sv),
\ chroma="process")
}

# http://avisynth.nl/index.php/HDColorBars
##################################
function StrReplace(string base, string findstr, string repstr)
{
pos = FindStr(base, findstr)
return (StrLen(findstr)==0) || (pos==0)
\ ? base
\ : StrReplace(
\ LeftStr(base, pos-1) + repstr +
\ MidStr(base, pos+StrLen(findstr)),
\ findstr, repstr)
}

vcmohan
2nd January 2017, 08:10
Three plugins to work with avisynth+ r2347 are added. These are
1. FQPlus (http://forum.doom9.org/showthread.php?t=174161)
2.modPlus (http://forum.doom9.org/showthread.php?t=174162)
3.movePlus (http://forum.doom9.org/showthread.php?t=174163)

The links take to discussion threads.

martin53
5th March 2017, 22:20
Tiny helper plugin StrResolve (https://forum.doom9.org/showthread.php?p=1799667#post1799667) mainly for masktools expressions

vcmohan
8th March 2017, 12:48
TxPlus (http://www.avisynth.nl/users/vcmohan/TxPlus/index.html) is a plugin having over 20 transition functions, similar to TransAll of avisynth. TxPlus supports all bit depths and color formats (except stacked formats). Discussion here (http://forum.doom9.org/showthread.php?t=174399)

martin53
10th March 2017, 22:10
Not really new, though - released about 2015.
AudioTimeline (https://forum.doom9.org/showthread.php?p=1710421#post1710421).
Similar to Waveform or AudioGraph. Intended to observe a bigger time interval, e.g. several seconds or minutes of audio under the video, also when making thubsheets every x minutes.