# mfRainbow by mf # Derainbows according to the same principle as AntiFlicker. # Definitely slower, but possibly (untested) higher quality. # # I don't claim copyright but I ask you to treat my script # fairly. # # Happy slow encoding ^^. # function mfRainbow(clip input, string "mode", float "clipstren", \ int "strength", bool "post") { mode = Default(mode, "slowest") # processing speed, slow-slower-slowest strength = Default(strength, 255) # processing strength, 0-255 clipstren = Default(clipstren, 5.0) # value clipping strength, 0.0-10.0 post = Default(post, true) # spatial postprocessing on/off inputrgb = input.ConvertToRGB32() edgemask = input.EdgeMask(0, "sobel").Inflate().GreyScale() .\ Levels(0, clipstren, 255, 0, 255).ConvertToRGB32() derainbow = (mode == "slow" ? input.Deen("a3d",4,0,40,50) : \ (mode == "slower" ? input.Deen("a3d",4,0,20,50).Deen("a3d",4,0,20,50) : \ (mode == "slowest" ? input.Deen("a3d",4,0,15,50).Deen("a3d",4,0,15,50) .\ Deen("a3d",4,0,15,50).Deen("a3d",4,0,15,50) : Assert(false, "available modes: \ slow, slower, slowest")))).ConvertToRGB32() maskedrainbow = Mask(derainbow, edgemask) edgerainbow = Layer(inputrgb, maskedrainbow, "add", strength) semifinal = input.MergeChroma(edgerainbow.ConvertToYV12()) blah = semifinal.MSmooth() # cause of a weird argument error final = semifinal.MergeChroma(blah) return post ? final : semifinal }