logo Sign In

Post #478979

Author
althor1138
Parent topic
2006 SE/GOUT hybrid script project - UPDATE: 05-24-11 see 1st & 2nd post...
Link to post in topic
https://originaltrilogy.com/post/id/478979/action/topic#478979
Date created
28-Feb-2011, 4:28 PM
#Enter paths to GOUT and SE
sw0=mpeg2source("**PATH TO SW GOUT**.d2v")
swse=mpeg2source("**PATH TO SW SE**.d2v").trim(711,0).crop(0,56,-2,-60).spline64resize(720,366)
sw=sw0.crop(8,102,-2,-104).spline64resize(720,366)
swca=sw.trim(689,0).VagueDenoiser(threshold=3,chromat=10,method=1, interlaced=false, wiener=true).tweak(hue=-6.5,sat=1.4).ylevels(12,1,255,0,255)
swwa=sw0.trim(689,0).crop(4,102,-2,-104).spline64resize(720,366).VagueDenoiser(threshold=3,chromat=10,method=1, interlaced=false, wiener=true).tweak(hue=-6.5,sat=1.4).ylevels(12,1,255,0,255)
blank=swca.blankclip()
swoc=sw.trim(689,0)

#opening titles which will be reinserted at the beginning after editing

fanfare=sw.trim(0,265).spline64resize(720,366)
lfa=blank.Subtitle("A",-1,145,0,200,"zurich bold",39,$32CD32,font_width=14)
lfll=blank.subtitle("LUCASFILM  LIMITED", -1,219,0,200,"zurich bold",58,$32cd32,font_width=21.6,spc=-14)
lfllmask=lfll.converttorgb32().colorkeymask($000000,10)
lfp=blank.subtitle("Production",-1,266,0,200,"zurich bold",38,$32cd32,font_width=13.5,spc=3)
lfpmask=lfp.converttorgb32().colorkeymask($000000,10)
lfovr0=overlay(lfa,lfll,mode="blend",mask=lfllmask.showalpha(),opacity=1)
lfovr1=overlay(lfovr0,lfp,mask=lfpmask.showalpha(),mode="blend",opacity=1).levels(16,1,145,0,255).trim(0,189).fadeio(12)
lucasfilm=lfovr1 ++ blank.trim(0,8)
alta1=blank.subtitle("A  long  time  ago  in  a  galaxy  far,",-1,-1,0,221,"Franklin Gothic book",52,$002061,font_width=16.1,spc=-14)
alta2=blank.subtitle("far away. . . .",111,188,0,221,"Franklin Gothic book",49,$002061,font_width=15.5,spc=-14)
alta2mask=alta2.converttorgb32().colorkeymask($000000,0)
alta3=overlay(alta1,alta2,mask=alta2mask.showalpha(),mode="blend",opacity=1).levels(16,1,65,0,255).trim(0,130).fadeio(12).blur(0.8)
alta=blank.trim(0,42) ++ alta3 ++ blank.trim(175,220)
optitle=fanfare ++ lucasfilm ++ alta


#Edit the special edition dvd to match the gout dvd frame for frame

swse1=swse.trim(0,15648) ++swse.trim(15669,0)
swse2=swse1.trim(0,21123) ++swse1.trim(21503,0)
swse3=swse2.trim(0,21600) ++ swse2.trim(21701,0)
swse4=swse3.trim(0,57790) ++ swse3.trim(57815,0)
swse5=swse4.trim(0,60434) ++ swse4.trim(61027,0)
swse6=swse5.trim(0,60499) ++ swse5.trim(60521,0)
swse7=swse6.trim(0,61452) ++ swse6.trim(61574,0)
swse8=swse7.trim(0,71278) ++ swse7.trim(71289,0)
swse9=swse8.trim(0,73845) ++ swse8.trim(76076,0)
swse10=swse9.trim(0,74228) ++ swse9.trim(74250,0)
swse11=swse10.trim(0,75798) ++ swse10.trim(75877,0)
swse12=swse11.deleteframe(143364)
swse13=swse12.trim(0,144345) ++ swse12.trim(144971,0)
swse14=swse13.duplicateframe(144395,144395,144395,144395,144395,144395,144395,144395)

#Merge chroma information from GOUT to SE
clip1=swse14.ylevels(0,1,250,0,255)
clip2=swwa
sehdr=swse14.ylevels(0,1,250,0,255).hdragc(avg_lum=20,max_gain=0.8,min_gain=0,coef_gain=1.0,max_sat=1.0,min_sat=1.0,protect=0,corrector=0.6,avg_window=48,debug=0)
wa1=ScriptClip(clip1, "ColorYUV(off_u=(averagechromau(clip2)-averagechromau(clip1)),off_v=(averagechromav(clip2)-averagechromav(clip1)))")
wa=wa1.hdragc(avg_lum=20,max_gain=0.8,min_gain=0,coef_gain=1,max_sat=1.0,min_sat=1.0,protect=0,corrector=0.6,avg_window=48,debug=0)
#wa=ScriptClip(clip1, "ColorYUV(off_y=(averageluma(clip2)-averageluma(clip1)),off_u=(averagechromau(clip2)-averagechromau(clip1)),off_v=(averagechromav(clip2)-averagechromav(clip1)))")

col = interleave(swca,swse14,blank).depan(subpixel=2,pixaspect=1.0,inputlog="**PATH TO DESHAKER**.log").selectevery(3,0)
bw = swse14

colw = col.Width()
colh = col.Height()
bww = bw.Width()
bwh = bw.Height()
borw = (bww-colw)/2
borh = (bwh-colh)/2
col = col.AddBorders((720-col.Width)/2, (366-col.Height)/2, (720-col.Width)/2, (366-col.Height)/2, color=$000000)
bwp = bw.AddBorders((720-bw.Width)/2, (366-bw.Height)/2, (720-bw.Width)/2, (366-bw.Height)/2, color=$000000)
int = Interleave(bwp,col)
estnz = int.depanestimate(range=1,pixaspect=1,zoommax=1,improve=false,trust=0)
estz = int.depanestimate(range=1,pixaspect=1,zoommax=2,improve=false,trust=0)
depnz = int.depaninterleave(estnz,pixaspect=1,prev=0,next=1,subpixel=2,mirror=15,blur=0)
depz = int.depaninterleave(estz,pixaspect=1,prev=0,next=1,subpixel=2,mirror=15,blur=0)
nz=depnz.selectevery(4,1)
zoom= depz.SelectEvery(4, 1)
nzmask=colorkeymask(nz.converttorgb32(),$000000,5)
zoommask=colorkeymask(zoom.converttorgb32(),$000000,5)
senz=overlay(wa,nz,mode="chroma",greymask=true,opacity=1)
sez=overlay(wa,zoom,mode="chroma",greymask=true,opacity=1)
t=overlay(swse14,nz,mode="difference",greymask=true,opacity=1)
t1=overlay(swse14,zoom,mode="difference",greymask=true,opacity=1)
mal=overlay(swse14,nz,mode="chroma",opacity=1,x=10)

#Delete unusable footage from special edition and replace with gout footage
se=senz
gout=swca
wipe1=DissolveAGGna(wa.trim(45645,45668), gout.trim(45645,45668), 23, "bottomtotop", 3, 50, 50).deleteframe(0,25)
wipe2=Dissolveaggna(wa.trim(60361,60383), gout.trim(60368,60390), 22, "righttoleft", 4, 50, 50).deleteframe(0,25)
wipe3=Dissolveaggna(wa.trim(66474,66512), gout.trim(66474,66512), 38, "righttoleft", 3, 40, 40).deleteframe(0,41)
#wipe1=sehdr.trim(45645,45668)
edit=gout.trim(0,2833) ++ wa.trim(2834,6331) ++ se.trim(6332,6438) ++ se.trim(6439,9441) ++ sez.trim(9442,9513) ++ se.trim(9514,9548) \
++ wa.trim(9549,9681) ++ se.trim(9682,9911) ++ swse14.trim(9912,10059) ++ se.trim(10060,10236) ++ sez.trim(10237,10241) ++ se.trim(10242,11073) \
++ sez.trim(11074,11593) ++ se.trim(11594,11986) ++ wa.trim(11987,12444) ++ se.trim(12445,14059)  ++ gout.trim(14060,14853) ++ se.trim( 14854,15232) \
++ gout.trim(15233,15284) ++ se.trim(15285,15449) ++ gout.trim(15450,15734) ++ se.trim(15735,17611) ++sez.trim(17612,17656) ++se.trim(17657,18190) \
++ gout.trim(18191,18352) ++ se.trim(18353,18696) ++ sez.trim(18697,19199) ++ se.trim(19200,20887) ++ gout.trim(20888,21600) ++ se.trim(21601,22604) \
++ mal.trim(22605,22618) ++ se.trim(22619,22871) ++sez.trim(22872,22872) ++ se.trim(22873,23008) ++ gout.trim(23009,23116) ++ se.trim(23117,35566) \
++sez.trim(35567,35903) ++se.trim(35904,35987) ++ gout.trim(35988,36095) ++ se.trim(36096,37108) ++ sez.trim(37109,37109) ++ se.trim(37110,37950) \
++blank.trim(37951,37970) ++ se.trim(37971,38752) ++ wa.trim(38753,38958) ++ se.trim(38959,45574) ++ wa.trim(45575,45644) ++ wipe1 ++ gout.trim(45669,45757) ++ se.trim(45758,49722) \
++ gout.trim(49723,49827) ++ se.trim(49828,49901) ++ gout.trim(49902,50051) ++ se.trim(50052,59788) ++ wa.trim(59789,60070) ++ gout.trim(60071,60189) \
++ wa.trim(60190,60360) ++ wipe2 ++ gout.trim(60391,60499).duplicateframe(1,1,1,1,1,1,1) \
++ se.trim(60500,60579) ++ gout.trim(60580,60867) ++ se.trim(60868,60996) ++ gout.trim(60997,61055) ++ se.trim(61056,61364) ++gout.trim(61365,61888) \
++ se.trim(61889,62077) ++ gout.trim(62078,62129) ++ se.trim(62130,62290) ++ gout.trim(62291,62599) ++ sez.trim(62600,62762) ++ mal.trim(62763,62814) \
++ gout.trim(62815,62893) ++se.trim(62894,64016) ++ sez.trim(64017,64020) ++ se.trim(64021,64569) ++ gout.trim(64570,64654) ++ se.trim(64655,65646) \
++ wa.trim(65647,65664) ++ se.trim(65665,66086) ++ wa.trim(66087,66473) ++ wipe3 ++ gout.trim(66513,66659) ++ se.trim(66660,67928) ++ sez.trim(67929,68129) ++ se.trim(68130,68530) \
++ sez.trim(68531,69280) ++ se.trim(69281,70244) ++ sez.trim(70245,71244) ++ gout.trim(71245,71287) ++ se.trim(71288,71862) ++ sez.trim(71863,72509) \
++ se.trim(72510,72540) ++ gout.trim(72541,72778) ++ se.trim(72779,73649) ++ gout.trim(73650,74459) ++ se.trim(74460,75395) ++ wa.trim(75396,75592) \
++ se.trim(75593,75798) ++ gout.trim(75799,75901) ++ se.trim(75902,80466) ++ sez.trim(80467,80798) ++ se.trim(80799,80816) ++ gout.trim(80817,80917) \
++ se.trim(80918,89778) ++ wa.trim(89779,89876) ++ se.trim(89877,90588) ++ gout.trim(90589,90710) ++ se.trim(90711,91564) ++ sez.trim(91565,94508) \
++ wa.trim(94509,94654) ++ se.trim(94655,94723) ++ se.trim(94724,94737) ++ gout.trim(94738,94777) ++ se.trim(94778,101538) ++ sez.trim(101539,102339) \
++ se.trim(102340,102368) ++ sez.trim(102369,102491) ++ wa.trim(102492,103076) ++ gout.trim( 103077,103104) ++ wa.trim(103105,106746) \
++ sez.trim(106747,106783) ++ se.trim(106784,106785) ++ sez.trim(106786,106832) ++ wa.trim(106833,107792) ++ sez.trim(107793,108124) \
++ wa.trim(108125,109604) ++ se.trim(109605,109635) ++ sez.trim(109636,109872) ++ se.trim(109873,110009) ++ sez.trim(110010,110345) \
++ se.trim(110346,110430) ++ sez.trim(110431,111114) ++ se.trim(111115,111243) ++ gout.trim(111244,111315) ++ sez.trim(111316,113046) \
++ se.trim(113047,113049) ++ sez.trim(113050,113542) ++ se.trim(113543,113543) ++ sez.trim(113544,113650) ++ se.trim(113651,113667) \
++ sez.trim(113668,114107) ++ wa.trim(114108,114173) ++ se.trim(114174,114488) ++ sez.trim(114489,114608) ++ se.trim(114609,114610) \
++ sez.trim(114611,114960) ++ wa.trim(114961,115299) ++ sez.trim(115300,115400) ++ se.trim(115401,115403) ++ sez.trim(115404,115785) \
++ se.trim(115786,115791) ++ sez.trim(115792,115857) ++ se.trim(115858,116068) ++ sez.trim(116069,117243) ++ se.trim(117244,117253) \
++ sez.trim(117254,117334) ++ se.trim(117335,118975) ++ sez.trim(118976,119007) ++gout.trim(119008,119078) ++ se.trim(119079,120169) \
++ sez.trim(120170,120556) ++ se.trim(120557,121043) ++ gout.trim(121044,121118) ++sez.trim(121119,121222) ++ gout.trim(121223,121263) \
++ se.trim(121264,121873) ++ gout.trim(121874,121920) ++ se.trim(121921,122115) ++ sez.trim(122116,122450) ++ se.trim(122451,123197) \
++ sez.trim(123198,123615) ++ se.trim(123616,123631) ++ wa.trim(123632,123716) ++ se.trim(123717,124398) ++ sez.trim(124399,124416) \
++ se.trim(124417,124527) ++ sez.trim(124528,124779) ++ se.trim(124780,124883) ++ sez.trim(124884,124944) ++ se.trim(124945,124947) \
++ sez.trim(124948,125585) ++ se.trim(125586,125650) ++ wa.trim(125651,125727) ++ se.trim(125728,127228) ++ wa.trim(127229,127261) \
++ se.trim(127262,128343) ++ sez.trim(128344,128456) ++ se.trim(128457,128533) ++ wa.trim(128534,128568) ++ se.trim(128569,129476) \
++ sez.trim(129477,129704) ++ wa.trim(129705,129891) ++ se.trim(129892,130290) ++ sez.trim(130291,131619) ++ wa.trim(131620,131654) \
++ sez.trim(131655,132095) ++ wa.trim(132096,132125) ++ sez.trim(132126,133730) ++ wa.trim(133731,133750) ++ sez.trim(133751,134670) \
++ se.trim(134671,134716) ++ sez.trim(134717,134725) ++ se.trim(134726,134938) ++ sez.trim(134939,135897) ++ se.trim(135898,136875) \
++ gout.trim(136876,137155) ++ se.trim(137156,137343) ++ gout.trim(137344,137589) ++ se.trim(137590,138360) ++ wa.trim(138361,138534) \
++ se.trim(138535,138646) ++ gout.trim(138647,138922) ++ wa.trim(138923,139156) ++ sez.trim(139157,140294) ++ se.trim(140295,140520) \
++ sez.trim(140521,142268) ++ se.trim(142269,142893) ++ sez.trim(142894,144092) ++ gout.trim(144093,144345) ++ wa.trim(144346,144403) \
++ sez.trim(144404,145150) ++ se.trim(145151,146228) ++ gout.trim(146229,146355) ++ se.trim(146356,146661) ++ gout.trim(146662,146919) \
++ se.trim(146920,147277) ++ gout.trim(147278,147377) ++ se.trim(147378,148016) ++ gout.trim(148017,148168) ++ se.trim(148169,148208) \
++ gout.trim(148209,148360) ++ se.trim(148361,148789) ++ gout.trim( 148790,148833) ++ se.trim(148834,148919) ++ sez.trim(148920,148981) \
++ se.trim(148982,148985) ++ sez.trim(148986,149353) ++ se.trim(149354,149896) ++ sez.trim(149897,149967) ++ gout.trim(149968,150014) \
++ se.trim(150015,150294) ++ sez.trim(150295,150652) ++ gout.trim(150653,150698) ++ sez.trim( 150699,150897) ++ gout.trim(150898,150943) \
++ se.trim(150944,150986) ++ gout.trim(150987,151025) ++ sez.trim(151026,151051) ++ gout.trim(151052,151105) ++ sez.trim(151106,151170) \
++ gout.trim(151171,151208) ++ sez.trim(151209,152098) ++ gout.trim(152099,152193) ++ sez.trim(152194,152231) ++ gout.trim(152232,152258) \
++ sez.trim(152259,152348) ++ gout.trim(152349,152382) ++ sez.trim(152383,152440) ++ gout.trim(152441,152514) ++ sez.trim(152515,154726) \
++ wa.trim(154727,154772) ++ sez.trim(154773,154810) ++ se.trim(154811,154811) ++ sez.trim(154812,154966) ++ se.trim(154967,154967) \
++ sez.trim(154968,155453) ++ se.trim(155454,155456) ++ sez.trim(155457,155906) ++ se.trim(155907,155910) ++ gout.trim(155911,156001) \
++ sez.trim(156002,156317) ++ se.trim(156318,157440) ++ gout.trim(157441,157475) ++ se.trim(157476,157971) ++ wa.trim(157972,158008) \
++ se.trim(158009,160821) ++ wa.trim(160822,160861) ++ se.trim(160862,162565) ++ sez.trim(162566,162728) ++ se.trim(162729,163429) \
++ gout.trim(163430,163466) ++ se.trim(163467,163746) ++ gout.trim(163747,163802) ++ se.trim(163803,163845) ++ gout.trim(163846,164094) \
++ sez.trim(164095,165550) ++ wa.trim(165551,165652) ++ sez.trim(165653,165972) ++ wa.trim(165973,166116) ++ sez.trim(166117,168075) \
++ zoom.trim(168076,168087) ++ gout.trim(168088,0)

#merge splices / add opening titles(20th century fox,lucasfilm,long time ago...)

mrg=optitle ++ edit

#add borders so that resolution is 720x480

final=mrg.addborders(0,57,0,57)

#test
s1=stackhorizontal(swca.subtitle("GOUT colors altered",-1,size=26),t.subtitle("difference no zoom",-1,size=26),swse14.subtitle("SE",-1,size=26))
s2=stackhorizontal(edit.subtitle("Hybrid w/ altered colors from GOUT",-1,size=26),swoc.subtitle("GOUT orig. colors",-1,size=26),wa.subtitle("weighted average",-1,size=26))

sv=stackvertical(s1,s2)

#output

return(final)

Function DissolveAGGna(clip a, clip b, int "Duration", string "Mode", float "WindowSize", float "MaskSharpnessStart", float "MaskSharpnessEnd")
{
    #Set Defaults
    Duration=Default(Duration,30)
    width=a.width()
    height=a.height()
    Mode=Default(Mode, "LeftToRight")
    MaskSharpnessStart=Default(MaskSharpnessStart, 50.0)
    MaskSharpnessEnd=Default(MaskSharpnessEnd, 50.0)
    WindowSize=Default(WindowSize, 2.0)
       
    #Duration=Int(Duration/2.0*((2.0-WindowSize)*0.1+2.0))
   
    #Check Input
    Assert(Mode=="LeftToRight" || Mode=="RightToLeft" || Mode=="TopToBottom" || Mode=="BottomToTop",
    \"DissolveAGG: Only Four Modes are possible: LeftToRight, RightToLeft, TopToBotoom BottomToTop. Mode=" + Mode)
   
    #Set Parameters
    EvalString = Mode=="LeftToRight"? "BlankWidth=Int(4/2*WindowSize)
    BlankHeight=height
    startX1=BlankWidth + 0.5
    endX1=1.5
    startY1=0
    endY1=0
    x2=WindowSize*2-2
    y2=0
    ClipLeft=b
    ClipRight=a" : Mode=="RightToLeft"? "BlankWidth=Int(4/2*WindowSize)
    BlankHeight=height
    startX1=1.5
    endX1=BlankWidth + 0.5
    startY1=0
    endY1=0
    x2=WindowSize*2-2
    y2=0
    ClipLeft=a
    ClipRight=b" : Mode=="TopToBottom"? "BlankWidth=height
    BlankHeight=Int(6/2*WindowSize)
    startX1=0
    endX1=0
    startY1=BlankHeight + 0.5
    endY1=3.5
    x2=0
    y2=WindowSize*2-2
    ClipLeft=b
    ClipRight=a" : Mode=="BottomToTop"? "BlankWidth=height
    BlankHeight=Int(6/2*WindowSize)
    startX1=0
    endX1=0
    startY1=3.5
    endY1=BlankHeight + 0.5
    x2=0
    y2=WindowSize*3-4
    ClipLeft=a
    ClipRight=b" : ""
    Eval(EvalString)

    #Make Mask
    BlackBar = BlankClip(a, length=Duration+1, width=BlankWidth, height=BlankHeight, pixel_type="RGB32", fps=a.Framerate())
    WhiteBar = BlankClip(BlackBar, color=$FFFFFF)
    BWmask = Mode=="LeftToRight" || Mode=="RightToLeft" ? StackHorizontal(BlackBar,WhiteBar) : StackVertical(BlackBar,WhiteBar)
    BWmask = BWmask.Animate(0,Duration,"GaussResize",
    \ width, height, startX1, startY1, x2, y2, MaskSharpnessStart,
    \ width, height, endX1, endY1, x2, y2, MaskSharpnessEnd)
   
    #Glue it together
    Trim(a, 0, FrameCount(a)-Duration-2)
    last + Overlay(Trim(ClipLeft, 0, Duration), Trim(ClipRight, FrameCount(ClipRight)-Duration-1, 0), mask=BWmask, pc_range=True)
    last + Trim(b, Duration+1, 0)
   
}



__END__