Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #===================================================================================================
- #
- # txt30mc.avs
- # 30pテロの24p化
- # ivtc_txt30mcの記述
- #
- # 使い方の例:
- # Trim(25580,26174).ivtc_txt30mc(0, draft=false)
- #
- # 利用・改変はご自由にどうぞ。
- #===================================================================================================
- Import("TempGaussMC_beta2.avsi")
- #-----------------------------------------------------------------------------------
- # ivtc_txt30mc
- # frame_ref: フレームの続き具合による(0-4)
- # draft:
- # recalc: 動き解析に重量版の解析関数(txt30mc_getVectorRecalc)を使うならtrue。うまく組めていないので使わないほうがいいです。
- # toggle: テロップを寄せる向きが間違っていて、滑らかに流れない場合はtrue。
- #-----------------------------------------------------------------------------------
- Function ivtc_txt30mc (clip src, int frame_ref, bool "srcbob", bool "draft", bool "recalc", bool "toggle")
- {
- srcbob = Default (srcbob, false)
- draft = Default (draft, false)
- recalc = draft ? false : Default(recalc, false)
- toggle = Default(toggle, false)
- field_ref = (srcbob) ? frame_ref : frame_ref * 2
- field_ref = field_ref % 5
- invpos = (5 - field_ref) % 5
- pel = (draft) ? 1 : 2
- src
- (srcbob) ? last
- \ : (draft ) ? Bob ()
- \ : QTGMC (SourceMatch=3, Lossless=2, tr0=1, tr1=1, tr2=1)
- getvector_func = (recalc) ? "txt30mc_getVectorRecalc" : "txt30mc_getVector"
- offset_direction = select(frame_ref % 5, 1, -1, -1, 1, 1) # テロップを寄せる方向をframe_refから決定する
- offset_direction = toggle ? -1 * offset_direction : offset_direction
- c1=SelectEvery(10, 1-invpos, 2-invpos, 7-invpos, 5-invpos) # time=25 or time=75ブレンド
- c2=SelectEvery(10, 3-invpos, 4-invpos, 9-invpos, 8-invpos) # time=50ブレンド
- super = c1.MSuper(pel=pel)
- vect_f = Eval(getvector_func + "(super, false, 1)")
- vect_b = Eval(getvector_func + "(super, true, 1)")
- fix1 = c1.MFlowInter(super, vect_b, vect_f, time=50-offset_direction*25, thSCD1=400).SelectEvery(4,0,2)
- super = c2.MSuper(pel=pel)
- vect_f = Eval(getvector_func + "(super, false, 1)")
- vect_b = Eval(getvector_func + "(super, true, 1)")
- fix2 = c2.MFlowInter(super, vect_b, vect_f, time=50, thSCD1=400).SelectEvery(4,0,2)
- Interleave (fix1, fix2)
- Trim (invpos/2, 0)
- }
- #-----------------------------------------------------------------------------------
- # 動き解析関数(デフォルト)
- #-----------------------------------------------------------------------------------
- function txt30mc_getVector(super, isb, delta)
- {
- v = super.MAnalyse (isb=isb, delta=delta, overlap=4)
- return v
- }
- #-----------------------------------------------------------------------------------
- # 動き解析関数(重計算)
- #-----------------------------------------------------------------------------------
- function txt30mc_getVectorRecalc(super, isb, delta)
- {
- v = super.MAnalyse (isb=isb, delta=delta, overlap=4, blksize=8, blksizev=8)
- v = super.MRecalculate(v, blksize=8, blksizev=8)
- return v
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement