feisty2
2nd August 2014, 11:00
I'm working on a modification of a nnedi3 based upscale script, try to extend it to a multi EDI selectable script.
so I modified the original "rpow2" function and things get freaking weird
here's the original "rpow2" part
Function nnedi3_resize16_rpow2(clip input, int "vct", int "hct", int "vfield", int "hfield", bool "Y", bool "U", bool "V",
\ int "nsize", int "nns", int "qual", int "etype", int "pscrn", int "threads", bool "honly")
{
vct = Default(vct, 1 )
hct = Default(hct, 1 )
vfield = Default(vfield, 1 )
hfield = Default(hfield, 1 )
Y = Default(Y, True )
U = Default(U, False )
V = Default(V, False )
honly = Default(honly, False )
input
hct >= 1 ? \
Eval("""
(honly) ? last
\ : Eval(" try { fturnright(chroma=U||V, mt=threads!=1) } catch(error_msg) { TurnRight() } ")
nnedi3(hfield, True, Y, U, V, nsize, nns, qual, etype, pscrn, threads)
hct = hct - 1
honly = hct >= 1
hfield = 0
(honly) ? last
\ : Eval(" try { fturnleft (chroma=U||V, mt=threads!=1) } catch(error_msg) { TurnLeft () } ")
""") : NOP()
vct >= 1 && !honly ? \
Eval("""
nnedi3(vfield, True, Y, U, V, nsize, nns, qual, etype, pscrn, threads)
vct = vct - 1
vfield = 0
""") : NOP()
return Y||U||V ? vct <= 0 && hct <= 0 ? last
\ : last.nnedi3_resize16_rpow2(vct, hct, vfield, hfield, Y, U, V, nsize, nns, qual, etype, pscrn, threads, honly)
\ : input
}
here's my modified version
Function hybrid_edi_resize16_rpow2(clip input, int "vct", int "hct", int "vfield", int "hfield", bool "Y", bool "U", bool "V", string "edimode",
\ float "alpha", float "beta", float "gamma", int "nrad", int "mdis", bool "hp", bool "ucubic", bool "cost3", int "vcheck", float "vthresh0", float "vthresh1", float "vthresh2", clip "sclip", clip "mclip", int "nsize", int "nns", int "qual", int "etype", int "pscrn", int "threads", int "repmode", int "repmodeu", int "repmodev", bool "honly")
{
/* parameters for test
edimode = Default(edimode, "eedi3" )
# Parameters for eedi3
alpha = Default(alpha, 0.2 )
beta = Default(beta, 0.125 )
gamma = Default(gamma, 60.0 )
nrad = Default(nrad, 3 )
mdis = Default(mdis, 40 )
hp = Default(hp, False )
ucubic = Default(ucubic, True )
cost3 = Default(cost3, True )
vcheck = Default(vcheck, 2 )
vthresh0 = Default(vthresh0, 32.0 )
vthresh1 = Default(vthresh1, 64.0 )
vthresh2 = Default(vthresh2, 4.0 )
sclip = Default(sclip, UnDefined() )
mclip = Default(mclip, UnDefined() )
# Parameters for nnedi3
nsize = Default(nsize, 3 )
nns = Default(nns, 4 )
qual = Default(qual, 2 )
etype = Default(etype, 1 )
pscrn = Default(pscrn, 1 )
# Common parameter
threads = Default(threads, 0 )
# Repair Modes
repmode = Default(repmode, 13 )
repmodeu = Default(repmodeu, repmode)
repmodev = Default(repmodev, repmode)
*/
vct = Default(vct, 1 )
hct = Default(hct, 1 )
vfield = Default(vfield, 1 )
hfield = Default(hfield, 1 )
Y = Default(Y, True )
U = Default(U, False )
V = Default(V, False )
honly = Default(honly, False )
input
hct >= 1 ? \
Eval("""
(honly) ? last
\ : Eval(" try { fturnright(chroma=U||V, mt=threads!=1) } catch(error_msg) { TurnRight() } ")
(edimode=="eedi3") ? eedi3_dh(hfield, Y, U, V, alpha, beta, gamma, nrad ,mdis, hp, ucubic, cost3, vcheck, vthresh0, vthresh1, vthresh2, sclip, mclip, threads)
\ : (edimode=="nnedi3") ? nnedi3_dh(hfield, Y, U, V, nsize, nns, qual, etype, pscrn, threads)
\ : (edimode=="eedi3+nnedi3") ? hedi_dh(hfield, Y, U, V, alpha, beta, gamma, nrad, mdis, hp, ucubic, cost3, vcheck, vthresh0, vthresh1, vthresh2, mclip, nsize, nns, qual, etype, pscrn, threads)
\ : (edimode=="eedi3_repaired") ? eedi3_dh_r(hfield, Y, U, V, alpha, beta, gamma, nrad, mdis, hp, ucubic, cost3, vcheck, vthresh0, vthresh1, vthresh2, sclip, mclip, nsize, nns, qual, etype, pscrn, threads, repmode, repmodeu, repmodev)
\ : (edimode=="eedi3+nnedi3_repaired") ? hedi_dh_r(hfield, Y, U, V, alpha, beta, gamma, nrad, mdis, hp, ucubic, cost3, vcheck, vthresh0, vthresh1, vthresh2, mclip, nsize, nns, qual, etype, pscrn, threads, repmode, repmodeu, repmodev)
\ : Assert (1>2,"Invalid edimode !")
hct = hct - 1
honly = hct >= 1
hfield = 0
(honly) ? last
\ : Eval(" try { fturnleft (chroma=U||V, mt=threads!=1) } catch(error_msg) { TurnLeft () } ")
""") : NOP()
vct >= 1 && !honly ? \
Eval("""
(edimode=="eedi3") ? eedi3_dh(vfield, Y, U, V, alpha, beta, gamma, nrad ,mdis, hp, ucubic, cost3, vcheck, vthresh0, vthresh1, vthresh2, sclip, mclip, threads)
\ : (edimode=="nnedi3") ? nnedi3_dh(vfield, Y, U, V, nsize, nns, qual, etype, pscrn, threads)
\ : (edimode=="eedi3+nnedi3") ? hedi_dh(vfield, Y, U, V, alpha, beta, gamma, nrad, mdis, hp, ucubic, cost3, vcheck, vthresh0, vthresh1, vthresh2, mclip, nsize, nns, qual, etype, pscrn, threads)
\ : (edimode=="eedi3_repaired") ? eedi3_dh_r(vfield, Y, U, V, alpha, beta, gamma, nrad, mdis, hp, ucubic, cost3, vcheck, vthresh0, vthresh1, vthresh2, sclip, mclip, nsize, nns, qual, etype, pscrn, threads, repmode, repmodeu, repmodev)
\ : (edimode=="eedi3+nnedi3_repaired") ? hedi_dh_r(vfield, Y, U, V, alpha, beta, gamma, nrad, mdis, hp, ucubic, cost3, vcheck, vthresh0, vthresh1, vthresh2, mclip, nsize, nns, qual, etype, pscrn, threads, repmode, repmodeu, repmodev)
\ : Assert (1>2,"Invalid edimode !")
vct = vct - 1
vfield = 0
""") : NOP()
return Y||U||V ? vct <= 0 && hct <= 0 ? last
\ : last.hybrid_edi_resize16_rpow2(vct, hct, vfield, hfield, Y, U, V, edimode, alpha, beta, gamma, nrad, mdis, hp, ucubic, cost3, vcheck, vthresh0, vthresh1, vthresh2, sclip, mclip, nsize, nns, qual, etype, pscrn, threads, repmode, repmodeu, repmodev, honly)
\ : input
}
Function hedi_dh_r (clip input, int "field", bool "Y", bool "U", bool "V", float "alpha", float "beta", float "gamma", int "nrad", int "mdis", bool "hp", bool "ucubic", bool "cost3", int "vcheck", float "vthresh0", float "vthresh1", float "vthresh2", clip "mclip", int "nsize", int "nns", int "qual", int "etype", int "pscrn", int "threads", int "repmode", int "repmodeu", int "repmodev")
{
nnedi3=input.nnedi3_dh (field=field, Y=Y, U=U, V=V, nsize=nsize, nns=nns, qual=qual, etype=etype, pscrn=pscrn, threads=threads)
dh=input.eedi3 (field=field, dh=true, Y=Y, U=U, V=V, alpha=alpha, beta=beta, gamma=gamma, nrad=nrad, mdis=mdis, hp=hp, ucubic=ucubic, cost3=cost3, vcheck=vcheck, vthresh0=vthresh0, vthresh1=vthresh1, vthresh2=vthresh2, sclip=nnedi3, mclip=mclip, threads=threads).repair (nnedi3, mode=repmode, modeu=repmodeu, modev=repmodev)
return dh
}
Function eedi3_dh_r (clip input, int "field", bool "Y", bool "U", bool "V", float "alpha", float "beta", float "gamma", int "nrad", int "mdis", bool "hp", bool "ucubic", bool "cost3", int "vcheck", float "vthresh0", float "vthresh1", float "vthresh2",clip "sclip", clip "mclip", int "nsize", int "nns", int "qual", int "etype", int "pscrn", int "threads", int "repmode", int "repmodeu", int "repmodev")
{
nnedi3=input.nnedi3_dh (field=field, Y=Y, U=U, V=V, nsize=nsize, nns=nns, qual=qual, etype=etype, pscrn=pscrn, threads=threads)
dh=input.eedi3 (field=field, dh=true, Y=Y, U=U, V=V, alpha=alpha, beta=beta, gamma=gamma, nrad=nrad, mdis=mdis, hp=hp, ucubic=ucubic, cost3=cost3, vcheck=vcheck, vthresh0=vthresh0, vthresh1=vthresh1, vthresh2=vthresh2, sclip=sclip, mclip=mclip, threads=threads).repair (nnedi3, mode=repmode, modeu=repmodeu, modev=repmodev)
return dh
}
Function hedi_dh (clip input, int "field", bool "Y", bool "U", bool "V", float "alpha", float "beta", float "gamma", int "nrad", int "mdis", bool "hp", bool "ucubic", bool "cost3", int "vcheck", float "vthresh0", float "vthresh1", float "vthresh2", clip "mclip", int "nsize", int "nns", int "qual", int "etype", int "pscrn", int "threads")
{
nnedi3=input.nnedi3_dh (field=field, Y=Y, U=U, V=V, nsize=nsize, nns=nns, qual=qual, etype=etype, pscrn=pscrn, threads=threads)
dh=input.eedi3 (field=field, dh=true, Y=Y, U=U, V=V, alpha=alpha, beta=beta, gamma=gamma, nrad=nrad, mdis=mdis, hp=hp, ucubic=ucubic, cost3=cost3, vcheck=vcheck, vthresh0=vthresh0, vthresh1=vthresh1, vthresh2=vthresh2, sclip=nnedi3, mclip=mclip, threads=threads)
return dh
}
Function nnedi3_dh (clip input, int "field", bool "Y", bool "U", bool "V",int "nsize", int "nns", int "qual", int "etype", int "pscrn", int "threads")
{
dh=input.nnedi3 (field=field, dh=true, Y=Y, U=U, V=V, nsize=nsize, nns=nns, qual=qual, etype=etype, pscrn=pscrn, threads=threads)
return dh
}
Function eedi3_dh (clip input, int "field", bool "Y", bool "U", bool "V",float "alpha", float "beta", float "gamma", int "nrad", int "mdis", bool "hp", bool "ucubic", bool "cost3", int "vcheck", float "vthresh0", float "vthresh1", float "vthresh2", clip "sclip", clip "mclip", int "threads")
{
dh=input.eedi3 (field=field, dh=true, Y=Y, U=U, V=V, alpha=alpha, beta=beta, gamma=gamma, nrad=nrad, mdis=mdis, hp=hp, ucubic=ucubic, cost3=cost3, vcheck=vcheck, vthresh0=vthresh0, vthresh1=vthresh1, vthresh2=vthresh2, sclip=sclip, mclip=mclip, threads=threads)
return dh
}
the script can run without any error, but produces weird artifacts if set "edimode" to "nnedi3" or "eedi3+nnedi3"
let's do a 4x upscale and see how the artifacts pops out, I'll crop the image to show the part with artifacts
first, this works perfectly with out any artifacts
nnedi3_dh ()
fturnleft ()
nnedi3_dh ()
fturnright ()
nnedi3_dh ()
fturnleft ()
nnedi3_dh ()
fturnright ()
crop (1000,500,-1000,-1000)
result:http://thumbnails112.imagebam.com/34255/497bdd342543234.jpg (http://www.imagebam.com/image/497bdd342543234)
and with the "rpow2" function
hybrid_edi_resize16_rpow2 (vct=2,hct=2,y=true,u=true,v=true,edimode="nnedi3")
crop (1000,500,-1000,-1000)
result:http://thumbnails112.imagebam.com/34255/83facd342543192.jpg (http://www.imagebam.com/image/83facd342543192)
what the heck is this? I don't know how and why this artifacts appears, with edimode="eedi3", everything seems nice, no weird artifacts, is it a nnedi3 bug or something?
:stupid:
so I modified the original "rpow2" function and things get freaking weird
here's the original "rpow2" part
Function nnedi3_resize16_rpow2(clip input, int "vct", int "hct", int "vfield", int "hfield", bool "Y", bool "U", bool "V",
\ int "nsize", int "nns", int "qual", int "etype", int "pscrn", int "threads", bool "honly")
{
vct = Default(vct, 1 )
hct = Default(hct, 1 )
vfield = Default(vfield, 1 )
hfield = Default(hfield, 1 )
Y = Default(Y, True )
U = Default(U, False )
V = Default(V, False )
honly = Default(honly, False )
input
hct >= 1 ? \
Eval("""
(honly) ? last
\ : Eval(" try { fturnright(chroma=U||V, mt=threads!=1) } catch(error_msg) { TurnRight() } ")
nnedi3(hfield, True, Y, U, V, nsize, nns, qual, etype, pscrn, threads)
hct = hct - 1
honly = hct >= 1
hfield = 0
(honly) ? last
\ : Eval(" try { fturnleft (chroma=U||V, mt=threads!=1) } catch(error_msg) { TurnLeft () } ")
""") : NOP()
vct >= 1 && !honly ? \
Eval("""
nnedi3(vfield, True, Y, U, V, nsize, nns, qual, etype, pscrn, threads)
vct = vct - 1
vfield = 0
""") : NOP()
return Y||U||V ? vct <= 0 && hct <= 0 ? last
\ : last.nnedi3_resize16_rpow2(vct, hct, vfield, hfield, Y, U, V, nsize, nns, qual, etype, pscrn, threads, honly)
\ : input
}
here's my modified version
Function hybrid_edi_resize16_rpow2(clip input, int "vct", int "hct", int "vfield", int "hfield", bool "Y", bool "U", bool "V", string "edimode",
\ float "alpha", float "beta", float "gamma", int "nrad", int "mdis", bool "hp", bool "ucubic", bool "cost3", int "vcheck", float "vthresh0", float "vthresh1", float "vthresh2", clip "sclip", clip "mclip", int "nsize", int "nns", int "qual", int "etype", int "pscrn", int "threads", int "repmode", int "repmodeu", int "repmodev", bool "honly")
{
/* parameters for test
edimode = Default(edimode, "eedi3" )
# Parameters for eedi3
alpha = Default(alpha, 0.2 )
beta = Default(beta, 0.125 )
gamma = Default(gamma, 60.0 )
nrad = Default(nrad, 3 )
mdis = Default(mdis, 40 )
hp = Default(hp, False )
ucubic = Default(ucubic, True )
cost3 = Default(cost3, True )
vcheck = Default(vcheck, 2 )
vthresh0 = Default(vthresh0, 32.0 )
vthresh1 = Default(vthresh1, 64.0 )
vthresh2 = Default(vthresh2, 4.0 )
sclip = Default(sclip, UnDefined() )
mclip = Default(mclip, UnDefined() )
# Parameters for nnedi3
nsize = Default(nsize, 3 )
nns = Default(nns, 4 )
qual = Default(qual, 2 )
etype = Default(etype, 1 )
pscrn = Default(pscrn, 1 )
# Common parameter
threads = Default(threads, 0 )
# Repair Modes
repmode = Default(repmode, 13 )
repmodeu = Default(repmodeu, repmode)
repmodev = Default(repmodev, repmode)
*/
vct = Default(vct, 1 )
hct = Default(hct, 1 )
vfield = Default(vfield, 1 )
hfield = Default(hfield, 1 )
Y = Default(Y, True )
U = Default(U, False )
V = Default(V, False )
honly = Default(honly, False )
input
hct >= 1 ? \
Eval("""
(honly) ? last
\ : Eval(" try { fturnright(chroma=U||V, mt=threads!=1) } catch(error_msg) { TurnRight() } ")
(edimode=="eedi3") ? eedi3_dh(hfield, Y, U, V, alpha, beta, gamma, nrad ,mdis, hp, ucubic, cost3, vcheck, vthresh0, vthresh1, vthresh2, sclip, mclip, threads)
\ : (edimode=="nnedi3") ? nnedi3_dh(hfield, Y, U, V, nsize, nns, qual, etype, pscrn, threads)
\ : (edimode=="eedi3+nnedi3") ? hedi_dh(hfield, Y, U, V, alpha, beta, gamma, nrad, mdis, hp, ucubic, cost3, vcheck, vthresh0, vthresh1, vthresh2, mclip, nsize, nns, qual, etype, pscrn, threads)
\ : (edimode=="eedi3_repaired") ? eedi3_dh_r(hfield, Y, U, V, alpha, beta, gamma, nrad, mdis, hp, ucubic, cost3, vcheck, vthresh0, vthresh1, vthresh2, sclip, mclip, nsize, nns, qual, etype, pscrn, threads, repmode, repmodeu, repmodev)
\ : (edimode=="eedi3+nnedi3_repaired") ? hedi_dh_r(hfield, Y, U, V, alpha, beta, gamma, nrad, mdis, hp, ucubic, cost3, vcheck, vthresh0, vthresh1, vthresh2, mclip, nsize, nns, qual, etype, pscrn, threads, repmode, repmodeu, repmodev)
\ : Assert (1>2,"Invalid edimode !")
hct = hct - 1
honly = hct >= 1
hfield = 0
(honly) ? last
\ : Eval(" try { fturnleft (chroma=U||V, mt=threads!=1) } catch(error_msg) { TurnLeft () } ")
""") : NOP()
vct >= 1 && !honly ? \
Eval("""
(edimode=="eedi3") ? eedi3_dh(vfield, Y, U, V, alpha, beta, gamma, nrad ,mdis, hp, ucubic, cost3, vcheck, vthresh0, vthresh1, vthresh2, sclip, mclip, threads)
\ : (edimode=="nnedi3") ? nnedi3_dh(vfield, Y, U, V, nsize, nns, qual, etype, pscrn, threads)
\ : (edimode=="eedi3+nnedi3") ? hedi_dh(vfield, Y, U, V, alpha, beta, gamma, nrad, mdis, hp, ucubic, cost3, vcheck, vthresh0, vthresh1, vthresh2, mclip, nsize, nns, qual, etype, pscrn, threads)
\ : (edimode=="eedi3_repaired") ? eedi3_dh_r(vfield, Y, U, V, alpha, beta, gamma, nrad, mdis, hp, ucubic, cost3, vcheck, vthresh0, vthresh1, vthresh2, sclip, mclip, nsize, nns, qual, etype, pscrn, threads, repmode, repmodeu, repmodev)
\ : (edimode=="eedi3+nnedi3_repaired") ? hedi_dh_r(vfield, Y, U, V, alpha, beta, gamma, nrad, mdis, hp, ucubic, cost3, vcheck, vthresh0, vthresh1, vthresh2, mclip, nsize, nns, qual, etype, pscrn, threads, repmode, repmodeu, repmodev)
\ : Assert (1>2,"Invalid edimode !")
vct = vct - 1
vfield = 0
""") : NOP()
return Y||U||V ? vct <= 0 && hct <= 0 ? last
\ : last.hybrid_edi_resize16_rpow2(vct, hct, vfield, hfield, Y, U, V, edimode, alpha, beta, gamma, nrad, mdis, hp, ucubic, cost3, vcheck, vthresh0, vthresh1, vthresh2, sclip, mclip, nsize, nns, qual, etype, pscrn, threads, repmode, repmodeu, repmodev, honly)
\ : input
}
Function hedi_dh_r (clip input, int "field", bool "Y", bool "U", bool "V", float "alpha", float "beta", float "gamma", int "nrad", int "mdis", bool "hp", bool "ucubic", bool "cost3", int "vcheck", float "vthresh0", float "vthresh1", float "vthresh2", clip "mclip", int "nsize", int "nns", int "qual", int "etype", int "pscrn", int "threads", int "repmode", int "repmodeu", int "repmodev")
{
nnedi3=input.nnedi3_dh (field=field, Y=Y, U=U, V=V, nsize=nsize, nns=nns, qual=qual, etype=etype, pscrn=pscrn, threads=threads)
dh=input.eedi3 (field=field, dh=true, Y=Y, U=U, V=V, alpha=alpha, beta=beta, gamma=gamma, nrad=nrad, mdis=mdis, hp=hp, ucubic=ucubic, cost3=cost3, vcheck=vcheck, vthresh0=vthresh0, vthresh1=vthresh1, vthresh2=vthresh2, sclip=nnedi3, mclip=mclip, threads=threads).repair (nnedi3, mode=repmode, modeu=repmodeu, modev=repmodev)
return dh
}
Function eedi3_dh_r (clip input, int "field", bool "Y", bool "U", bool "V", float "alpha", float "beta", float "gamma", int "nrad", int "mdis", bool "hp", bool "ucubic", bool "cost3", int "vcheck", float "vthresh0", float "vthresh1", float "vthresh2",clip "sclip", clip "mclip", int "nsize", int "nns", int "qual", int "etype", int "pscrn", int "threads", int "repmode", int "repmodeu", int "repmodev")
{
nnedi3=input.nnedi3_dh (field=field, Y=Y, U=U, V=V, nsize=nsize, nns=nns, qual=qual, etype=etype, pscrn=pscrn, threads=threads)
dh=input.eedi3 (field=field, dh=true, Y=Y, U=U, V=V, alpha=alpha, beta=beta, gamma=gamma, nrad=nrad, mdis=mdis, hp=hp, ucubic=ucubic, cost3=cost3, vcheck=vcheck, vthresh0=vthresh0, vthresh1=vthresh1, vthresh2=vthresh2, sclip=sclip, mclip=mclip, threads=threads).repair (nnedi3, mode=repmode, modeu=repmodeu, modev=repmodev)
return dh
}
Function hedi_dh (clip input, int "field", bool "Y", bool "U", bool "V", float "alpha", float "beta", float "gamma", int "nrad", int "mdis", bool "hp", bool "ucubic", bool "cost3", int "vcheck", float "vthresh0", float "vthresh1", float "vthresh2", clip "mclip", int "nsize", int "nns", int "qual", int "etype", int "pscrn", int "threads")
{
nnedi3=input.nnedi3_dh (field=field, Y=Y, U=U, V=V, nsize=nsize, nns=nns, qual=qual, etype=etype, pscrn=pscrn, threads=threads)
dh=input.eedi3 (field=field, dh=true, Y=Y, U=U, V=V, alpha=alpha, beta=beta, gamma=gamma, nrad=nrad, mdis=mdis, hp=hp, ucubic=ucubic, cost3=cost3, vcheck=vcheck, vthresh0=vthresh0, vthresh1=vthresh1, vthresh2=vthresh2, sclip=nnedi3, mclip=mclip, threads=threads)
return dh
}
Function nnedi3_dh (clip input, int "field", bool "Y", bool "U", bool "V",int "nsize", int "nns", int "qual", int "etype", int "pscrn", int "threads")
{
dh=input.nnedi3 (field=field, dh=true, Y=Y, U=U, V=V, nsize=nsize, nns=nns, qual=qual, etype=etype, pscrn=pscrn, threads=threads)
return dh
}
Function eedi3_dh (clip input, int "field", bool "Y", bool "U", bool "V",float "alpha", float "beta", float "gamma", int "nrad", int "mdis", bool "hp", bool "ucubic", bool "cost3", int "vcheck", float "vthresh0", float "vthresh1", float "vthresh2", clip "sclip", clip "mclip", int "threads")
{
dh=input.eedi3 (field=field, dh=true, Y=Y, U=U, V=V, alpha=alpha, beta=beta, gamma=gamma, nrad=nrad, mdis=mdis, hp=hp, ucubic=ucubic, cost3=cost3, vcheck=vcheck, vthresh0=vthresh0, vthresh1=vthresh1, vthresh2=vthresh2, sclip=sclip, mclip=mclip, threads=threads)
return dh
}
the script can run without any error, but produces weird artifacts if set "edimode" to "nnedi3" or "eedi3+nnedi3"
let's do a 4x upscale and see how the artifacts pops out, I'll crop the image to show the part with artifacts
first, this works perfectly with out any artifacts
nnedi3_dh ()
fturnleft ()
nnedi3_dh ()
fturnright ()
nnedi3_dh ()
fturnleft ()
nnedi3_dh ()
fturnright ()
crop (1000,500,-1000,-1000)
result:http://thumbnails112.imagebam.com/34255/497bdd342543234.jpg (http://www.imagebam.com/image/497bdd342543234)
and with the "rpow2" function
hybrid_edi_resize16_rpow2 (vct=2,hct=2,y=true,u=true,v=true,edimode="nnedi3")
crop (1000,500,-1000,-1000)
result:http://thumbnails112.imagebam.com/34255/83facd342543192.jpg (http://www.imagebam.com/image/83facd342543192)
what the heck is this? I don't know how and why this artifacts appears, with edimode="eedi3", everything seems nice, no weird artifacts, is it a nnedi3 bug or something?
:stupid: