mirror of https://git.ffmpeg.org/ffmpeg.git
ffmpeg: prevent premature EOF in sub2video with nullptr AVSubtitles
With certain types of input and the filter chain getting re-initialized or re-configured, multiple nullptr AVSubtitles can get pushed into sub2video_update() in a row from sub2video_heartbeat. This causes end_pts, and on the next round pts, to become INT64_MAX, latter of which signals EOF in framesync, leading to complete loss of subtitles from that point on. Thus, check that the sub2video.end_pts is smaller than INT64_MAX in a similar fashion to sub2video_flush before sending out the nullptr AVSubtitle. This keeps premature EOFs from happening in framesync and the subtitle overlay is kept past the filter chain re-initializations/configurations.
This commit is contained in:
parent
be502ec6cd
commit
e760c12aee
|
@ -285,7 +285,8 @@ static void sub2video_heartbeat(InputStream *ist, int64_t pts)
|
|||
/* do not send the heartbeat frame if the subtitle is already ahead */
|
||||
if (pts2 <= ist2->sub2video.last_pts)
|
||||
continue;
|
||||
if (pts2 >= ist2->sub2video.end_pts || !ist2->sub2video.frame->data[0])
|
||||
if (pts2 >= ist2->sub2video.end_pts ||
|
||||
(!ist2->sub2video.frame->data[0] && ist2->sub2video.end_pts < INT64_MAX))
|
||||
sub2video_update(ist2, NULL);
|
||||
for (j = 0, nb_reqs = 0; j < ist2->nb_filters; j++)
|
||||
nb_reqs += av_buffersrc_get_nb_failed_requests(ist2->filters[j]->filter);
|
||||
|
|
Loading…
Reference in New Issue