## Pulldown

`Pulldown` (clip, int a, int b)

The `Pulldown` filter 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 `DoubleWeave` first 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 `DoubleWeave` every 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 `Pulldown` filter 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: 2005/10/03 16:49:04 $`