[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