Page 1 of 1

Re: Incorrect FPS on VFR

Posted: Thu May 17, 2018 3:09 pm
by admin
Here is what I found:

Almost all of the frame durations are fairly close to 16.67 ms. This is 60 fps as encoded in the stream. The variation around 60 fps is jitter.

The only exception is the 13th frame with a duration of 288 ms, likely due to a lag in the encoder. I don't know if a longer capture may have more of them. Let's suppose it does. Since you talk about audio desync, I suppose the audio doesn't also get lagged.

When I calculate the effective frame rate with all the frames it is ~58.84. When I exclude the one long frame, it is ~59.96. That could be either 59.94 or 60 fps; the stream is not long enough to be sure.

IMHO, the fully correct way to handle this would be to set it as 60 fps and then delay the audio at each lag point (assuming that the audio is not also lagged!). But this would require custom code. So setting the false lower frame rate 58.84 makes the video and audio lengths the same but doesn't really fix the sync in a correct way. It won't drift out of sync but every point of the file will be a little out of sync.

I'm not going to do anything about this. You'll have to use AssumeFPS() if you want to deviate from the stream's encoded frame rate.

Re: Incorrect FPS on VFR

Posted: Thu May 17, 2018 11:15 pm
by Morpheus
admin wrote:
Thu May 17, 2018 3:09 pm
Here is what I found:

Almost all of the frame durations are fairly close to 16.67 ms. This is 60 fps as encoded in the stream. The variation around 60 fps is jitter.

The only exception is the 13th frame with a duration of 288 ms, likely due to a lag in the encoder. I don't know if a longer capture may have more of them. Let's suppose it does. Since you talk about audio desync, I suppose the audio doesn't also get lagged.

When I calculate the effective frame rate with all the frames it is ~58.84. When I exclude the one long frame, it is ~59.96. That could be either 59.94 or 60 fps; the stream is not long enough to be sure.

IMHO, the fully correct way to handle this would be to set it as 60 fps and then delay the audio at each lag point (assuming that the audio is not also lagged!). But this would require custom code. So setting the false lower frame rate 58.84 makes the video and audio lengths the same but doesn't really fix the sync in a correct way. It won't drift out of sync but every point of the file will be a little out of sync.

I'm not going to do anything about this. You'll have to use AssumeFPS() if you want to deviate from the stream's encoded frame rate.
Okay.I will use AssumeFPS().Indeed,it is a problem of shadowplay,not yours.

Thanks.