From d3a1fa98f4e20ce707a7da54d381adf1e3d1eb87 Mon Sep 17 00:00:00 2001 From: Uoti Urpala Date: Mon, 23 Nov 2009 04:38:32 +0200 Subject: core: Fix rare corner cases in video frame generation Check that frames added by filters reach the screen and are not just buffered by the VO, and give filters a chance to output added frames if previous frame at EOF was buffered by VO. It's unlikely that anyone ever noticed practical problems caused by these issues. --- mplayer.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mplayer.c b/mplayer.c index d6182584dc..a3152c9523 100644 --- a/mplayer.c +++ b/mplayer.c @@ -2374,12 +2374,12 @@ static double update_video(struct MPContext *mpctx, int *blit_frame) current_module = "filter_video"; if (vo_get_buffered_frame(video_out, hit_eof) >= 0) break; - if (hit_eof) - return -1; // XXX Time used in this call is not counted in any performance // timer now, OSD time is not updated correctly for filter-added frames if (vf_output_queued_frame(sh_video->vfilter)) - break; + continue; + if (hit_eof) + return -1; unsigned char *packet = NULL; int in_size = ds_get_packet_pts(mpctx->d_video, &packet, &pts); if (pts != MP_NOPTS_VALUE) -- cgit v1.2.3