Pulldown

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 $