From ceb0275e45d82357b94a4a0a6a515a507c1e6b2f Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 1 Apr 2023 20:13:15 +0200 Subject: [PATCH] fftools/ffmpeg: stop calling check_output_constraints() for streamcopy That function only contains two checks now - whether the muxer returned EOF and whether the packet timestamp is before requested output start time. The first check is unnecessary, since the packet will just be rejected by the muxer. The second check is better combined with a related check directly in do_streamcopy(). --- fftools/ffmpeg.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index f65ff879c7..44ead4e3bc 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -976,10 +976,14 @@ static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *p !ost->copy_initial_nonkeyframes) return; - if (!ost->streamcopy_started && !ost->copy_prior_start) { - if (pkt->pts == AV_NOPTS_VALUE ? - ist->pts < ost->ts_copy_start : - pkt->pts < av_rescale_q(ost->ts_copy_start, AV_TIME_BASE_Q, ist->st->time_base)) + if (!ost->streamcopy_started) { + if (!ost->copy_prior_start && + (pkt->pts == AV_NOPTS_VALUE ? + ist->pts < ost->ts_copy_start : + pkt->pts < av_rescale_q(ost->ts_copy_start, AV_TIME_BASE_Q, ist->st->time_base))) + return; + + if (of->start_time != AV_NOPTS_VALUE && ist->pts < of->start_time) return; } @@ -1830,8 +1834,7 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo for (int oidx = 0; oidx < ist->nb_outputs; oidx++) { OutputStream *ost = ist->outputs[oidx]; - if (!check_output_constraints(ist, ost) || ost->enc_ctx || - (!pkt && no_eof)) + if (ost->enc_ctx || (!pkt && no_eof)) continue; do_streamcopy(ist, ost, pkt);