Skip to content

Instantly share code, notes, and snippets.

@tana3n
Last active February 21, 2019 03:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tana3n/ab92194be84daaead161ebf7303b5426 to your computer and use it in GitHub Desktop.
Save tana3n/ab92194be84daaead161ebf7303b5426 to your computer and use it in GitHub Desktop.
2224プルダウン(縞無し24p)用のあれ
/*
以下オリジナル
PulldownMerge - 5つの周期パターンからプログレッシブクリップを選択
clip テレシネクリップ (2-2-2-4等の変則的な周期は非対応)
mode [default:0] 1 解除パターン IPPPI
2 解除パターン IIPPP
3 解除パターン PIIPP
4 解除パターン PPIIP
5 解除パターン PPPII
0 すべてのパターンを一覧表示(強制 fast モード)
fast [default:false] false FlexibleMergeでフィールドブレンドされた高画質なクリップを返します
true Mergeでブレンドされた低画質なクリップを返します(高速)
adjust [default:true] false 終端の縞と重複フレームを削除し、すべてのフレームを一意のプログレッシブにします。
フレーム数が完全な4/5ではなくなります。
true 終端の縞フレームを削除し、フレーム数をすべて4/5に調整します。
終端に重複フレームが発生します。
*/
/*
以下改変版
PulldownMerge24 - 5つの周期パターンからフィールドブレンド済みのクリップを選択
clip テレシネクリップ (2-2-2-4専用)
mode [default:0] 1 解除パターン 2224
2 解除パターン 2242
3 解除パターン 2422
4 解除パターン 4222
0 すべてのパターンを一覧表示(強制 fast モード)
fast [default:false] false FlexibleMergeでフィールドブレンドされた高画質なクリップを返します
true Mergeでブレンドされた低画質なクリップを返します(高速)
adjust [default:false] falseのみ 基本的には終端何もしてないです。動作確認できるほどソースがないので未確認
*/
function PulldownMerge24(clip clip, int "mode", bool "fast", bool "adjust",int "mt2", int "th") {
adjust=Default(adjust,false)
##AdjustONにすると動作しない
return adjust==true?PulldownMerge24_adjustON(clip,mode,fast):PulldownMerge24_adjustOFF(clip,mode,fast,mt2,th)
}
function PulldownMerge24_adjustOFF(clip clip, int "mode", bool "fast",int "mt2", int "th") {
mode=Default(mode,0)
fast=Default(fast,false)
mt2=Default(mt2,8)
th=Default(th,3)
Assert(0<=mode&&mode<=5, "Error. Invaid int")
# 2224
v1=clip.selectevery(5,0,1,2,3).prefetch(mt2,th)
v2=clip.selectevery(5,0,1,2,4).prefetch(mt2,th)
mode01_flxmerge=flexiblemerge(v1,v2,nmax=5)
mode01_merge=Merge(v1,v2)
# 2242
v1=clip.selectevery(5,0,1,2,4).prefetch(mt2,th)
v2=clip.selectevery(5,0,1,3,4).prefetch(mt2,th)
mode02_flxmerge=flexiblemerge(v1,v2,nmax=5)
mode02_merge=Merge(v1,v2)
# 2422
v1=clip.selectevery(5,0,1,3,4).prefetch(mt2,th)
v2=clip.selectevery(5,0,2,3,4).prefetch(mt2,th)
mode03_flxmerge=flexiblemerge(v1,v2,nmax=5)
mode03_merge=Merge(v1,v2)
# 4222
v1=clip.selectevery(5,0,2,3,4).prefetch(mt2,th)
v2=clip.selectevery(5,1,2,3,4).prefetch(mt2,th)
mode04_flxmerge=flexiblemerge(v1,v2,nmax=5)
mode04_merge=Merge(v1,v2)
# View
view=Pulldown2224(clip)
clip_flxmerge= mode!=0 ? \
(mode!=1?(mode!=2?(mode!=3?(mode!=4?(mode!=5?(nop()): \
(mode05_flxmerge)):(mode04_flxmerge)):(mode03_flxmerge)):(mode02_flxmerge)):(mode01_flxmerge)):(view)
clip_merge= mode!=0 ? \
(mode!=1?(mode!=2?(mode!=3?(mode!=4?(mode!=5?(nop()): \
(mode05_merge)):(mode04_merge)):(mode03_merge)):(mode02_merge)):(mode01_merge)):(view)
return fast==true?clip_merge:clip_flxmerge
}
#2224プルダウンチェック+解除用
function pulldown2224 (clip clip, int "mode" , int "mt2",int "th") {
mode=Default(mode,0)
Assert(0<=mode&&mode<=5, "Error. Invaid int ")
mt2=Default(mt2,9)
th=Default(th,3)
# 2224/none
mode01=clip.selectevery(5,0,1,2,3).prefetch(mt2,th)
# 2242/2224
mode02=clip.selectevery(5,0,1,2,4).prefetch(mt2,th)
# 2422/2242
mode03=clip.selectevery(5,0,1,3,4).prefetch(mt2,th)
# 4222/2422
mode04=clip.selectevery(5,0,2,3,4).prefetch(mt2,th)
# 4222
mode05=clip.selectevery(5,1,2,3,4).prefetch(mt2,th)
# View
view=StackDiff_merge(mode01,\
mode02,\
mode03,\
mode04,\
mode05)
clip_merge= mode!=0 ? \
(mode!=1?(mode!=2?(mode!=3?(mode!=4?(mode!=5?(nop()): \
(mode05)):(mode04)):(mode03)):(mode02)):(mode01)):(view)
return clip_merge
}
function StackDiff_merge(clip v01, clip v02, clip "v03", clip "v04",clip "v05" ,int "mode") {
v03=default(v03,BlankClip(v03,length=-1))
v04=default(v04,BlankClip(v04,length=-1))
mode=default(mode,1)
last=Overlay(v01,v02,mode="Difference",pc_range=true).SubTitle("2224 mode=1(2)",size=96)
last=addClip(last,Overlay(v02,v03,mode="Difference",pc_range=true).SubTitle("2242 mode=2(3)",size=96),mode=mode)
last=addClip(last,Overlay(v03,v04,mode="Difference",pc_range=true).SubTitle("2422 mode=3(4)",size=96),mode=mode)
last=addClip(last,Overlay(v04,v05,mode="Difference",pc_range=true).SubTitle("4222 mode=4(5)",size=96),mode=mode)
return last.reduceby2()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment