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.
This commit is contained in:
Uoti Urpala 2009-11-23 04:38:32 +02:00
parent e43926d6d1
commit d3a1fa98f4
1 changed files with 3 additions and 3 deletions

View File

@ -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)