Advertisement
Guest User

smaskmerge

a guest
Feb 21st, 2019
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # smaskmerge 1.22 by A.SONY
  2. # base on MasknotCL and MaskCL
  3. # need masktools 2.2.6 or up in avs 2.6 or avs+, will work with CLExpr if it possible
  4.  
  5. function smaskmerge(clip src, clip overlay, clip mask, int "y", int "u", int "v", bool "luma", string "cplace") {
  6.  
  7. y = Default(y,3)
  8. u = Default(u,2)
  9. v = Default(v,2)
  10. luma = Default(luma,false)
  11. cplace = default(cplace, "MPEG2")
  12.  
  13. assert(cplace == "MPEG2" || cplace == "MPEG1", "smaskmerge: chroma siting must be MPEG2 or MPEG1")
  14.  
  15. yuy2 = isyuy2(src)
  16. sisavs26 = !(VersionNumber() < 2.6)
  17. sisphbd  = sisavs26 ? AvsPlusVersionNumber > 2294 : false
  18. sislumaonly = sisphbd ? src.isy() : sisavs26 ? src.isy8() : true
  19. fullchr     = sisphbd ? src.is444() : sisavs26 ? src.isyv24() : false
  20. chr420      = sisphbd ? src.is420() : src.isyv12()
  21. chr411      = sisavs26 ? src.isyv411() : false
  22.  
  23. luma = (sisavs26 && sislumaonly) || (u!=3 && v!=3) ? false : luma
  24.  
  25. uc=luma ? !sislumaonly && !fullchr ? sisphbd ? ExtractU(src) : UToY8(src) : !sisavs26 ? UToY(src) : nop() : nop()
  26. uvh=luma && !fullchr ? !sisavs26 || !sislumaonly ? uc.height() : nop() : nop()
  27. uvw=luma && !fullchr ? !sisavs26 || !sislumaonly ? uc.width() : nop() : nop()
  28.  
  29. mask = yuy2 && luma ? mask.planar2Interleaved(true) : mask
  30.  
  31. mask26=luma && !fullchr && sisavs26 ? sisphbd ? mask.converttoy() : mask.converttoy8() : mask
  32. chromalumam=luma && !fullchr ? mask.BilinearResize(uvw,uvh,src_left=chr420 && cplace == "MPEG1" ? 0 : chr411 ? -1.5 : -0.5) : nop()
  33.  
  34. mask = luma && !fullchr ? sisphbd ? CombinePlanes(mask,chromalumam,chromalumam,source_planes="YYY",planes="YUV",sample_clip=mask) : ytouv(chromalumam,chromalumam,mask26) : mask
  35. nocl=false
  36. try { cl_exprxyz(src,overlay,mask,"x y x - z 255 / * +",y=y,u=u,v=v) } catch(error_msg) { nocl=true }
  37. nocl ? sisavs26 ? mt_lutxyz(src,overlay,yuy2 && luma ? mask.Interleaved2planar() : mask,"x y x - z range_max / * +",y=y,u=u,v=v) : mt_lutxyz(src,overlay,mask,"x y x - z 255 / * +",y=y,u=u,v=v) : last
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement