Skip to content

Instantly share code, notes, and snippets.

@line0
Last active December 29, 2015 11:49
Show Gist options
  • Save line0/7666164 to your computer and use it in GitHub Desktop.
Save line0/7666164 to your computer and use it in GitHub Desktop.
converts RGB48YV12 to RGB48Y
function RGB48YV12toRGB48Y(clip c)
{
vers = VersionNumber()
tPref = IsFunction("FTurnLeft") ? "F" : ""
w = c.Width
h = c.Height
y = (vers < 2.60) ? c : c.ConvertToY8()
u = (vers < 2.60) ? c.UtoY() : c.UtoY8()
v = (vers < 2.60) ? c.VtoY() : c.VtoY8()
StackVertical(u,v).SeparateFields()
StackVertical(y,StackHorizontal(SelectEven(),SelectOdd()))
m = PointResize(w, h*2).SeparateFields()
m0 = m.SelectOdd().AssumeFrameBased().SeparateFields()
m1 = m.SelectEven().AssumeFrameBased().SeparateFields()
o = m0.SelectOdd()
q = m0.SelectEven()
p = m1.SelectEven()
StackHorizontal(o,p,q)
(vers < 2.60) ? eval(tPref+"""TurnRight().AssumeFrameBased().SeparateFields()
StackHorizontal(SelectOdd(),SelectEven())
m = PointResize(h,w*2).AssumeFrameBased().SeparateFields()
m0 = m.SelectEven().AssumeFrameBased().AssumeTFF().SeparateFields().""" + tPref + """TurnLeft()
m1 = m.SelectOdd().AssumeFrameBased().AssumeTFF().SeparateFields().""" + tPref + "TurnLeft()")
\: eval(""" SeparateColumns(2)
StackVertical(SelectOdd(),SelectEven())
m = PointResize(w*2,h).AssumeFrameBased().SeparateColumns(2)
m0 = m.SelectOdd().AssumeFrameBased().SeparateColumns(2)
m1 = m.SelectEven().AssumeFrameBased().SeparateColumns(2)""")
r = m0.SelectEven()
b = m0.SelectOdd()
g = m1.SelectOdd()
Interleave(r,g,b)
}
function IsFunction(string func)
{
try { eval(func) }
catch(error_msg) {
error = (error_msg.FindStr("there is no function named") != 0) ? true : false
}
return !error
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment