Advertisement
Guest User

IResize

a guest
Feb 21st, 2019
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # IResize by Gavino and IanB and mod by A.SONY to use Custom resizer and Extra resizer parameters may be passed via res_params. like this IResize(240,480,resifilter="LanczosResize",res_params=",taps=5")
  2. # some parameters are special for 420 (yv12 in vanilla avs)
  3. # v 1.18
  4. function IResize(clip c, int NewWidth, int NewHeight, string "resifilter", string "res_params", bool "mpeg2", Float "src_left", Float "src_top", float "src_width", float "src_height", string "cresifilter", string "cres_params", bool "invshift", bool "invcshift", bool "inhcshift") {
  5.   avs26   = VersionNumber() < 2.60 ? false : true
  6.   sisphbd = AvsPlusVersionNumber > 2294
  7.   lresifilter  = defined(resifilter) ? LCase(resifilter) : "resifilter"
  8.   lcresifilter = defined(cresifilter) ? LCase(cresifilter) : defined(resifilter) ? lresifilter : "cresifilter"
  9.   lresifilter  = LeftStr(lresifilter, 2) == "de" && RightStr(lresifilter, 8) == "resizemt" ? "deresizemt" : lresifilter
  10.   lcresifilter = LeftStr(lcresifilter, 2) == "de" && RightStr(lcresifilter, 8) == "resizemt" ? "deresizemt" : lcresifilter
  11.   resifilter   = default ( resifilter,         "Spline36resize" )
  12.   res_params   = default(res_params, "")
  13.   mpeg2        = default(mpeg2, true)
  14.   src_left     = default(src_left, 0)
  15.   src_top      = default(src_top, 0)
  16.   res_params_c = default(cres_params, res_params)
  17.   cresifilter  = default(cresifilter, resifilter)
  18.   invshift     = default(invshift, ((lresifilter == "debicubic" || lresifilter == "debicubicy" || lresifilter == "debilinear" || lresifilter == "debilinearY") && isrgb(c)))
  19.   invcshift    = default(invcshift, ((lcresifilter == "debicubic" || lcresifilter == "debicubicy" || lcresifilter == "debilinear" || lcresifilter == "debilinearY") && isrgb(c)))
  20.   chr420  = sisphbd ? c.is420() : c.isyv12()
  21.   slumSep = chr420 && avs26
  22.   slumres = slumSep ? sisphbd ? "ConvertToY()." : "ConvertToY8()." : ""
  23.   c420_ow = slumSep ? Float(Width(c)/2.0) : nop()
  24.   ch420m  = slumSep && mpeg2
  25.   desam = lcresifilter == "deresizemt" ? true : lcresifilter == "resizex" ? defined(res_params) ? StrCmp(LCase(res_params), "desampling=true") != 0 : false : false
  26.   inhcshift    = default(inhcshift, lcresifilter == "deresizemt" && ch420m)
  27.   c420_nw = defined(src_width) ? Float(src_width/2.0) : Float(NewWidth/2.0)
  28.   wShift  = ch420m ? (slumSep ? 0.25 : 0.5)*(desam ? 1.0-c420_nw/c420_ow : 1.0-c420_ow/c420_nw) : 0
  29.   c
  30.   SeparateFields()
  31.   luhe  = defined(src_height) ? Float(src_height/2.0) : Height()
  32.   Shift = (GetParity() ? -0.25 : 0.25) * (desam ? Float(NewHeight/2.0)/luhe-1.0 : luhe/Float(NewHeight/2.0)-1.0)
  33.   v2=last
  34.   SelectEven(v2)
  35.   euvcl = slumSep ? sisphbd ? Interleave(ExtractU(),ExtractV()) : Interleave(UToY8(),VToY8()) : nop()
  36.   eschrres = slumSep ? "euvcl." : ""
  37.   E  = Eval(slumres + resifilter + "(NewWidth, NewHeight/2, src_left=src_left, src_top=src_top + (invshift ? -Shift : Shift),src_width=src_width,src_height=src_height" + res_params + ")")
  38.   Ec = chr420 ? Eval(eschrres + cresifilter + "(slumSep ? NewWidth/2 : NewWidth, slumSep ? NewHeight/4 : NewHeight/2, src_left=wShift + (slumSep ? src_left==0 ? 0 : src_left/2 : src_left), src_top=slumSep ? (invcshift ? -Shift : Shift) + (src_top==0 ? 0 : src_top/2) : src_top + (invcshift ? -2*shift : 2*Shift),src_width=defined(src_width) ? c420_nw : src_width,src_height=defined(src_height) ? luhe : src_height" + res_params_c + ")") : nop()
  39.   SelectOdd(v2)
  40.   ouvcl = slumSep ? sisphbd ? Interleave(ExtractU(),ExtractV()) : Interleave(UToY8(),VToY8()) : nop()
  41.   oschrres = slumSep ? "ouvcl." : ""
  42.   O  = Eval(slumres + resifilter + "(NewWidth, NewHeight/2, src_left=src_left, src_top=src_top + (invshift ? Shift : -Shift),src_width=src_width,src_height=src_height" + res_params + ")")
  43.   Oc = chr420 ? Eval(oschrres + cresifilter + "(slumSep ? NewWidth/2 : NewWidth, slumSep ? NewHeight/4 : NewHeight/2, src_left=wShift + (slumSep ? src_left==0 ? 0 : src_left/2 : src_left), src_top=slumSep ? (invcshift ? Shift : -Shift) + (src_top==0 ? 0 : src_top/2) : src_top + (invcshift ? 2*shift : -2*shift),src_width=defined(src_width) ? c420_nw : src_width,src_height=defined(src_height) ? luhe : src_height" + res_params_c + ")") : nop()
  44.   Interleave(E, O)
  45.   chr420 ? avs26 ? sisphbd ? CombinePlanes(last, Interleave(Ec.Selecteven(),Oc.Selecteven()), Interleave(Ec.SelectOdd(),Oc.SelectOdd()), planes="YUV", source_planes="YYY", pixel_type=c.PixelType()) : YtoUV( Interleave(Ec.Selecteven(),Oc.Selecteven()), Interleave(Ec.SelectOdd(),Oc.SelectOdd()), last ) : MergeChroma(Interleave(Ec, Oc)) : Last
  46.   Weave()
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement