diff mbox series

[FFmpeg-devel,10/13] fftools/ffmpeg: only convert video frame pts if we have a frame

Message ID 20221126081911.31275-10-anton@khirnov.net
State Accepted
Commit 8ee4365ad8e437e564e4daa8ac4b9f94624c386c
Headers show
Series [FFmpeg-devel,01/13] fftools/ffmpeg: stop explicitly closing decoders | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Anton Khirnov Nov. 26, 2022, 8:19 a.m. UTC
Calling adjust_frame_pts_to_encoder_tb() with a NULL frame does not
perform a meaningful action.
---
 fftools/ffmpeg.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
diff mbox series

Patch

diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index e56681a461..8f27b5ca3f 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -678,7 +678,7 @@  static double adjust_frame_pts_to_encoder_tb(OutputFile *of, OutputStream *ost,
     double float_pts = AV_NOPTS_VALUE; // this is identical to frame.pts but with higher precision
     AVCodecContext *enc = ost->enc_ctx;
     AVRational filter_tb = (AVRational){ -1, -1 };
-    if (!frame || frame->pts == AV_NOPTS_VALUE || !enc)
+    if (frame->pts == AV_NOPTS_VALUE || !enc)
         goto early_exit;
 
     {
@@ -1092,12 +1092,10 @@  static void do_video_out(OutputFile *of,
     int64_t nb_frames, nb0_frames, i;
     double delta, delta0;
     double duration = 0;
-    double sync_ipts = AV_NOPTS_VALUE;
     InputStream *ist = ost->ist;
     AVFilterContext *filter = ost->filter->filter;
 
     init_output_stream_wrapper(ost, next_picture, 1);
-    sync_ipts = adjust_frame_pts_to_encoder_tb(of, ost, next_picture);
 
     frame_rate = av_buffersink_get_frame_rate(filter);
     if (frame_rate.num > 0 && frame_rate.den > 0)
@@ -1121,6 +1119,7 @@  static void do_video_out(OutputFile *of,
                                           ost->last_nb0_frames[1],
                                           ost->last_nb0_frames[2]);
     } else {
+        double sync_ipts = adjust_frame_pts_to_encoder_tb(of, ost, next_picture);
         /* delta0 is the "drift" between the input frame (next_picture) and
          * where it would fall in the output. */
         delta0 = sync_ipts - ost->next_pts;