Nice, here's a little variation:
Code:
## (requires MaskTools)
r = Last.ConvertToRGB24
ConvertToYV24(matrix="PC.601")
o = last
U = UToY8()
V = VToY8()
Blank = BlankClip(U, color_yuv=$808080)
UA = U.mt_lut(("(x < 128) ? 128 : x").mt_polish)
UB = U.mt_lut(("(x > 128) ? 128 : x").mt_polish)
VA = V.mt_lut(("(x < 128) ? 128 : x").mt_polish)
VB = V.mt_lut(("(x > 128) ? 128 : x").mt_polish)
Y = MergeRGB(o, o, o, pixel_type="RGB24")
U2A = YToUV(UA, Blank, Blank)
U2B = YToUV(UB, Blank, Blank)
V2A = YToUV(Blank, VA, Blank)
V2B = YToUV(Blank, VB, Blank)
UVA = StackHorizontal(U2A._sub("U+"), V2A._sub("V+"))
UVB = StackHorizontal(U2B._sub("U-"), V2B._sub("V-"))
StackVertical(
\ StackHorizontal(r, UVA.ConvertToRGB24(matrix="PC.601")),
\ StackHorizontal(Y, UVB.ConvertToRGB24(matrix="PC.601")))
return Last
function _sub(clip C, string msg) {
return C.Subtitle(msg, align=5, size=C.Height/8, text_color=$c0c0c0)
}