[FFmpeg-user] Is there something about inputting raw frames

Mark Filipak (ffmpeg) markfilipak at bog.us
Sat Feb 13 00:30:24 EET 2021


On 02/12/2021 10:34 AM, pdr0 wrote:
> Mark Filipak (ffmpeg) wrote

-snip-

> "72fps" or "144fps" equivalent in a cinema is not the same thing - the
> analogy would be the cinema is repeating frames, vs interpolating new
> in-between frames on a motion flow TV. ...

To some transcodes, repeating frames does apply. To interpolation, some other considerations apply. 
Also, I contend that, due to its real-time schedule, a motion flow TV can't faithfully reproduce 24 
pictures per second converted to 60 pictures per second via motion vector interperpolation.

I respectfully submit that words alone are inadequate to describe what we discuss.

I present the following to introduce a notation, not to be pedantic -- I know you know this stuff, 
but you're not familiar with the notation. Consider these:

60fps24pps.repeat(30fps24pps.telecine(24fps24pps))
60fps24pps.telecine(48fps24pps.repeat(24fps24pps))
60fps48pps.telecine(48fps48pps.interpolate(24fps24pps))
60fps60pps.interpolate(24fps24pps)

Expansions & diagrams -- I apologize if your email client makes soup of the diagrams by wrapping 
lines. If so, kindly copy this whole message into a plain text editor. Hopefully your email client 
will preserve all the spaces properly.

60fps[24pps].repeat(30fps[24pps].telecine(24fps[24pps])) is 24pps @ 24fps telecined to 30fps, then 
frame repeated to 60fps.
+----------------------------------------------------------------------------------------------------------------------+ 
1/6 second
[A.a_________________________][B.b_________________________][C.c_________________________][D.d_________________________] 
24fps[24pps] source
[A.a___________________][B.b___________________][B.c___________________][C.d___________________][D.d___________________] 
30fps[24pps].telecine(24fps[24pps])
[A.a_______][A.a_______][B.b_______][B.b_______][B.c_______][B.c_______][C.d_______][C.d_______][D.d_______][D.d_______] 
60fps[24pps].repeat(30fps[24pps].telecine(24fps[24pps]))
                                                 cccccccccccccccccccccccccccccccccccccccccccccccc 
                      40% comb @ 6Hz
<----------------------><----------------------------------><----------------------><----------------------------------> 
25% judder @ 12Hz

60fps24pps.telecine(48fps24pps.repeat(24fps24pps)) is 24pps @ 24fps frame repeated to 48fps, then 
telecined to 60fps. Judder is 1/24 sec. @ 12Hz. Combing is 20%.
+----------------------------------------------------------------------------------------------------------------------+ 
1/6 second
[A.a_________________________][B.b_________________________][C.c_________________________][D.d_________________________] 
24fps[24pps] source
[A.a__________][A.a__________][B.b__________][B.b__________][C.c__________][C.c__________][D.d__________][D.d__________] 
48fps24pps.repeat(24fps24pps)
[A.a_______][A.a_______][A.b_______][B.b_______][B.b_______][C.c_______][C.c_______][C.d_______][D.d_______][D.d_______] 
60fps24pps.telecine(48fps24pps.repeat(24fps24pps))
                         cccccccccccc                                                cccccccccccc 
                      20% comb @ 12Hz
<----------------------------><----------------------------><----------------------------><----------------------------> 
zero judder

60fps48pps.telecine(48fps48pps.interpolate(24fps24pps)) is 24pps interpolated to 48pps @ 48fps, then 
telecined to 60fps. Judder is 1/48 sec. @
+----------------------------------------------------------------------------------------------------------------------+ 
1/6 second
[A.a_________________________][B.b_________________________][C.c_________________________][D.d_________________________] 
24fps[24pps] source
[A.a__________][AB.ab________][B.b__________][BC.bc________][C.c__________][CD.cd________][D.d__________][DE.de________] 
48fps48pps.interpolate(24fps24pps)
[A.a_______][AB.ab_____][AB.b______][B.bc______][BC.bc_____][C.c_______][CD.cd_____][CD.d______][D.de______][DE.de_____] 
60fps48pps.telecine(48fps48pps.interpolate(24fps24pps))
                         cccccccccccccccccccccccc 
cccccccccccccccccccccccc             40% comb @ 12Hz
<------><----------><------><----------><------><----------><------><----------> 33% judder @ 24Hz

60fps60pps.interpolate(24fps24pps) is 24pps interpolated to 60pps @ 60fps. Judder is 1/60 sec. @ 
60Hz (essentially imperceptible).
+----------------------------------------------------------------------------------------------------------------------+ 
1/6 second
[A.a_________________________][B.b_________________________][C.c_________________________][D.d_________________________] 
24fps[24pps] source
[A.a_______][AAB.aab___][AB.ab_____][B.b_______][BC.bc_____][C.c_______][CCD.ccd___][CD.cd_____][D.d_______][DE.de_____] 
60fps60pps.interpolate(24fps24pps)
 
                      zero comb
<----------><----------><----------><----------><----------><----------><----------><----------><----------><----------> 
zero judder

-snip-

-- 
The U.S. Senate and House should follow the ancient Roman model.
Their Princeps Senatus and Tribunus Plebis had their own armies.


More information about the ffmpeg-user mailing list