mirror of
https://github.com/mpv-player/mpv
synced 2025-03-23 03:37:27 +00:00
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:
parent
e43926d6d1
commit
d3a1fa98f4
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user