[FFmpeg-user] telecine pattern 5555 - Judder-free, 60 FPS telecine (?)

Mark Filipak markfilipak.windows+ffmpeg at gmail.com
Sun Apr 5 16:34:23 EEST 2020

Okay, so where are we? Oh, yeah.

For a 23.970 FPS source and the TV set to 23.970 vscan, my TV telecines and shows telecine judder. 
Therefore, it cannot actually be running at 23.970Hz vscan. Since a 4-6-4-6 pull-down (to 60Hz) is 
judder free & the TV shows judder, that's not what the TV is doing. Instead, it must be doing the 
standard 2-3-2-3 pull-down (to 30 FPS) followed by frame doubling (to 60 FPS). So, my TV does not 
have a native 24Hz mode. That comes as no surprise to me. In fact, I believe that no TV has a native 
24Hz vscan mode. I believe that all that claim it are actually doing so-called "True Motion", 
on-the-fly motion vector compensation -- synthesizing intermediate motion vectors for the otherwise 
combed frames that are found in all telecines.

ffmpeg -i 24FPS_IN -vf "telecine=pattern=5" 60FPS_OUT
is judder free, but it's combed. The combing is much less than the combing present in 2-3-2-3 
pull-down, but it's still objectionable to some people.

ffmpeg -i 24FPS_IN -vf "telecine=pattern=5,bwdif=mode=send_frame" 60FPS_OUT
does some decombing (I think), but 'bwdif=mode=send_frame' may not be the best choice as it appears 
to be 'deinterlacing' the progressive frames as well, and producing some slight alterations in them.

What I'd like to try is 5-5-5-5 pull-down (to 60 Fps) and then replicating "True Motion" within 
ffmpeg for the 2 frames out of 10 frames that are combed, but I need some help crafting the command 
line. I think the most fruitful approach is via a filter_complex: Split the input, block frames 3, 
8, 13, 18, etc. in the main line, pass frames 3, 8, 13, 18, etc. in the branch, motion compensate 
the branch frames ala "True Motion", and finally merge the branch back into the main. Seems 
straightforward to me.

More information about the ffmpeg-user mailing list