Pulldown
(clip, int a, int b)
Pulldown
フィルタは、ソースビデオから 5 フレームごとに 2 フレームずつを単純に選択します。フレームレートは、オリジナル値の 2/5 に減少します。
例えば、Pulldown
(0,2) はフレーム 0, 2, 5, 7, 10, 12 などを選択します。
このフィルタは DoubleWeave
の後に使用することを想定して作られており、そしてその目的は 3:2 プルダウン*1処理を使ってビデオに変換された映画のオリジナルのフレームを取り出すことにあります。
先に DoubleWeave
を使う必要がある理由は、キャプチャーカードが間違った方法でフィールドを合成することにあります。フィールドの点から見ると、3:2 プルダウンのシークエンスは単に「A A B B B C C D D D ...」です(ここで A から D はオリジナルのフィルムのフレームを表します)。しかし、キャプチャカードは、プルダウンのパターンを尊重せずにこれらのフィールドを合成してフレームにします。そして、次のようなフレームが得られます:
A B C D D (30fps) A B B C D
このパターンでは、フレーム C は単独で表示されることはありません。DoubleWeave
の後、フィールドのすべての組み合わせはそれぞれのフレームを得ます。そのため、ビデオストリームはこのように開始されます:
A A B B C C D D D (60fps) A B B B B C C D D * * * *
今、映画の各フレームは、それぞれ少なくとも 1 つのビデオフレームを持っています。この時点で、0,3
という実引数を渡して Pulldown
フィルタを適用すると、*(アスタリスク)で印を付けたフレームが選択されます。そして、以下のフレームが得られます:
A B C D (24fps) A B C D
... まさに求めた通りのものです。
説明するには非常に複雑ですが、実際のところ、プルダウンを元に戻すのは、ただ単にボイラープレートコード*2を挿入するだけの問題です。ShowFiveVersions
の例を参照してください。
Pulldown
(a,b) は、内部的には SelectEvery(5,a,b).AssumeFrameBased
として実装されています。
原文 Date: 2008/01/02 01:13:14
日本語訳 $Date: 2008/06/22 07:41:18 $