Zastin

Untitled

Dec 19th, 2020 (edited)
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. import vapoursynth as vs
  2. from vapoursynth import core
  3. from vsutil import *
  4. import awsmfunc as awf
  5. import lvsfunc as lvf
  6.  
  7. b = 0
  8. c = 0.5
  9.  
  10. height = 720 # yes that is a nice chad resolution
  11. width = 1280
  12.  
  13. def nnedi3_rpow2(clip):
  14. clip = clip.std.Transpose().znedi3.nnedi3(0, 1, 0, 0, 4, 2).resize.Spline36(height=1920, src_top=.5)
  15. return clip.std.Transpose().znedi3.nnedi3(0, 1, 0, 0, 4, 2).resize.Spline36(height=1080, src_top=.5)
  16.  
  17. def descale(clip): return depth(depth(clip, 32).descale.Debicubic(width, height, b=b, c=c), 16)
  18.  
  19. def error_mask(clip, desc, thr1=2500, thr2=None, expand1=2, expand2=3, blur=3):
  20. start = 0
  21.  
  22. error = desc.resize.Bicubic(1920, 1080, filter_param_a=b, filter_param_b=c)
  23. error = core.std.Expr([clip, error], 'x y - abs')
  24. error = iterate(error, core.std.Maximum, expand1)
  25.  
  26. for x in range(expand1):
  27. error = error.std.Maximum(coordinates=[[1]*8, [0,1,0,1,1,0,1,0]][min(start%3,1)])
  28. start += 1
  29.  
  30. if thr2 is not None:
  31. error = error.std.Binarize(thr2).misc.Hysteresis(error.std.Binarize(thr1))
  32. else:
  33. error = error.std.Binarize(thr1)
  34.  
  35. for x in range(expand2):
  36. error = error.std.Maximum(coordinates=[[1]*8, [0,1,0,1,1,0,1,0]][min(start%3,1)])
  37. start += 1
  38.  
  39. if blur:
  40. error = error.std.BoxBlur(hradius=blur, vradius=blur)
  41.  
  42. error = error.std.Crop(5,5,5,5).std.AddBorders(5,5,5,5,65535)
  43.  
  44. return error
  45.  
  46. def DescaleAAmod(clip):
  47. y,u,v = split(clip)
  48. desc = descale(y)
  49. resc = nnedi3_rpow2(desc)
  50. mask = y.std.Prewitt().std.Maximum().std.Binarize(24<<8).rgvs.RemoveGrain(20)
  51. error = error_mask(y, desc)
  52. y = y.std.MaskedMerge(resc, mask).std.MaskedMerge(y, error)
  53. return join([y,u,v])
  54.  
  55. src = lvf.misc.source("/mnt/data/samba/Uploads/Towa.no.Quon.6.Eternal.Quon.2011.1080p.BluRay.DTSHD-MA.h264.Remux-W33B.mkv") # load up the shitbox
  56. src = depth(src, 16) # fucked if I know
  57.  
  58. descale_b = DescaleAAmod(src)
  59.  
  60. source = awf.FrameInfo(src, "Source") #screenshots for non-trumpability
  61. descale_output = awf.FrameInfo(descale_b, "Descale") #same
  62. comp = core.std.Interleave([source, descale_output]) #same
  63. comp.set_output()
Add Comment
Please, Sign In to add comment