diff mbox series

[FFmpeg-devel,23/29] fftools/ffmpeg: stop calling check_output_constraints() for streamcopy

Message ID 20230409140853.28858-23-anton@khirnov.net
State Accepted
Commit ceb0275e45d82357b94a4a0a6a515a507c1e6b2f
Headers show
Series [FFmpeg-devel,01/29] fftools/ffmpeg: move OutputStream.vsync_frame_number to Encoder | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Anton Khirnov April 9, 2023, 2:08 p.m. UTC
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 mbox series

Patch

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