[FFmpeg-user] repeat a frame

Moritz Barsnick barsnick at gmx.net
Thu Mar 4 16:26:16 EET 2021


On Thu, Mar 04, 2021 at 03:57:38 -0500, Mark Filipak (ffmpeg) wrote:
> Well, per rational.h, 'num' & 'den' are both integers.
>
> Now, I don't know how '720000' is stored. Is it stored as an int64?

They are defined as "int", which can be platform dependant. ffmpeg
assumes/guarantees ints to be at least 32 bits.

> I don't know, but I do know that it can't be stored as an 8-bit
> integer or a 16-bit integer or anything else that has 8-bit or 16-bit
> resolution.

If you mean the number 720000, that's correct.

> That includes AVRational. 720000 can't be stored as
> AVRational. AVRational just doesn't have enough resolution.

Huh? You didn't even wait for the answer to how it is stored. And you
even asked whether it was 64 bits. This would work just fine with 64
bits.

It's a rational number of two integers with at least 32 bits. 1/720000
is probably stored as { 1, 720000 }, but could also be { 2, 1400000 }
for example, unless they get reduced automatically (I'm too lazy to
check).

> I'm sure you know that the running time produced by 'PTS's depends on frame
> rate *and* time_base. For example, for 23.976fps and TB = 1/(720000 ticks/s)
> = 1.3[8..] ┬Ás/tick, a PTS of +9223372036854775800 indicates a
> 307138595965860 maximum frame number.

Huh? At 720000 ticks/seconds, and PTS being number of ticks, you can
create timestamps spanning
(2^63 - 1) / 720000 seconds
which is
~12810238940076 seconds
which is
~400000 years.

> Do you agree with my figures? Do you see the difference between time
> extents and time resolution?

I don't agree with your figures.

Moritz


More information about the ffmpeg-user mailing list