Revert "vo: improve frame drop logic on high playback rate"
This reverts commit ffcad1a72b.
This commit is contained in:
1 parent
fb7d0c80cc
commit
f4ce99d082
1 file changed
+3
-11
+3
-11
@@ -626,22 +626,14 @@ static bool render_frame(struct vo *vo)
|
|||||||
if (!in->hasframe_rendered)
|
if (!in->hasframe_rendered)
|
||||||
duration = -1; // disable framedrop
|
duration = -1; // disable framedrop
|
||||||
|
|
||||||
// If the clip and display have similar/identical fps, it's possible that
|
// if the clip and display have similar/identical fps, it's possible that
|
||||||
// we'll be very slightly late frequently due to timing jitter, or if the
|
// we'll be very slightly late frequently due to timing jitter, or if the
|
||||||
// clip/container timestamps are not very accurate.
|
// clip/container timestamps are not very accurate.
|
||||||
// So if we dropped the previous frame, keep dropping until we're aligned
|
// so if we dropped the previous frame, keep dropping until we're aligned
|
||||||
// perfectly, else, allow some slack (1 vsync) to let it settle into a rhythm.
|
// perfectly, else, allow some slack (1 vsync) to let it settle into a rhythm.
|
||||||
// On low clip fps, we don't drop anyway and the slack logic doesn't matter.
|
|
||||||
// If the clip fps is more than ~5% above screen fps, we remove this slack
|
|
||||||
// and use "normal" logic to allow more regular drops of 1 frame at a time.
|
|
||||||
bool use_slack = duration > (0.95 * in->vsync_interval);
|
|
||||||
in->dropped_frame = duration >= 0 &&
|
in->dropped_frame = duration >= 0 &&
|
||||||
use_slack ?
|
|
||||||
((in->dropped_frame && end_time < next_vsync) ||
|
((in->dropped_frame && end_time < next_vsync) ||
|
||||||
(end_time < prev_vsync)) // hard threshold - 1 vsync late
|
(end_time < prev_vsync)); // hard threshold - 1 vsync late
|
||||||
:
|
|
||||||
end_time < next_vsync; // normal frequent drops
|
|
||||||
|
|
||||||
|
|
||||||
in->dropped_frame &= !(vo->driver->caps & VO_CAP_FRAMEDROP);
|
in->dropped_frame &= !(vo->driver->caps & VO_CAP_FRAMEDROP);
|
||||||
in->dropped_frame &= (vo->global->opts->frame_dropping & 1);
|
in->dropped_frame &= (vo->global->opts->frame_dropping & 1);
|
||||||
|
|||||||
Reference in new issue
Block a user