Darth Tater said:
I think it looks good so far, You_too! Is there any way a newbie like me with a digital copy of the GOUT discs can apply these settings and watch at home, either in advance or on the fly? Free is the key here. :)
You could apply the settings and watch through an avisynth script in your computer, but it requires some plugins as well.
Plugins used are MVTools or MVTools 2, (I don't remember which one but you could get both to be sure it will work) Gicocu and Selective color. (Once again a huge thanks to Darth Editous for the selective color plugin!)
If you use the raw video of Star Wars, then it's in mpeg2 and needs to be indexed, which can be done in file indexer in Megui. That will create the d2v file that the script uses.
For Gicocu you'll need my curves files which you put in the same folder as the movie, d2v file and script.
And finally, here's the script which is for the PAL-version. For NTSC you'd have to use different values for crop.
UPDATE: Two scripts, first one for SW, second for ESB and ROTJ.
Mpeg2Source("GOUT.d2v")
crop( 0, 124, 0, -124)
ConvertToYV12()
function SatMask(clip c, "Sat", float "bias", string "mode", clip "Rc", bool "lsb", bool "show"){
bias = string(default(bias, 5))
mode = string(default(mode, "Vibrance"))
lsb = default(lsb, false)
show = default(show, false)
lsb ? c.ditherpost(mode=6) : c
w=width()
h=height()
Assert(isclip(Sat) || isint(Sat) || isfloat(Sat), "'Sat' only accepts float, integers or clip inputs")
Assert(w%4 == 0, "width and height must be mod 4 resolution")
Assert(h%4 == 0, "width and height must be mod 4 resolution")
fmode = isclip(Sat) ? false : (Sat>0.0 ? true : false)
a= mode=="Recover" ? mt_lutxy(Vtoy(Rc),Utoy(Rc),"x 128 - 2 ^ y 128 - 2 ^ + .5 ^ 128 > 255 x 128 - 2 ^ y 128 - 2 ^ + .5 ^ "+bias+" * ?",u=1,v=1) : nop
b= !fmode || show || mode=="Recover" ? mt_lutxy(Vtoy(),Utoy(), "x 128 - 2 ^ y 128 - 2 ^ + .5 ^ 128 > 255 x 128 - 2 ^ y 128 - 2 ^ + .5 ^ "+bias+" * ?",u=1,v=1) : nop
msk = !fmode || show ? ((mode=="Vibrance") ? mt_lutxy(Vtoy(),Utoy(),"x 128 - 2 ^ y 128 - 2 ^ + .5 ^ 128 > 0 128 x 128 - 2 ^ y 128 - 2 ^ + .5 ^ - 128 / "+bias+" ^ 255 * ? ",u=1,v=1) : \
(mode=="Dullness") ? b : \
(mode=="Recover") ? mt_lutxy(a,b,"x y - abs 2 *",u=-128,v=-128) : \
Assert(false, "Wrong Saturation Mode")) : nop
show ? (lsb ? msk.Spline36Resize(w,h).Dither_convert_8_to_16() :\
msk.Spline36Resize(w,h)) :\
(Defined(Sat) || fmode ? \
((mode=="Vibrance") ? \
(lsb ? (fmode ? mergeluma(Dither_lutxy8(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ + .5 ^ 256 * 32768 > x 256 * "+
\+" x 128 - 128 x 128 - 2 ^ y 128 - 2 ^ + .5 ^ - 128 / "+bias+" ^ "+string(sat-1)+
\+" * 1 + * 128 + 256 * ?",y=2,u=3,v=3),c) :\
Dither_merge16(c,Sat,YToUV(msk,msk).Dither_convert_8_to_16,y=4)) :\
(fmode ? mt_lutxy(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ + .5 ^ 128 > x "+
\+" x 128 - 128 x 128 - 2 ^ y 128 - 2 ^ + .5 ^ - 128 / "+bias+" ^ "+string(sat-1)+
\+" * 1 + * 128 + ?",y=2,u=3,v=3) :\
mt_merge(Sat,YToUV(msk,msk),y=4,u=3,v=3))) :\
(mode=="Dullness") ? \
(lsb ? (fmode ? mergeluma(Dither_lutxy8(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ + .5 ^ 256 * 32768 > x 256 * "+
\+" x 128 - x 128 - 2 ^ y 128 - 2 ^ + .5 ^ "+string(sat-1)+
\+" * "+bias+" / 1 + / 128 + 256 * ?",y=2,u=3,v=3),c) :\
Dither_merge16(c,Sat,YToUV(msk,msk).Dither_convert_8_to_16,y=4)) :\
(fmode ? mt_lutxy(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ + .5 ^ 128 > x "+
\+" x 128 - x 128 - 2 ^ y 128 - 2 ^ + .5 ^ "+string(sat-1)+
\+" * "+bias+" / 1 + / 128 + ?",y=2,u=3,v=3) :\
mt_merge(Sat,YToUV(msk,msk),y=4,u=3,v=3))) :\
(mode=="Recover") ? \
(lsb ? (fmode ? mergeluma(Dither_lutxy8(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ + .5 ^ 256 * 32768 > x 256 * "+
\+" x 128 - 128 x 128 - 2 ^ y 128 - 2 ^ + .5 ^ - 128 / "+bias+" ^ "+string(sat-1)+
\+" * 1 + * 128 + 256 * ?",y=2,u=3,v=3),c) :\
Dither_merge16(c,Sat,YToUV(msk,msk).Dither_convert_8_to_16,y=4)) :\
(fmode ? mt_lutxy(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ + .5 ^ 128 > x "+
\+" x 128 - 128 x 128 - 2 ^ y 128 - 2 ^ + .5 ^ - 128 / "+bias+" ^ "+string(sat-1)+
\+" * 1 + * 128 + ?",y=2,u=3,v=3) :\
mt_merge(Sat,YToUV(msk,msk),y=4,u=3,v=3))): nop ) : c)}
Tweak(hue=-5)
SatMask(Sat=2.25)
ConvertToRGB32()
GiCoCu("GOUT.cur")
selectivecolour(last,\
0.65,0,0,\
-0.35,0.10,-0.05,\
0,0.75,-0.05,\
0,0,0,\
0,0,0.75,\
-0.25,0,0,\
false)
GiCoCu("GOUT3.cur")
GiCoCu("GOUT5.cur")
GiCoCu("GOUT8.cur")
GiCoCu("GOUT9.cur")
ConvertToYV12()
crop( 0, 0, 0, -2)
BicubicResize(768,326,0,0.5) # Bicubic (Neutral)
Mpeg2Source("ESB.d2v")
crop( 0, 124, 0, -124)
ConvertToYV12()
function SatMask(clip c, "Sat", float "bias", string "mode", clip "Rc", bool "lsb", bool "show"){
bias = string(default(bias, 5))
mode = string(default(mode, "Vibrance"))
lsb = default(lsb, false)
show = default(show, false)
lsb ? c.ditherpost(mode=6) : c
w=width()
h=height()
Assert(isclip(Sat) || isint(Sat) || isfloat(Sat), "'Sat' only accepts float, integers or clip inputs")
Assert(w%4 == 0, "width and height must be mod 4 resolution")
Assert(h%4 == 0, "width and height must be mod 4 resolution")
fmode = isclip(Sat) ? false : (Sat>0.0 ? true : false)
a= mode=="Recover" ? mt_lutxy(Vtoy(Rc),Utoy(Rc),"x 128 - 2 ^ y 128 - 2 ^ + .5 ^ 128 > 255 x 128 - 2 ^ y 128 - 2 ^ + .5 ^ "+bias+" * ?",u=1,v=1) : nop
b= !fmode || show || mode=="Recover" ? mt_lutxy(Vtoy(),Utoy(), "x 128 - 2 ^ y 128 - 2 ^ + .5 ^ 128 > 255 x 128 - 2 ^ y 128 - 2 ^ + .5 ^ "+bias+" * ?",u=1,v=1) : nop
msk = !fmode || show ? ((mode=="Vibrance") ? mt_lutxy(Vtoy(),Utoy(),"x 128 - 2 ^ y 128 - 2 ^ + .5 ^ 128 > 0 128 x 128 - 2 ^ y 128 - 2 ^ + .5 ^ - 128 / "+bias+" ^ 255 * ? ",u=1,v=1) : \
(mode=="Dullness") ? b : \
(mode=="Recover") ? mt_lutxy(a,b,"x y - abs 2 *",u=-128,v=-128) : \
Assert(false, "Wrong Saturation Mode")) : nop
show ? (lsb ? msk.Spline36Resize(w,h).Dither_convert_8_to_16() :\
msk.Spline36Resize(w,h)) :\
(Defined(Sat) || fmode ? \
((mode=="Vibrance") ? \
(lsb ? (fmode ? mergeluma(Dither_lutxy8(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ + .5 ^ 256 * 32768 > x 256 * "+
\+" x 128 - 128 x 128 - 2 ^ y 128 - 2 ^ + .5 ^ - 128 / "+bias+" ^ "+string(sat-1)+
\+" * 1 + * 128 + 256 * ?",y=2,u=3,v=3),c) :\
Dither_merge16(c,Sat,YToUV(msk,msk).Dither_convert_8_to_16,y=4)) :\
(fmode ? mt_lutxy(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ + .5 ^ 128 > x "+
\+" x 128 - 128 x 128 - 2 ^ y 128 - 2 ^ + .5 ^ - 128 / "+bias+" ^ "+string(sat-1)+
\+" * 1 + * 128 + ?",y=2,u=3,v=3) :\
mt_merge(Sat,YToUV(msk,msk),y=4,u=3,v=3))) :\
(mode=="Dullness") ? \
(lsb ? (fmode ? mergeluma(Dither_lutxy8(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ + .5 ^ 256 * 32768 > x 256 * "+
\+" x 128 - x 128 - 2 ^ y 128 - 2 ^ + .5 ^ "+string(sat-1)+
\+" * "+bias+" / 1 + / 128 + 256 * ?",y=2,u=3,v=3),c) :\
Dither_merge16(c,Sat,YToUV(msk,msk).Dither_convert_8_to_16,y=4)) :\
(fmode ? mt_lutxy(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ + .5 ^ 128 > x "+
\+" x 128 - x 128 - 2 ^ y 128 - 2 ^ + .5 ^ "+string(sat-1)+
\+" * "+bias+" / 1 + / 128 + ?",y=2,u=3,v=3) :\
mt_merge(Sat,YToUV(msk,msk),y=4,u=3,v=3))) :\
(mode=="Recover") ? \
(lsb ? (fmode ? mergeluma(Dither_lutxy8(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ + .5 ^ 256 * 32768 > x 256 * "+
\+" x 128 - 128 x 128 - 2 ^ y 128 - 2 ^ + .5 ^ - 128 / "+bias+" ^ "+string(sat-1)+
\+" * 1 + * 128 + 256 * ?",y=2,u=3,v=3),c) :\
Dither_merge16(c,Sat,YToUV(msk,msk).Dither_convert_8_to_16,y=4)) :\
(fmode ? mt_lutxy(SwapUV(),"x 128 - 2 ^ y 128 - 2 ^ + .5 ^ 128 > x "+
\+" x 128 - 128 x 128 - 2 ^ y 128 - 2 ^ + .5 ^ - 128 / "+bias+" ^ "+string(sat-1)+
\+" * 1 + * 128 + ?",y=2,u=3,v=3) :\
mt_merge(Sat,YToUV(msk,msk),y=4,u=3,v=3))): nop ) : c)}
Tweak(hue=-5)
SatMask(Sat=1.75)
ConvertToRGB32()
GiCoCu("GOUT.cur")
selectivecolour(last,\
0.65,0,0,\
-0.35,0.10,-0.05,\
0,0.75,-0.05,\
0,0,0,\
0,0,0.75,\
-0.25,0,0,\
false)
GiCoCu("GOUT3.cur")
GiCoCu("GOUT5.cur")
GiCoCu("GOUT8.cur")
GiCoCu("GOUT9.cur")
ConvertToYV12()
crop( 0, 0, 0, -2)
BicubicResize(768,326,0,0.5) # Bicubic (Neutral)