Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # base on ChromaReconstructor and fulltonative by feisty2
- function scaled444tonative (clip src, int "a", float "h", int "lowpass", int "mode", int "device_type", int "device_id", int "fast", float "sDev", float "iDev", float "cs", bool "d2", int "kernS", int "kernI", int "resType")
- {
- fast = default(fast, 0)
- a = default(a, fast!=0 ? 1 : 32)
- h = default(h, 6.4)
- lowpass = default(lowpass, 6)
- mode = default(mode, 0)
- sDev = default (sDev, 31.1)
- iDev = default (iDev, 15.1)
- d2 = default (d2, true)
- kernS = default (kernS, 8)
- kernI = default (kernI, 3)
- restype = default (restype, 0)
- sisphbd = AvsPlusVersionNumber > 2294
- siscfloat = sisphbd ? IsVideoFloat(src) : false
- pad = fast < 3 && fast != 1 ? src.sh_padding (2, 2, 2, 2) : src
- srcy = sisphbd ? ExtractY(pad) : ConvertToY8(pad)
- srcu = sisphbd ? ExtractU(pad) : UToY8(pad)
- srcv = sisphbd ? ExtractV(pad) : VToY8(pad)
- u4x = fast < 3 && fast != 1 ? pad.nnedi3_rpow2(2, nns=4, qual=2, etype=1, nsize=0).nnedi3_rpow2(2, nns=4, qual=2, etype=1, nsize=0) : pad
- luma = fast < 3 && fast != 1 ? sisphbd ? ExtractY(u4x) : ConvertToY8(u4x) : srcy
- u = siscfloat ? mt_lut (sisphbd ? ExtractU(u4x) : UToY8(u4x), "x range_half +", use_expr=2) : fast < 3 && fast != 1 ? sisphbd ? ExtractU(u4x) : UToY8(u4x) : srcu
- v = siscfloat ? mt_lut (sisphbd ? ExtractV(u4x) : VToY8(u4x), "x range_half +", use_expr=2) : fast < 3 && fast != 1 ? sisphbd ? ExtractV(u4x) : VToY8(u4x) : srcv
- unew = fast > 1 ? U.ConvertToYv12().TBilateral(diameterL=Round(pow(2 * a + 1,2)), sDevL=sDev, iDevL=iDev, csL=cs, d2=d2, chroma=false, ppclip=luma.ConvertToYV12(), kernS=kernS, kernI=kernI, resType=resType).ConvertToY8() : KNLMeansCL (u, d=0, a=a, s=0, h=h, wref=1.0, rclip=luma, device_type=device_type, device_id=device_id)
- unew = fast < 3 && fast != 1 ? sresizexnr (unew, pad.width, pad.height, src_left=-1.5, src_top=-1.5, kernel="spline64") : unew
- vnew = fast > 1 ? V.ConvertToYv12().TBilateral(diameterL=Round(pow(2 * a + 1,2)), sDevL=sDev, iDevL=iDev, csL=cs, d2=d2, chroma=false, ppclip=luma.ConvertToYV12(), kernS=kernS, kernI=kernI, resType=resType).ConvertToY8() : KNLMeansCL (v, d=0, a=a, s=0, h=h, wref=1.0, rclip=luma, device_type=device_type, device_id=device_id)
- vnew = fast < 3 && fast != 1 ? sresizexnr (vnew, pad.width, pad.height, src_left=-1.5, src_top=-1.5, kernel="spline64") : vnew
- uhi = mode == 1 ? mt_MakeDiff (unew, fgauss_h (unew, p=lowpass)) : mt_MakeDiff (unew, fgauss (unew, p=lowpass))
- vhi = mode == 1 ? mt_MakeDiff (vnew, fgauss_h (vnew, p=lowpass)) : mt_MakeDiff (vnew, fgauss (vnew, p=lowpass))
- ufinal = !siscfloat ? srcu.mt_AddDiff(uhi) : mt_lut (mt_MakeDiff (mt_lut (srcu, "x range_half +", use_expr=2), uhi), "x range_half -", use_expr=2)
- vfinal = !siscfloat ? srcv.mt_AddDiff(vhi) : mt_lut (mt_MakeDiff (mt_lut (srcv, "x range_half +", use_expr=2), vhi), "x range_half -", use_expr=2)
- fmerge = YToUV(UFinal, VFinal, srcy)
- fclip = Crop (fmerge, 2, 2, -2, -2)
- return fclip
- }
- function fgauss_h(clip src, int "p")
- {
- p = default(p, 30)
- w = src.width
- h = src.height
- upsmp = resizex(src, w * 2, h, kernel="gauss", a1=100)
- return resizex(upsmp, w, h, kernel="gauss", a1=p)
- }
- function fgauss(clip src, int "p")
- {
- p = default(p, 30)
- w = src.width
- h = src.height
- upsmp = resizex(src, w * 2, h * 2, kernel="gauss", a1=100)
- return resizex(upsmp, w, h, kernel="gauss", a1=p)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement