[PR]三井住友海上きらめき生命:医療保険のご案内と資料請求はこちらから

テストバージョン


Its - IVTC/Deint Switcher(YUY2/YV12/RGB24/RGB32)

Download Its v0.8.5(alpha) [2006/06/09] NEW!!
※ 制限:fps=0の従来の24/30fps混在モードは指定してもfps=-1として取り扱われます
※ 制限: 20/10/12/15fpsは関数指定しても対応するフレームの画像が取得されません。
※ 注意: 60fpsなどを混在させた場合、レンダラーによってはfpsの切り替わり部分でギクシャクすることがあります。
Haaliレンダラー、VLCなどでは正常に再生されるも、デフォルト、オーバーレイ、VMR7/9だと発症しました。

※ 注意: itvfrの区間にチャプターを指定すると時間は正確ではない場合があります。
※ 注意: mode fps_adjust=onでもitvfrの区間は補正されないので必ず区間幅は5の倍数にしておく必要があります。それでも場合によっては必ずしも正確にはならない場合もあります。
※ 注意: v0.7は、mode fps_adjust=onと区間をオーバーラップしての24fps区間の指定は正常に動作しない。v0.6を使用してください
※ 本フィルタは、FilterRangeExのさらに拡張された用途としても使うことができます。
Download exavi_vfr.auo v0.3.8-8(vfrout対応 暫定21版)[2006/05/31](そうとう暫定 下の方が良いかも)

Download exavi_vfr.auo v0.3.8-7(vfrout対応 暫定20版) v0.3.8-9b2[2006/06/09] NEW!!
※ 注意: AviUtlから使う場合、XviDではステータスウィンドウを非表示にしておいてください。
(ステータスウィンドウが正常に表示されす、また終了後、AviUtlが異常終了します)

※ 注意: auoenc時、v0.3.6-2以前とはcfgファイルに互換性がありませんので、再作成が必要です。
以前のバージョン
Download Its v0.8.4(alpha)
Download Its v0.8.3(alpha)
Download Its v0.8.2(alpha)
Download Its v0.8.1(alpha) (ver 0.8は欠番)
Download Its v0.7(alpha)
Download Its v0.6(alpha)
Download exavi_vfr.auo v0.3.8-6
Download exavi_vfr.auo v0.3.8-5
Download exavi_vfr.auo v0.3.8-4 (ver 0.3.8-3は欠番)
Download exavi_vfr.auo v0.3.8-2
Download exavi_vfr.auo v0.3.8-1
Download exavi_vfr.auo v0.3.7-1
Download exavi_vfr.auo v0.3.6-3
Download exavi_vfr.auo v0.3.6-2
Download exavi_vfr.auo v0.3.6-1
Download exavi_vfr.auo v0.3.5-1
更新履歴はこちらを参照のこと

Its( def, tpr, fps, debug, posx, posy, chapter , output )

def [string]
定義ファイルへのパスを指定する。
tpr [string]
free版TMPGEnc(ver 2.5xx) のプロジェクトファイル(.tpr)へのパスを指定する。
省略可能。
なお、バイナリ形式/テキスト形式両方サポートしています。
(バイナリ形式で読めない場合は、テキスト形式にしてください)
この場合、def指定を省略してもかまいません。

ただ、情報としては逆テレシネのフレームリストだけを見ていて、
インターレース解除方法(偶数、奇数等)の指定は今のところ無効です。
fps [int default = -1]
出力fpsを指定する。
=-1: 120fps(mixed fps) Delete frame stripped mode
= 0: 120fps(mixed fps)
=24: 24fps
=30: 30fps
120fps指定時は、ぽむ氏作成の AVI出力(VFR)プラグイン(vfrout)
warpsharpプラグイン付属の auoenc から使用してください。
なお、0.8からは、exavi_vfr.auoでか利用できません。
debug [bool default = false]
= true : 画像中にデバッグ情報を表示する。
= false : 画像中にデバッグ情報を表示しない。
posx, posy [int default = 0]
デバッグ情報の表示位置をピクセル値で指定する。
chapter [string]
生成したチャプターの出力先パスを指定する。
生成するのは、初期化済み後すぐのため、例えばVirtualDubで画像が表示されれば既に出力済みである
output [string]
生成したタイムコードの出力先パスを指定する。チャプターファイル指定時は拡張子だけでもよい。
何に使えるかと言えば、デバッグ目的以外には、itvfrを使わなければ、さらにフレームがずれないコーデックと エンコードアプリであるなら、exavi_vfrの代わりにそちらでエンコードできる。
生成するのは、初期化済み後すぐのため、例えばVirtualDubで画像が表示されれば既に出力済みである


【指定例】
auoenc vfrout.auo foo.cfg foo.avs bar.avi 0

------ foo.avs -------------------------
OpenDMLSource("baz.avi")
AssumeFrameBased().ComplementParity()
its(debug=false, def="foo.def", fps=-1, posx=300, chapter="bar.xml", output=".tmc" )
return last
-----------------------------------------


定義ファイルの構文
定義ファイルはテキストファイル形式(SHIFT-JIS, UTF-8)で作成します。
1行1命令で指定してください。
コメント行
# これで始まる文字列はコメント扱い
代入行
コマンド及び関数を代入
set [24] it = 'IT(ref="TOP")'
set [24] a60224 = "DoubleWaeve.a60224"
set [30] itvfr = 'itvfr(ref="TOP", diMode=0, debug=false).auto24fps(false)'
set [24] tmpgenc = tpr<"c:\foo.tpr">
文字列は、' ', " ", ` ', { } のいずれかで括ります
[24],[30],[60],[48],[20],[10],[12],[15]はfps指定で同じ変数でもfpsが違うと別物となります
fps指定省略時は、出力fpsが24fpsの時は[24]が、
30fps/120fpsの時は[30]が指定されたものとします。
デフォルト指定行
範囲指定行で処理を省略時の動作を設定
default 24 = it
default 30 = 'AutoDeint()'
オフセット指定行
以降の範囲指定行の値を補正します
offset 100
範囲指定行
処理を指定
0 - 99999 00:00:00 [24]: コマンド / 変数 / 関数 / なし
0 - 99999 00:00:00 [24] コマンド / 変数 / 関数 / なし
0 - 99999 [24] コマンド / 変数 / 関数 / なし
0 - 99999 コマンド / 変数 / 関数 / なし
0 - 99999 コマンド / 変数 / 関数 / なし
0 - コマンド / 変数 / 関数 / なし
0 コマンド / 変数 / 関数 / なし
0 (キーフレーム指定)
範囲は(startframe - endframe)で指定します。
startframe - の場合は、startframe以降全て
startframeの場合は、startframeだけが範囲となります。
00:00:00は時間を指定します(ただし指定しても読み飛ばすだけです)
[24]はfpsを指定します。
コマンドは、doubleweaveしたフレームの取捨選択を行います。
doubleweaveするにあたり、TFFなのかBFFなのかで結果が異なりますので本フィルタの前に
フィールドオーダの設定は行っておいてください。
(AssumeFrameBased, ComplementParity, AssumeTFF, AssumeBFF等)
フレーム番号は、0(0a), 1(0b), 2(1a), 3(1b), 4(2a), 5(2b), ...となります
コマンドの種類としては以下のものがあります。
on_a(on), on_b, off_a(off), off_b, dup_a(dup), dup_b, null_a(null), null_b , tpr<"foo.tpr">, <10010>, (5,0,3)、chapter=
ここで、onは出力、offは削除、dupはcopy出力、nullはdrop出力、
tpr<>はTMPGEncプロジェクト、<10010>はフレーム選択パターン、
(5,0,3)はフレーム選択パターン(5フレームサイクルで0と3フレームを選択)
を意味します。
最大サイクルは30までです。
また(5,0,3)の形式は、SelectEveryの形式と似ていますが、相違点もあります。
選択フレームNo.の重複は無視されますし、サイクルの範囲外の指定も無効です。


chapter=文字列はこの区間の先頭にチャプターを打ちます。
またこのとき、強制的にキーフレームとします。
単独区間を指定し、かつコメント以外の後続のコマンド等の指定を省略すると
強制キーフレームの指定となります。

モード指定行
(1) パターン指定のサイクルの開始点を設定します [default: carrent]
mode pattern_origin = current
mode pattern_origin = top
mode pattern_origin = offset
currentはTMPGEncで言うと「このフレーム以降を指定したパターンに従って処理する」に相当し、
startで指定したフレームNo.から(実際にはdoubleweaveしてるので倍のフレームNo.)
指定パターンサイクルを開始します。
top指定時には先頭0フレームからサイクルを開始します。
offset指定時は、offset位置のフレームからサイクルを開始します。
なお、パターン指定とは(5,0,3),<10010>の両形式を指します。
(2) パターンサイクルのシフト値(正負の整数)を指定します。
mode pattern_shift = n
例えばnに-2又は3を指定した場合、以降にある<10010>は、<10100>として処理されます。
(3) [24][30]fps省略時の値を指定する。
mode fps_priority = 24
mode fps_priority = 30
(4) フレームずれの自動調整の有無を指定する。[default: OFF]
mode fps_adjust = ON
mode fps_adjust = OFF
ONである間の指定された範囲指定行の開始フレーム位置の箇所でのみ補正されます。
fps_adjust offでは、24fpsだと、5で割り切れない区間の場合、端数フレーム分全部が出力対象となります。
fps_adjust onでは、4/5したフレーム数だけ出力されます。
【例】0-201[24] の場合、fps_adjust=offだと全162(=160+2)フレーム、
fps_adjust=onだと全161(160+2*4/5)フレーム
さらに、1コマ以下の微小な隙間が空かないようにタイミング調整します。
直前まで、fps_adjust=offでコマ数オーバーしている場合、fps_adjust=on区間の先頭からオーバー分スキップされます。
ただし、あまりにもタイミングずれが大きい場合(約25コマ以上)はエラーとなります。
(5) キーフレーム指定の混在指定の有無を変更します。[default: OFF]
mode keyframes_grouping = ON
mode keyframes_grouping = OFF
ONである間は、キーフレーム指定はキーフレームグループ内でしか指定できません。
(6) チャプターの言語を指定します。[default: ""]
mode chapter_language = jpn
mode chapter_language = eng
言語を指定した場合、チャプターファイルは、 Simple/OGG形式ではなくMatroska XML形式で出力されます。
(7) チャプターの文字セットを指定します。[default: "SHIFT_JIS"]
mode chapter_charset = SHIFT_JIS
mode chapter_charset = UTF-8
上記チャプター言語を指定した場合、合わせて指定します。
なお、定義ファイルは、指定したのと同じ形式で作成してください。コード変換は行いません。
例外として、ファイルの先頭に、UTF-8 BOM識別子が付いていた場合は、 UTF-8が指定されたものと認識します。 (UTF-8 BOMが付くのは、例えば、メモ帳notepad.exeでUTF-8で作成した場合です)

キーフレーム指定ブロック
keyframes {の行と、}の行の間にキーフレームにしたいフレームを指定します。
なお、文字列を後ろに記述するとチャプターを指定したことになります。
keyframes {
100 "OP"
200
300 A Part
400
500
600
700 'B Part'
800
900
1000 Trailer
}
POST FILTER指定行
上記範囲指定行の指定した処理を実行後、さらに重ねてフィルタ処理を指定する。
0 - 99999: post = フィルタ名 / 変数
指定できるのは、外部フィルタのみ。
この指定行の範囲は、上記の範囲指定行の範囲とは無関係に指定できます。
また[24][30]指定はどちらでもかまいません。
(同じ行でコマンドや変数と、このPOST指定を同時に行うことは出来ません)
エンド指定行
この行で設定を終了し、以降の行は無視します
end
【デバッグ情報のフレームの見方】
【コマンド/TPR時 】
frame=80(100 200 80) 24fps [K] (fps=24指定時, キーフレーム時は[K]と表示される)
frame=100(100 200) 24fps   (fps=0/30指定時)
frame=100(100 200) 30fps   (     〃       )
    左から、Actuel / Estimated(30fps) / Estimated(60fps) / [Estimated(24fps)]

【filter時 】
frame=80(100 80<+0>) 24fps   (fps=24指定時)
frame=100(100 80<+0>) 24fps  (fps=0/30指定時)
frame=100(100 100<+0>) 30fps (     〃       )
    左から、Actuel / Estimated / Passed to filter <+clip type>
    clip typeは、開始フレーム位置を5で割った余り分trimしたclipの種類。
    このtrimされたclipに対してフィルタが呼ばれる。
    ただし[30]fpsの場合は常にtrimしてないクリップが対象となるので、clip typeは常に0となる。
    例えば、区間指定で、104-199[24] it とだけあれば、
            0(104 80<+4>) 24fps となり、
            trim(4,0).filterのclipに対してフレーム番号80を取得したことを意味する。
    (24fps出力時は、84(104 80<+4>)というように 84 = 80+<+4>となっていればフレームはズレていないことになる)

<vfrout> [00:00:00.000] 10/2 <30fps> CHAPTER00


【指定例1】 24fps
set it  = 'IT(ref="TOP")'
set 01  = 'doubleweave.a60224.auto24fps(drop=false)'
set [24] *01 = <01010>   #2:3プルダウンされている30fpsソースに於いて、01フレームに縞がある場合のパターン
set [24] *12 = <10010>   #2:3プルダウンされている30fpsソースに於いて、12フレームに縞がある場合のパターン
set [24] *23 = <10100>   #2:3プルダウンされている30fpsソースに於いて、23フレームに縞がある場合のパターン
set [24] *34 = <00101>   #2:3プルダウンされている30fpsソースに於いて、34フレームに縞がある場合のパターン
set [24] *40 = <01001>   #2:3プルダウンされている30fpsソースに於いて、40フレームに縞がある場合のパターン
default 24 = 01
0- 999: it
1000-1999 00:00:03[24]
2000-2999 <1010010100>

【指定例2】 30fps
set [24] 01 = 'IT(fps=24, ref="TOP")'
set [30] 01 = 'IT(fps=30, ref="TOP")'
default 24=tpr<"foo.tpr">
default 30=01
0-99999
100-199[30]
200-299[24] 01 #出力は、0123345677...と4フレームに対して1フレームがdupフレームとして追加される
300-399[30] on_a off_b

【指定例3】 120fps
set [30] itvfr = 'itvfr(ref="TOP", diMode=3, debug=false)'
set [24] 01 = 'IT(fps=24, ref="TOP")'
set [30] 01 = 'IT(fps=30, ref="TOP")'
set [24] deint = 'AutoDeint()'
set [24] $color test = 'ColorYUY2(off_y=100)'

default 24  = tpr<"foo.tpr">
default 30  = itvfr

   0 - 99999 [30]: itvfr
   0 -   999 [24]: 
1000 -  1999 [24]: <10010>

# 1000-  1999 [24]: post = deint
1000 -  1999 [24]: post = $color test

# 注意
#   itvfrと他フィルタ/コマンドとの出力の切り替えは上記の通り可能だが、フレームの対応がズレていると
#   うまくいかない場合が出てくる。なおitvfrは[30]fps区間として範囲指定してください。
#   (共有メモリの該当フレーム位置に書き込んでいるが、itvfrは5フレーム単位で、その先頭フレーム時に
#    5フレーム分のfpsを設定しているようであり、フレームがズレているとそれを壊す場合が出るため)
#
#   こういうふうに範囲が重なっている場合、該当フレームは後から指定した方の処理だけが実行される。
#    また本来共用メモリを他から書き換えることがあるようには作られていないため、
#    他の不具合が起きる可能性も残っている。
#
#   範囲の指定は24fpsの場合、なるべく5の倍数フレーム数単位となるように指定する。
#   できれば先頭フレーム位置も5の倍数にする
#   (フレームを4/5にするときに端数が切り捨てられて、フレームの対応がズレることがあるため)
#    itvfrを使用する場合は、開始位置、範囲とも5の倍数にしないと正常な動作は見込めません。
#    またitvfrは多重起動できないため、開始位置を5で割った余りが異なる複数の区間を指定することはできない。
#
#   POSTフィルタが実際どのフレームに対して適用されているのか目視確認したい場合は上記例のように
#   $color testを指定すれば輝度変化するので明確に判断できる。
【指定例4】 120fps
#---- ローゼンメイデン#06「涙」: 適当に本編を試みてみたが凄くしんどいことがわかった。
#---- (この様な用途には実用的ではないのかもしれない)
#----   なお、ここでとった方法は、Its無しのavsでのVD、及びIts(debug=true)有りのavsでのVDM、
#----   及びエディタ(def編集)の3つを同時起動。
#----   Its無しを見ながら、def編集、結果はIts有りのVDMでF5キーで更新しながら確認していった。
#----   24fps部分はどの部分に縞が見られるのかで *01〜*40を決定。5フレームの倍数で区画設定
#----   its無しのVDMの表示を見ながらとしたのでパターンサイクルは常に先頭0フレームを基準とした。
#----   なので寸足らずの[24]区間が発生し、そこは[30]fpsとした。
#----   (24/30/60fps/縞無し24fpsが混在していたのでdefをどう記述していけばよいのか
#----    少しは参考になると思い、少し長いが実例として掲載)

default 24 = 'IT(ref="TOP", diMode=3)'
default 30 = <10>
mode pattern_origin= top
mode fps_priority = 24
set [30] deint ='AutoDeint()'
set [24] /01    =<01010>
set [24] /12    =<10010>
set [24] /23    =<10100>
set [24] /34    =<00101>
set [24] /40    =<01001>

0-[30]

mode fps_priority = 24
0-154/12
156-265/23
321[30]off,on_b
362-416/23
417-656/34
658-667/40
898-957/34
1150-1389/12
1862-1951/34
1952-2091/01
2096-2325/23
2327-2556/34
2559-2808/01
2813-2842/34
2843-3112/40
3285-3294[30] deint  # 60fps部分を30fpsにする
3710-3889/12
3890-3924/40
3925-4209/01
4399-4638/01
4909-4983/01
5101-5210/12
5212-5390/01
5391-5494/40
5495 on, null_b #[24]fpsの微調整
5496-5615/23
6580-6669/40
6670-6869/01
6962-7891/34
8177-8376/34
8572-8671/34
8672-8831/40
8832-9146/12
9147-9226/23
9231-9300/01
9388-9422/40
9423-9467/34
10331-10430/23
10703-10822/40
10909-10978/12
11115-11219/12
11220-11299/01
11301-11485/23
11488-11662/40
11860-11934/01
12224-12303/01
12306-12655/23
13085-13139/23
13140-13209/12
13210-13449/34
13452-13761/01
14650-15114/12
15115-15389/34
15392-15436/01
15439-15558/23
15563-15857/40
15861-15965/23
15966-16350/34
16589-16658/12
16661-16765/23
16858-16942/01
17120-17204/01
17206-17435/23
17439-17758/01
17761-17885/23
17888-17982/40
17984[30] dup_a,off_b # 縞解除 微調整
17985-18069/01
18073-18182/40
18184[30]dup, off_b
18185-18364/12
18439-18503/40
18504[30]dup,off_b
18505-18789/12
19239-19383/40
20095-20379/12
20583-20662/40
20664-20923/01
20925[30]off, on_b # 縞解除 微調整
20926[30]dup, off_b # 縞解除 微調整
22166-22425/01
22429-22478/40
22483-22712/23
22713-22862/01
22867-23131/34
23134[30]dup,off_b # 縞解除 微調整
23136-23180/01
23185-23199/34
23202-23231/23
23232-23256/01
23258-23277/23
23282-23636/01
24510-24534/12
24537-24611/40
24670-25049/12
25050-25279/40
25280-25314/23
25318-25422/40
25663-25687/40
25782-25841/01
25902-25946/34
26055-26199/40
26200-26304/34
26306-26560/23
27004-27028 <1000101010>  # 縞なし24fps部分
27269-27343/01
27344-27453/34
27456-27590/23
29296-29455/12
29459-29533/01
29819-30008/40
30009[30]off,on_b # 縞解除 微調整
30014-30098/01
30189-30308/01
31297-31516/23
31768-31982/12
32189-32308/01
32309-32353/34
32354-32493/01
32494-32653/12
32812-32961/34
33175-33304/34
33443-33612/40
33613-33892/34
34041-35805/23
35806-35960/34
36097-36246/34
36247-36496/12
36497-36621/40
36624[30]dup,off_b # 縞解除 微調整
36625-36709/12
36710-36794/23
36796-36935/12
36940-36979/23


NullSkip( filter )
filter [string]
120fps(vfrout可変出力)時、DELETEフレームに対して指定したフィルタをスキップする。
ただし、そのフィルタが前後フレームを参照しているような場合は処理時間短縮効果は無い。
また24fps区間が少ない場合も効果は薄い。
【例】
     AVISource("foo.avi")
     its(def="foo.def")
     nullskip("NR")
     KenkunNRT(44,2,6)
     retern last
     
     function NR(clip clip)
     {
         clip=clip._2DCleanYUY2(0,3,2,2,0,3,3)._2DCleanYUY2(0,3,1,1,0,3,3)
         clip=clip.WarpSharp(depth=54, blur=2, bump=64, cubic=-0.6)
         return clip.LanczosResize(640,480)
     }
	

コメント
最初は、チュートリアルの例題として作り始めたものだが、いつの間にか大きくなり過ぎてしまい、
(チュートリアルで「途中のフレームからクリップ属性が変わることはない」
 とか言ってたのは大ウソだな...orz)
目的にそぐわなくなってしまいました。そこで別の形で公開することにします。
可変出力部分については、勝手に(無断で)ぽむ氏の著作物を利用していますので、
もし不具合があってもぽむ氏には何の責任もありません。ご迷惑をかけないようにお願いします。
もし今後があれば、機能的には、
60fps/12fps/15fps の混合や同じ画の場合先頭以外の続くフレームのヌルフレーム化だとか、
デインターレース処理、独自のIVTC等を追加したいな、とか夢想しています。
以前のプラグインもバグを内包しているのが判っているのにまだ修正していなかったり、
他のこともいろいろあるし、夢想だけで終わる気もしていますが......
なおライセンスは明記していませんが、できればGPLより自由なものにしたいと考えています。
まだろくなテストも実施していないので不具合があれば2chBBSで報告していただければ助かります。
(on,off,dup,nullは24fpsでも30fpsと考えて動作するとかは...なんと仕様です...)



本プラグインは、Visual C++ Toolkit 2003 ver1.0 無償公開版 + WindowsSDKで作成しました。

追記:更新(バグ)情報

(2006/06/09 7:30)
(2006/05/31 3:10) (2006/05/31 1:50)
(2006/05/30 20:00)
(2006/05/28 0:00)
(2006/05/25 1:10) exavi_vfr.auo ver.0.3.8-5
Bugfix:its無しでitvfrプラグインを直接使った場合に異常終了してたのを修正(0.3.8-4でエンバグ)

(2006/05/24 2:15) Its 0.8.1, exavi_vfr.auo ver.0.3.8-4
Bugfix:Avisynthから使う場合、Itsの後に前後フレームを参照するフィルタがあると
別のフレーム情報でタイムコード、強制キーフレームが作成されてしまうのを修正

(2006/05/23 0:10) Its 0.8.0, exavi_vfr.auo ver.0.3.8-3
exavi_vfr.auo ver.0.3.8-2
exavi_vfr.auo ver.0.3.8-1
exavi_vfr.auo ver.0.3.7-1
exavi_vfr.auo ver.0.3.6-3
exavi_vfr.auo ver.0.3.6-2
exavi_vfr.auo ver.0.3.6-1 exavi_vfr.auo ver.0.3.5-1 exavi_vfr.auo ver.0.3.4-1 Its ver.0.7 Alpha & exavi.auo ver. 0.3.3-2 exavi.auo Ver 0.3.3-1
exavi.auo Ver 0.3.2-1
exavi.auo Ver 0.3.1-1
exavi.auo Ver 0.3.0-1
exavi.auo Ver 0.2.2-2
Ver 0.6 Alpha Ver 0.5 Alpha Ver 0.4 Alpha Ver 0.3-3 Alpha Ver 0.3-2 Alpha Ver 0.3 Alpha Ver 0.2-2 Alpha Ver 0.2 Alpha Ver 0.1-2 Alpha Ver 0.1 Alpha



© kiraru2002

[PR]ベビー用品はたまひよ♪:子育てが楽しくなる便利アイテムいっぱい