お前らのショボイAvisynthスクリプト貼ってくださいpart2
4コマ撮りを除く3:2 プルダウンの値を見るスクリプト。要 TIVTC.dll, VirtualDub
3:2 プルダウンの4コマ撮りは30p制作の5コマ撮りと同値。すべてのフレームで縞なしとなる。
オプション: int "display" ShowCombedTIVTCのdisplayと同じ。5 にすると、ShowCombedTIVTCの表示無し。
使い方: VirtualDubでスクリプトを読み込んで、周期を調べたいフレーム上で F2 key で VirtualDubを
更新。文字が水色に変わり そこを FrameNumber 0 として周期を見ることが出来る。
尚、マイナス方向に count を進めても SelectEvery の値を得る。
その場合、F2で更新した Frameから5の倍数で区切ったときの値。
SelectEvery(n, a,b,c...) は frame1 ≡ a (mod n), frame2 ≡ b (mod n), ... と定義することが出来る。
n, n+1 に縞 FrameNumber ≡ n (mod 5)
SelectEvery( 5, 2n + 3, 2n + 1 ) SelectEvery( 5, 2n + 1, 2n + 4 )
SelectEvery( 5, 2n - 2, 2n - 4 ) SelectEvery( 5, 2n - 4, 2n - 1 )
3:2 プルダウンされたもののframeを 5周期ずつ見たときのまとめ a1,a2,...an は 10進数でのFrameNumber, nは そのFrameNumberの mod 5 での値。
(34 xor 40) or (34 and 40, |a3-a0|>2) or 2コマずつ同じ絵で4のみに縞 or すべてのframeが縞無しで5コマずつ同じ絵で1,2が互いに違う絵 DoubleWeave.SelectEvery(5, 2,4)
(40 xor 01) or (40 and 01, |a4-a1|>2) or 2コマずつ同じ絵で0のみに縞 or すべてのframeが縞無しで5コマずつ同じ絵で2,3が互いに違う絵 DoubleWeave.SelectEvery(5, 1,4)
(01 xor 12) or (01 and 12, |a0-a2|>2) or 2コマずつ同じ絵で1のみに縞 or すべてのframeが縞無しで5コマずつ同じ絵で3,4が互いに違う絵 DoubleWeave.SelectEvery(5, 1,3)
(12 xor 23) or (12 and 23, |a1-a3|>2) or 2コマずつ同じ絵で2のみに縞 or すべてのframeが縞無しで5コマずつ同じ絵で4,0が互いに違う絵 DoubleWeave.SelectEvery(5, 0,3)
(23 xor 34) or (23 and 34, |a2-a4|>2) or 2コマずつ同じ絵で3のみに縞 or すべてのframeが縞無しで5コマずつ同じ絵で0,1が互いに違う絵 DoubleWeave.SelectEvery(5, 0,2)
2コマ撮りは3つ選べるうちの中心のみ記載。2コマずつ同じ絵で2のみに縞 だと、(5, 1,3) (5, 0,3) (5, 0,2)
function ShowPulldown(clip clp, int "display")
{
global ShowPulldown_Start = -1
global ShowPulldown_Comb = -1
global ShowPulldown_koma = -1
global ShowPulldown_count = -1
global ShowPulldown_60i = -1
global ShowPulldown_display = default( display, 2 )
return clp.ScriptClip("_ShowPulldown(Current_Frame, ShowPulldown_display)")
}
function _ShowPulldown(clip clp, int n, int display)
{
Current_Frame = n
global ShowPulldown_Start = (ShowPulldown_Start == -1) ? n : ShowPulldown_Start
comb = clp.IsCombedTIVTC(cthresh=13, chroma=false, MI=128, blockx=32, blocky=32)
function toMOD5(n) { return (n >= 0) ? n % 5 : ( (n % 5) + 5 ) % 5 }
m = n - ShowPulldown_Start
i = toMOD5(m)
a = (comb == true) ? toMOD5( 2 * i + 1 ) : ShowPulldown_Comb
b = toMOD5( a + 3 )
global ShowPulldown_Comb = a
koma = (comb == true) && (ShowPulldown_count == 0) ? 1
\ : (comb == true) && (ShowPulldown_count == 4) ? 2
\ : (comb == true) && (ShowPulldown_count == 10) ? 3
\ : (comb == true) && (ShowPulldown_count == 14) ? 6
\ : ShowPulldown_koma
global ShowPulldown_koma = koma
global ShowPulldown_count = (comb == false) ? ShowPulldown_count + 1 : 0
global ShowPulldown_60i = (comb == true) ? ShowPulldown_60i + 1 : 0
function _Max(a, b){ (a > b) ? a : b }
function _Min(a, b){ (a < b) ? a : b }
function n2s(n){ return (n == -1) ? "--" : string(n) }
pd = (a != -1) ? string(_Min(a, b)) + "," + string(_Max(a, b)) : "2, 0"
pd = (pd != "2, 0") ? "5, " + pd : pd
pd = string(ShowPulldown_Start) + " - " + string(n) + " " + string(m)
\ + " ≡ " + string(i) + " " + "SelectEvery(" + pd + ")"
\ + " " + ( (ShowPulldown_60i > 2) ? " 60i " : (ShowPulldown_count > 15)
\ ? " 30p " : " " + n2s(koma) + "コマ撮り " ) + string(ShowPulldown_count)
y = (display < 5) ? 80 : 0
(display < 5) ? clp.ShowCombedTIVTC(cthresh=13, chroma=false, MI=128, blockx=32, blocky=32, display=display) : clp
return Subtitle(pd, x=0, y=y, text_color=(m==0)?$00FFFF:$E0FFFF, font="MS_Gothic")
}