ClipReady Get ClipReady
Product menu

ClipReady

Your DVD is 23.976 fps, not 29.97

Last updated:

You rip an NTSC DVD of a film, look at the file, and everything says 29.97 fps. You know the film was shot at 24. Drop it on a 23.976 timeline and the motion has a hitch in it, a small stutter every few frames that shows up worst in a slow pan. Somebody tells you to deinterlace it. You do, and now it is soft as well as stuttery.

The frame rate is not 29.97, and the picture was never interlaced. What the disc contains is 23.976 progressive film wearing a 29.97 jacket, and the jacket is made of flags rather than pixels.

Soft telecine, in one paragraph

NTSC video runs at 29.97 frames a second and film runs at 24. To fit one into the other you have to add frames, and there are two ways to do it.

Hard telecine builds the extra frames into the picture. Fields from adjacent film frames get woven together into new video frames, and the result is baked in. Undoing it means rebuilding frames, which means decoding and re-encoding.

Soft telecine does not touch the picture at all. The disc stores the original 23.976 progressive film frames exactly as they were shot, and adds a one-bit instruction to some of them: repeat the first field when you play this. The player does the arithmetic at playback time. Most NTSC film DVDs are made this way, because it is cheaper and it looks better.

So the file genuinely holds 23.976 progressive frames. It just also holds a note asking a player to show them at 29.97.

Why your Mac shows 29.97 anyway

Apple’s media stack ignores the repeat-field flags. Not partially: they are simply not read. So AVFoundation, and everything built on it, counts the container’s declared 29.97 timebase and reports 29.97 fps for a file whose coded pictures are 23.976 film.

Which leads to the useful conclusion. If the flags are the only thing making it 29.97, and the flags are being ignored, then writing the timestamps onto the 24000/1001 grid is the pulldown removal. No filter runs. No frame is rebuilt. The coded pictures were already the film frames; they were only ever being scheduled wrong.

This is also why deinterlacing is the wrong advice for these discs. There are no interlaced pixels to comb out. A deinterlacer will happily process the file anyway and soften a picture that was progressive the whole time.

Getting it wrong is worse than doing nothing

The temptation is to force 23.976 onto anything that reports 29.97. Do that to a genuinely interlaced source, or to hard-telecined material, and you have changed the playback speed of the film by 25 percent, or produced a file whose audio drifts steadily out of sync. This is the failure mode that makes people distrust the whole idea.

So detection has to be conservative, and it has to be able to say “I do not know” without that being a failure.

What ClipReady does

ClipReady only asks the question where it can be true. The census runs on MPEG-2 video with a 29.97 declared rate: the shape an NTSC DVD has. Nothing else pays for the probe or gets retimed by it.

It counts frames rather than trusting a header. ClipReady decodes sample windows and tallies two things per frame: whether the frame is flagged interlaced, and whether it carries a repeat-field instruction. Textbook soft telecine measures 100 percent progressive with the repeat flag on exactly every other frame. Both have to hold, and the alternation has to be a real 1,0,1,0 cadence rather than flags clustered somewhere in the middle, which is what a partial pulldown looks like.

It samples three places, not one. On anything longer than two minutes, three ten-second windows are read: near the head, around 40 percent in, and around 75 percent in. All three have to return the same verdict. This is not belt and braces. A Criterion transfer in the reference corpus has a hard-telecined head and a soft-telecined body, and a head-only probe passed it as uniform; the resulting retime squeezed the body’s cadence and Final Cut read 23.99 fps.

Anything ambiguous leaves the timing alone. Too few frames to judge, a mixed verdict, flags that do not alternate: all of them return “unknown”, and an unknown means the file is carried at exactly the rate it declared. The plan says which happened.

Hard telecine is named, not faked. If the file is encoded as interlaced, ClipReady says so and keeps the native timing. It may well contain 23.976 film inside a 60i pulldown, and removing that requires inverse telecine and a video re-encode, which is the one thing ClipReady does not do. It tells you rather than pretending.

When the verdict is soft telecine, the plan reads Soft telecine restored to 23.976 fps film, the timestamps go onto the exact grid, the timecode track is written at the restored rate, and the MPEG-2 picture is copied across untouched. No inverse telecine, no re-encode, no dropped frames.

One practical note: an MPEG-2 source gets MOV output only.

PAL discs are a different situation. A PAL film DVD is usually 25 fps with the film sped up by 4 percent rather than telecined, so there are no pulldown flags to read and nothing here applies. ClipReady carries the declared rate.