Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
2nd January 2005, 00:44 | #1 | Link |
Bored...
Join Date: Apr 2003
Location: Unknown
Posts: 2,812
|
SSXSharpen in realtime....
Well, its not really SSXSharpen...
But this combo looks imo 90% the same! Code:
# The plugins aSharp(0.4,0,0).aWarpsharp(3,1,bm=3,cm=0,thresh=0.99) SSXSharpen: The combo: Thanks n' Bye Last edited by Soulhunter; 4th May 2006 at 02:56. |
2nd January 2005, 01:04 | #3 | Link |
Bored...
Join Date: Apr 2003
Location: Unknown
Posts: 2,812
|
If you dont like this effect, just lower the tresh of aSharp!
Btw, if you "hack" this combo into LimitedSharpen... Code:
# LimitedSharpen # # A multi-purpose sharpener by Didée, hacked by Akirasuto n' Soulhunter... ^^ # function LimitedSharpen2( clip clp, \ float "ss_x", float "ss_y", \ int "dest_x", int "dest_y", \ int "Smode" , int "strength", int "radius", \ int "Lmode", bool "wide", int "overshoot", \ bool "soft", int "edgemode", bool "special", \ int "exborder" ) { ox = clp.width oy = clp.height ss_x = default( ss_x, 1.5 ) ss_y = default( ss_y, 1.5 ) dest_x = default( dest_x, ox ) dest_y = default( dest_y, oy ) Smode = default( Smode, 4 ) strength = Smode==1 \ ? default( strength, 160 ) \ : default( strength, 100 ) strength = Smode==2&&strength>100 ? 100 : strength radius = default( radius, 2 ) Lmode = default( Lmode, 1 ) wide = default( wide, false ) overshoot= default( overshoot, 1) overshoot= overshoot<0 ? 0 : overshoot soft = default( soft, false ) edgemode = default( edgemode, 0 ) special = default( special, false ) exborder = default( exborder, 0) xxs=round(ox*ss_x/8)*8 yys=round(oy*ss_y/8)*8 smx=exborder==0?dest_x:round(dest_x/Exborder/4)*4 smy=exborder==0?dest_y:round(dest_y/Exborder/4)*4 clp.isYV12() ? clp : clp.converttoyv12() ss_x != 1.0 || ss_y != 1.0 ? last.lanczosresize(xxs,yys) : last tmp = last edge = logic( tmp.DEdgeMask(0,255,0,255,"5 10 5 0 0 0 -5 -10 -5", divisor=2) \ ,tmp.DEdgeMask(0,255,0,255,"5 0 -5 10 0 -10 5 0 -5", divisor=2) \ ,"max").levels(0,0.86,128,0,255,false) bright_limit = (soft == true) ? tmp.blur(1.0) : tmp dark_limit = bright_limit.inpand() bright_limit = bright_limit.expand() dark_limit = (wide==false) ? dark_limit : dark_limit .inflate.deflate.inpand() bright_limit = (wide==false) ? bright_limit : bright_limit.deflate.inflate.expand() minmaxavg = special==false \ ? yv12lutxy(bright_limit,dark_limit,yexpr="x y + 2 /") \ : maskedmerge(dark_limit,bright_limit,tmp,Y=3,U=-128,V=-128) Str=string(float(strength)/100.0) normsharp = Smode==1 ? unsharpmask(strength,radius,0) \ : Smode==2 ? sharpen(float(strength)/100.0) \ : Smode==3 ? yv12lutxy(tmp,minmaxavg,yexpr="x x y - "+Str+" * +") \ : asharp(2,0,0).awarpsharp(3,1,bm=3,cm=0,thresh=0.99) OS = string(overshoot) Lmode == 1 ? yv12lutxy( bright_limit, normsharp, yexpr="y x "+OS+" + < y x "+OS+" + ?") \ : yv12lutxy( bright_limit, normsharp, yexpr="y x "+OS+" + < y x y x - "+OS+" - 1 2 / ^ + "+OS+" + ?") Lmode == 1 ? yv12lutxy( dark_limit, last, yexpr="y x "+OS+" - > y x "+OS+" - ?") \ : yv12lutxy( dark_limit, last, yexpr="y x "+OS+" - > y x x y - "+OS+" - 1 2 / ^ - "+OS+" - ?") edgemode==0 ? NOP \ : edgemode==1 \ ? MaskedMerge(tmp,last,edge.inflate.inflate.blur(1.0),Y=3,U=1,V=1) \ : MaskedMerge(last,tmp,edge.inflate.inflate.blur(1.0),Y=3,U=1,V=1) (ss_x != 1.0 || ss_y != 1.0) \ || (dest_x != ox || dest_y != oy) ? lanczosresize(dest_x,dest_y) : last ex=blankclip(last,width=smx,height=smy,color=$FFFFFF).addborders(2,2,2,2).coloryuv(levels="TV->PC") \.blur(1.3).inpand().blur(1.3).bicubicresize(dest_x,dest_y,1.0,.0) tmp=clp.lanczosresize(dest_x,dest_y) clp.isYV12() ? ( exborder==0 ? tmp.mergeluma(last) \ : maskedmerge(tmp,last,ex,Y=3,U=1,V=1) ) \ : ( exborder==0 ? tmp.mergeluma(last.converttoyuy2()) \ : tmp.mergeluma( maskedmerge(tmp.converttoyv12(),last,ex,Y=3,U=1,V=1) \ .converttoyuy2()) ) return last } # Bye Last edited by Soulhunter; 4th May 2006 at 03:15. |
2nd January 2005, 02:32 | #11 | Link | |
Bored...
Join Date: Apr 2003
Location: Unknown
Posts: 2,812
|
Quote:
LimitedSharpen2(Smode=4) But you can disable super-sampling... LimitedSharpen2(ss_x=1,ss_y=1,Smode=4) Bye Last edited by Soulhunter; 4th May 2006 at 03:01. |
|
2nd January 2005, 02:39 | #12 | Link |
Registered User
Join Date: May 2004
Posts: 288
|
Thanks!
Looks like the only real change is Smode to 4 so one could still use the full LimitedSharpen call like the following correct? LimitedSharpen2( ss_x=1.0, ss_y=1.0, \ Smode=4, strength=40, radius=2, \ Lmode=1, wide=false, overshoot=1, \ soft=false, edgemode=0, special=false, \ exborder=0 ) |
2nd January 2005, 02:47 | #13 | Link |
Bored...
Join Date: Apr 2003
Location: Unknown
Posts: 2,812
|
Yeah, you should be able to use it with all the other stuff!
Update: Code:
# aSaWLimitedSharpen # # A multi-purpose sharpener by Didée, midified by Akirasuto n' Soulhunter # function aSaWLimitedSharpen( clip clp, \ float "ss_x", float "ss_y", \ int "dest_x", int "dest_y", \ int "Smode" , int "strength", int "radius", \ int "Lmode", bool "wide", int "overshoot", \ bool "soft", int "edgemode", bool "special", \ float "aSharpS", float "aWThresh", int "exborder" ) { ox = clp.width oy = clp.height ss_x = default( ss_x, 1 ) ss_y = default( ss_y, 1 ) dest_x = default( dest_x, ox ) dest_y = default( dest_y, oy ) Smode = default( Smode, 4 ) strength = Smode==1 \ ? default( strength, 160 ) \ : default( strength, 100 ) strength = Smode==2&&strength>100 ? 100 : strength radius = default( radius, 2 ) Lmode = default( Lmode, 1 ) aSharpS = default(aSharpS, 0.5) aWThresh = default(aWThresh,0.75) wide = default( wide, false ) overshoot= default( overshoot, 1) overshoot= overshoot<0 ? 0 : overshoot soft = default( soft, false ) edgemode = default( edgemode, 0 ) special = default( special, false ) exborder = default( exborder, 0) xxs=round(ox*ss_x/8)*8 yys=round(oy*ss_y/8)*8 smx=exborder==0?dest_x:round(dest_x/Exborder/4)*4 smy=exborder==0?dest_y:round(dest_y/Exborder/4)*4 clp.isYV12() ? clp : clp.converttoyv12() ss_x != 1.0 || ss_y != 1.0 ? last.lanczosresize(xxs,yys) : last tmp = last edge = logic( tmp.DEdgeMask(0,255,0,255,"5 10 5 0 0 0 -5 -10 -5", divisor=2) \ ,tmp.DEdgeMask(0,255,0,255,"5 0 -5 10 0 -10 5 0 -5", divisor=2) \ ,"max").levels(0,0.86,128,0,255,false) bright_limit = (soft == true) ? tmp.blur(1.0) : tmp dark_limit = bright_limit.inpand() bright_limit = bright_limit.expand() dark_limit = (wide==false) ? dark_limit : dark_limit .inflate.deflate.inpand() bright_limit = (wide==false) ? bright_limit : bright_limit.deflate.inflate.expand() minmaxavg = special==false \ ? yv12lutxy(bright_limit,dark_limit,yexpr="x y + 2 /") \ : maskedmerge(dark_limit,bright_limit,tmp,Y=3,U=-128,V=-128) Str=string(float(strength)/100.0) normsharp = Smode==1 ? unsharpmask(strength,radius,0) \ : Smode==2 ? sharpen(float(strength)/100.0) \ : Smode==3 ? yv12lutxy(tmp,minmaxavg,yexpr="x x y - "+Str+" * +") \ : asharp(aSharpS,0,0).awarpsharp(3,1,bm=3,cm=0,aWThresh) OS = string(overshoot) Lmode == 1 ? yv12lutxy( bright_limit, normsharp, yexpr="y x "+OS+" + < y x "+OS+" + ?") \ : yv12lutxy( bright_limit, normsharp, yexpr="y x "+OS+" + < y x y x - "+OS+" - 1 2 / ^ + "+OS+" + ?") Lmode == 1 ? yv12lutxy( dark_limit, last, yexpr="y x "+OS+" - > y x "+OS+" - ?") \ : yv12lutxy( dark_limit, last, yexpr="y x "+OS+" - > y x x y - "+OS+" - 1 2 / ^ - "+OS+" - ?") edgemode==0 ? NOP \ : edgemode==1 \ ? MaskedMerge(tmp,last,edge.inflate.inflate.blur(1.0),Y=3,U=1,V=1) \ : MaskedMerge(last,tmp,edge.inflate.inflate.blur(1.0),Y=3,U=1,V=1) (ss_x != 1.0 || ss_y != 1.0) \ || (dest_x != ox || dest_y != oy) ? lanczosresize(dest_x,dest_y) : last ex=blankclip(last,width=smx,height=smy,color=$FFFFFF).addborders(2,2,2,2).coloryuv(levels="TV->PC") \.blur(1.3).inpand().blur(1.3).bicubicresize(dest_x,dest_y,1.0,.0) tmp=clp.lanczosresize(dest_x,dest_y) clp.isYV12() ? ( exborder==0 ? tmp.mergeluma(last) \ : maskedmerge(tmp,last,ex,Y=3,U=1,V=1) ) \ : ( exborder==0 ? tmp.mergeluma(last.converttoyuy2()) \ : tmp.mergeluma( maskedmerge(tmp.converttoyv12(),last,ex,Y=3,U=1,V=1) \ .converttoyuy2()) ) return last } # Last edited by Soulhunter; 4th May 2006 at 03:17. |
2nd January 2005, 03:13 | #14 | Link |
Registered User
Join Date: Apr 2002
Location: Germany
Posts: 5,391
|
Under investigation. Looks promising, but I have some doubts about speed advantage in LS (the currently used sharpeners by themselves aren't slow, as well ... it's the complete bunch of operations together that suck the CPU time).
And let me ask here, too: in *what* way have the used DLLs of aSharp and aWarpSharp been modified? To know what's actually going on would help on further improvement ... after all, LimitedSharpenEX gets closer to completion - but perhaps a few days more would be beneficial
__________________
- We´re at the beginning of the end of mankind´s childhood - My little flickr gallery. (Yes indeed, I do have hobbies other than digital video!) |
2nd January 2005, 03:29 | #16 | Link |
Registered User
Join Date: Apr 2002
Location: Germany
Posts: 5,391
|
I heard a rumour those DLLs were "slightly modified". But looking at the file dates, and remembering that MarcFD wasn't the busyiest with releasing sources ...
Soulhunter?
__________________
- We´re at the beginning of the end of mankind´s childhood - My little flickr gallery. (Yes indeed, I do have hobbies other than digital video!) |
2nd January 2005, 03:37 | #17 | Link | ||
Bored...
Join Date: Apr 2003
Location: Unknown
Posts: 2,812
|
Quote:
And getting SSXS a'like results in realtime is enough for me! Quote:
IIRC it was about "finer precision" or something like this!? Bye Last edited by Soulhunter; 4th May 2006 at 03:02. |
||
2nd January 2005, 12:33 | #18 | Link | |
ffdshow/AviSynth wrangler
Join Date: Feb 2003
Location: Austria
Posts: 2,441
|
Quote:
One can dream, right? np: Autechre - Lowride (Incunabula) |
|
2nd January 2005, 14:54 | #19 | Link |
Registered User
Join Date: Jan 2002
Posts: 76
|
He didn't reversed engineered awarpsharp since he made awarpsharp to begin with ^_~
The modified awarpsharp does a shock filtering and the asharp to do real sharpening, iirc. I could be wrong, though ^^; Edit: Oops, I was corrected... wrong person. Last edited by AS; 2nd January 2005 at 16:42. |
Thread Tools | Search this Thread |
Display Modes | |
|
|