fftools/ffmpeg: move fix_sub_duration_heartbeat() to ffmpeg_dec

This way ffmpeg.c does not need to access InputStream.prev_sub and it
can be made private.
This commit is contained in:
Anton Khirnov 2023-06-14 16:09:25 +02:00
parent 01897c1788
commit a45b9d35b9
3 changed files with 20 additions and 20 deletions

View File

@ -768,24 +768,6 @@ int subtitle_wrap_frame(AVFrame *frame, AVSubtitle *subtitle, int copy)
return 0;
}
static int fix_sub_duration_heartbeat(InputStream *ist, int64_t signal_pts)
{
int ret = AVERROR_BUG;
AVSubtitle *prev_subtitle = &ist->prev_sub.subtitle;
AVSubtitle subtitle;
if (!ist->fix_sub_duration || !prev_subtitle->num_rects ||
signal_pts <= prev_subtitle->pts)
return 0;
if ((ret = copy_av_subtitle(&subtitle, prev_subtitle)) < 0)
return ret;
subtitle.pts = signal_pts;
return process_subtitle(ist, &subtitle);
}
int trigger_fix_sub_duration_heartbeat(OutputStream *ost, const AVPacket *pkt)
{
OutputFile *of = output_files[ost->file_index];

View File

@ -879,7 +879,7 @@ OutputStream *ost_iter(OutputStream *prev);
void close_output_stream(OutputStream *ost);
int trigger_fix_sub_duration_heartbeat(OutputStream *ost, const AVPacket *pkt);
int process_subtitle(InputStream *ist, AVSubtitle *subtitle);
int fix_sub_duration_heartbeat(InputStream *ist, int64_t signal_pts);
void update_benchmark(const char *fmt, ...);
/**

View File

@ -376,7 +376,7 @@ static void sub2video_flush(InputStream *ist)
}
}
int process_subtitle(InputStream *ist, AVSubtitle *subtitle)
static int process_subtitle(InputStream *ist, AVSubtitle *subtitle)
{
int got_output = 1;
int ret = 0;
@ -428,6 +428,24 @@ out:
return ret;
}
int fix_sub_duration_heartbeat(InputStream *ist, int64_t signal_pts)
{
int ret = AVERROR_BUG;
AVSubtitle *prev_subtitle = &ist->prev_sub.subtitle;
AVSubtitle subtitle;
if (!ist->fix_sub_duration || !prev_subtitle->num_rects ||
signal_pts <= prev_subtitle->pts)
return 0;
if ((ret = copy_av_subtitle(&subtitle, prev_subtitle)) < 0)
return ret;
subtitle.pts = signal_pts;
return process_subtitle(ist, &subtitle);
}
static int transcode_subtitles(InputStream *ist, const AVPacket *pkt,
AVFrame *frame)
{