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. |
![]() |
#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. |
![]() |
![]() |
![]() |
#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. |
![]() |
![]() |
![]() |
#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. |
|
![]() |
![]() |
![]() |
#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 ) |
![]() |
![]() |
![]() |
#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. |
![]() |
![]() |
![]() |
#14 | Link |
Registered User
Join Date: Apr 2002
Location: Germany
Posts: 5,390
|
Under investigation. Looks promising, but I have some doubts
![]() 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!) |
![]() |
![]() |
![]() |
#16 | Link |
Registered User
Join Date: Apr 2002
Location: Germany
Posts: 5,390
|
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!) |
![]() |
![]() |
![]() |
#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. |
||
![]() |
![]() |
![]() |
#18 | Link | |
ffdshow/AviSynth wrangler
Join Date: Feb 2003
Location: Austria
Posts: 2,441
|
Quote:
![]() ![]() One can dream, right? ![]() np: Autechre - Lowride (Incunabula) |
|
![]() |
![]() |
![]() |
#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 | |
|
|