mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-05-29 21:47:48 +02:00
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:
parent
01897c1788
commit
a45b9d35b9
@ -768,24 +768,6 @@ int subtitle_wrap_frame(AVFrame *frame, AVSubtitle *subtitle, int copy)
|
|||||||
return 0;
|
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)
|
int trigger_fix_sub_duration_heartbeat(OutputStream *ost, const AVPacket *pkt)
|
||||||
{
|
{
|
||||||
OutputFile *of = output_files[ost->file_index];
|
OutputFile *of = output_files[ost->file_index];
|
||||||
|
@ -879,7 +879,7 @@ OutputStream *ost_iter(OutputStream *prev);
|
|||||||
|
|
||||||
void close_output_stream(OutputStream *ost);
|
void close_output_stream(OutputStream *ost);
|
||||||
int trigger_fix_sub_duration_heartbeat(OutputStream *ost, const AVPacket *pkt);
|
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, ...);
|
void update_benchmark(const char *fmt, ...);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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 got_output = 1;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
@ -428,6 +428,24 @@ out:
|
|||||||
return ret;
|
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,
|
static int transcode_subtitles(InputStream *ist, const AVPacket *pkt,
|
||||||
AVFrame *frame)
|
AVFrame *frame)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user