summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-01-19 18:00:41 +0100
committerwm4 <wm4@nowhere>2015-01-19 18:02:31 +0100
commit234d63292092d1450120abde1dce8843c2188bf0 (patch)
tree627e3049ba84a120cbabae5a07cc2e4a2da77301
parent616cfb90c14881f9a315c1188a40724097c1f748 (diff)
downloadmpv-234d63292092d1450120abde1dce8843c2188bf0.tar.bz2
mpv-234d63292092d1450120abde1dce8843c2188bf0.tar.xz
video: fix waiting for last frame/format reconfig
We still need to send the VO a duration in these cases. Disabling framedrop has logically absolutely nothing to do with these cases; it was overlooked in commit 918b06c4. So we always send the frame duration (or a guess for it), and check whether framedropping is actually enabled in the VO code. (It would be cleaner to send framedrop as a flag, but I don't care about that right now.)
-rw-r--r--player/video.c2
-rw-r--r--video/out/vo.c1
2 files changed, 2 insertions, 1 deletions
diff --git a/player/video.c b/player/video.c
index 05c5fd42e1..6369428871 100644
--- a/player/video.c
+++ b/player/video.c
@@ -824,7 +824,7 @@ void write_video(struct MPContext *mpctx, double endpts)
diff = vpts1 - vpts0;
if (diff < 0 && mpctx->d_video->fps > 0)
diff = 1.0 / mpctx->d_video->fps; // fallback to demuxer-reported fps
- if (opts->untimed || vo->driver->untimed || !(opts->frame_dropping & 1))
+ if (opts->untimed || vo->driver->untimed)
diff = -1; // disable frame dropping and aspects of frame timing
if (diff >= 0) {
// expected A/V sync correction is ignored
diff --git a/video/out/vo.c b/video/out/vo.c
index 0665eb7b80..5d6bab4aab 100644
--- a/video/out/vo.c
+++ b/video/out/vo.c
@@ -567,6 +567,7 @@ static bool render_frame(struct vo *vo)
in->dropped_frame = duration >= 0 && end_time < next_vsync;
in->dropped_frame &= !(vo->driver->caps & VO_CAP_FRAMEDROP);
+ in->dropped_frame &= !(vo->global->opts->frame_dropping & 1);
// Even if we're hopelessly behind, rather degrade to 10 FPS playback,
// instead of just freezing the display forever.
in->dropped_frame &= mp_time_us() - in->last_flip < 100 * 1000;