[FFmpeg-cvslog] fftools/ffmpeg: stop calling check_output_constraints() for streamcopy

Anton Khirnov git at videolan.org
Thu Apr 13 16:42:31 EEST 2023


ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Sat Apr  1 20:13:15 2023 +0200| [ceb0275e45d82357b94a4a0a6a515a507c1e6b2f] | committer: Anton Khirnov

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().

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=ceb0275e45d82357b94a4a0a6a515a507c1e6b2f
---

 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);



More information about the ffmpeg-cvslog mailing list