Pulldown

Pulldown (clip, int a, int b)

The Pulldownfilter simply selects two out of every five frames of the source video. The frame rate is reduced to two-fifths of its original value.
For example, Pulldown(0,2) selects frames 0, 2, 5, 7, 10, 12, and so on.

This filter is designed to be used after DoubleWeave, and its purpose is to recover the original frames of a movie that was converted to video using the 3:2 pulldown process.

The reason you need to use DoubleWeavefirst is that capture cards combine fields in the wrong way. In terms of fields, the 3:2 pulldown sequence is simply "A A B B B C C D D D ...", where "A" through "D" represent the original film frames. But the capture cards combine the fields into frames with no respect for the pulldown pattern, and you get this:

A   B   C   D   D       (30fps)
A   B   B   C   D

In this pattern frame C is never shown by itself. After DoubleWeaveevery pair of fields gets its own frame, so the video stream will begin like this:

A A B B C C D D D       (60fps)
A B B B B C C D D
*     *   *     *

Now each movie frame has at least one video frame to itself. At this point the Pulldownfilter with arguments of 0,3 will select the frames marked with a *, and you'll get

A     B   C     D       (24fps)
A     B   C     D

... which is what you really want.

This is all very complicated to describe, but in practice undoing the pulldown is just a matter of inserting some boilerplate code. See the example below under ShowFiveVersions.

Pulldown(a,b) is implemented internally as SelectEvery(5,a,b).AssumeFrameBased.

$Date: 2008/01/02 01:13:14 $