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.12 |
3 | + | # v 1.15 |
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") { |
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 | avspmt = Findstr(VersionString(), "AviSynth+") != 0 && Findstr(VersionString(), "r1576") == 0 | |
7 | lresifilter = defined(resifilter) ? LCase(resifilter) : "resifilter" | |
8 | - | lcresifilter = defined(cresifilter) ? LCase(cresifilter) : "cresifilter" |
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)) || 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) |
23 | + | c420_ow = slumSep ? Float(Width(c)/2.0) : nop() |
24 | - | ch420m = slumSep && mpeg2 ? NewWidth == c_width : false |
24 | + | ch420m = slumSep && mpeg2 |
25 | - | wShift = ch420m ? 0.25*(1.0-Float(c_width/2.0)/Float(NewWidth/2.0)) : 0 |
25 | + | inhcshift = default(inhcshift, lcresifilter == "deresizemt" && ch420m) |
26 | c420_nw = defined(src_width) ? Float(src_width/2.0) : Float(NewWidth/2.0) | |
27 | wShift = ch420m ? 0.25*(1.0-c420_ow/c420_nw) : 0 | |
28 | - | Shift = (GetParity() ? -0.25 : 0.25) * (Height()/Float(NewHeight/2)-1.0) |
28 | + | wShift = inhcshift ? -wShift : wShift |
29 | c | |
30 | SeparateFields() | |
31 | luhe = defined(src_height) ? Float(src_height/2.0) : Height() | |
32 | Shift = (GetParity() ? -0.25 : 0.25) * (luhe/Float(NewHeight/2.0)-1.0) | |
33 | - | E = Eval(slumres + resifilter + "(NewWidth, NewHeight/2, src_left=src_left, src_top=src_top + (invshift ? -Shift : Shift)" + res_params + ")") |
33 | + | |
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() |
34 | + | |
35 | euvcl = slumSep ? avspmt ? 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 | - | O = Eval(slumres + resifilter + "(NewWidth, NewHeight/2, src_left=src_left, src_top=src_top + (invshift ? Shift : -Shift)" + 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 | - | 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() |
39 | + | |
40 | ouvcl = slumSep ? avspmt ? 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 ? 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 | |
46 | Weave() | |
47 | } |