View difference between Paste ID: fqk9U3uY and NA1krxtu
SHOW: | | - or go back to the newest paste.
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.11
3+
# v 1.12
4-
function IResize(clip c, int NewWidth, int NewHeight, string "resifilter", string "res_params", bool "mpeg2", Float "src_left", Float "src_top", string "cresifilter", string "cres_params") {
4+
function IResize(clip c, int NewWidth, int NewHeight, string "resifilter", string "res_params", bool "mpeg2", Float "src_left", Float "src_top", string "cresifilter", string "cres_params", bool "invshift", bool "invcshift") {
5
  avs26   = VersionNumber() < 2.60 ? false : true
6
  avspmt  = Findstr(VersionString(), "AviSynth+") != 0 && Findstr(VersionString(), "r1576") == 0
7
  lresifilter  = defined(resifilter) ? LCase(resifilter) : "resifilter"
8
  lcresifilter = defined(cresifilter) ? LCase(cresifilter) : "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)) || lresifilter == "deresizemt")
19
  invcshift	   = default(invcshift, ((lcresifilter == "debicubic" || lcresifilter == "debicubicy" || lcresifilter == "debilinear" || lcresifilter == "debilinearY") && isrgb(c)) || lcresifilter == "deresizemt")
20
  chr420  = avspmt ? c.is420() : c.isyv12()
21
  slumSep = chr420 && avs26
22
  slumres = slumSep ? avspmt ? "ConvertToY()." : "ConvertToY8()." : ""
23
  c_width = Width(c)
24
  ch420m  = slumSep && mpeg2 ? NewWidth == c_width : false
25
  wShift  = ch420m ? 0.25*(1.0-Float(c_width/2.0)/Float(NewWidth/2.0)) : 0
26
  c
27-
  E  = Eval(slumres + resifilter + "(NewWidth, NewHeight/2, src_left=src_left, src_top=src_top + Shift" + res_params + ")")
27+
28-
  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 ? Shift + (src_top==0 ? 0 : src_top/2) : src_top + 2*Shift" + res_params_c + ")") : nop()
28+
29
  v2=last
30
  SelectEven(v2)
31
  euvcl = slumSep ? avspmt ? Interleave(ExtractU(),ExtractV()) : Interleave(UToY8(),VToY8()) : nop()
32-
  O  = Eval(slumres + resifilter + "(NewWidth, NewHeight/2, src_left=src_left, src_top=src_top + (-Shift)" + res_params + ")")
32+
33-
  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 ? -Shift + (src_top==0 ? 0 : src_top/2) : src_top + -2*shift" + res_params_c + ")") : nop()
33+
  E  = Eval(slumres + resifilter + "(NewWidth, NewHeight/2, src_left=src_left, src_top=src_top + (invshift ? -Shift : Shift)" + res_params + ")")
34
  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)" + res_params_c + ")") : nop()
35
  SelectOdd(v2)
36
  ouvcl = slumSep ? avspmt ? Interleave(ExtractU(),ExtractV()) : Interleave(UToY8(),VToY8()) : nop()
37
  oschrres = slumSep ? "ouvcl." : ""
38
  O  = Eval(slumres + resifilter + "(NewWidth, NewHeight/2, src_left=src_left, src_top=src_top + (invshift ? Shift : -Shift)" + res_params + ")")
39
  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)" + res_params_c + ")") : nop()
40
  Interleave(E, O)
41
  chr420 ? avs26 ? avspmt ? 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
42
  Weave()
43
}