[FFmpeg-user] What does ffmpeg do when packs switch?

Carl Eugen Hoyos ceffmpeg at gmail.com
Fri Feb 7 08:21:13 EET 2020

> Am 06.02.2020 um 23:27 schrieb Mark Filipak <markfilipak.windows+ffmpeg at gmail.com>:
> On 02/06/2020 10:05 AM, Carl Eugen Hoyos wrote:
>>> Am 06.02.2020 um 13:14 schrieb Mark Filipak <markfilipak.windows+ffmpeg at gmail.com>:
>>> What does ffmpeg do when packs switch from hard-telecine to soft-telecine right in the middle of a GOP?

>> It doesn’t “do” anything because it doesn’t know the concepts of hard- and soft-telecine.
>> It doesn’t “just” take what the decoders output, it assigns proper timestamps to the frames (as it does with all frames coming out of a decoder). If the input was soft-telecined, FFmpeg only sees progressive content, often 24000/1001 frames. Hard-telecined means 30000/1001 frames, the telecine effect can be undone if done properly.
>> If the input contains both soft- and hard-teleconference content, FFmpeg sees variable framerate input (which it actually is).
> Does ffmpeg automatically apply detelecine when telecine is encountered?

No, as the inverse telecine process is (while theoretically perfect) in general not 100% accurate, it needs user interaction (actually the decision which filter should be used).

> Or does the user need to specify the detelecine filter (ffmpeg.org/ffmpeg-filters.html#detelecine)?

This is one of three inverse telecine filters: It can only be used for absolutely perfect input that contains no deviations in the telecine rhythm: Such content is very rare, therefore this filter can only be used after (or before) careful visual inspection of the whole input (or if you know the input because you created it yourself). It cannot be used for dvb input, it can definitely not be used for every dvd. Additionally, it needs trial-and-error for the sequence start.

You have already mentioned one alternative, the pullup filter which originated a long time ago in the MPlayer project. The third (and possibly most sophisticated) filter to invert the telecine process is the fieldmatch filter, see its documentation for more information.

A few possibly unrelated and useless comments:
I don’t think you mentioned before this message that you actually want to inverse telecine. I suspect we would both have saved some time if you had.
Some of the video engineers who come here for very specific questions that are very difficult to understand have their knowledge from the analog (video) world. Since FFmpeg does not deal with analog video, most assumptions do not hold.

Carl Eugen

More information about the ffmpeg-user mailing list