function UnSmooth(clip input, int "strength", string "smoother", string "params", \ bool "luma", bool "chroma") { strength = Default(strength, 255) # strength, 0-255 smoother = Default(smoother, "Deen") # filter that smooths #params = default defined below # filter parameters - use Chr(34) for quotes luma = Default(luma, true) # luma processing on/off chroma = Default(chroma, false) # chroma processing on/off defaultnull = Default(params, "") defaultdeen = Default(params, Chr(34)+"a3d"+Chr(34)+", 4, 20, 20, 30") params = (smoother=="Deen") ? defaultdeen : defaultnull try { smoothedwparams = Eval(smoother + "(input, " + params + ")") } catch(err_msg) { smoothedwoparams = Eval(smoother + "(input)") } smoothed = (params=="") ? smoothedwoparams : smoothedwparams smoothed.Greyscale().ConvertToYUY2() ymask = last input.Greyscale().ConvertToYUY2() yinput = last Subtract(yinput, ymask) ysharp = last Layer(yinput, ysharp, "mul", 255).Levels(0, 0.978, 115, 21, 255).ConvertToYV12() y = last smoothed.UToY().ConvertToYUY2() umask = last input.ConvertToYV12().UToY().ConvertToYUY2() uinput = last Subtract(uinput, umask) usharp = last Layer(uinput, usharp, "mul", strength).Levels(0, 0.978, 115, 21, 255).ConvertToYV12() u = last smoothed.VToY().ConvertToYUY2() vmask = last input.ConvertToYV12().VToY().ConvertToYUY2() vinput = last Subtract(vinput, vmask) vsharp = last Layer(vinput, vsharp, "mul", strength).Levels(0, 0.978, 115, 21, 255).ConvertToYV12() v = last youtput = luma ? y : yinput.ConvertToYV12() uoutput = chroma ? u : uinput.ConvertToYV12() voutput = chroma ? v : vinput.ConvertToYV12() YtoUV(uoutput, voutput, youtput) }