summaryrefslogtreecommitdiff
path: root/fftools/ffmpeg.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2022-11-25 21:31:09 +0100
committerAnton Khirnov <anton@khirnov.net>2022-11-28 10:28:14 +0100
commit8ee4365ad8e437e564e4daa8ac4b9f94624c386c (patch)
tree355f2eac475a6d8d94ee25bd4b72bc953c7d5593 /fftools/ffmpeg.c
parent617ea07c220b1c5cce5de56ab5c3cfaaf376d357 (diff)
fftools/ffmpeg: only convert video frame pts if we have a frame
Calling adjust_frame_pts_to_encoder_tb() with a NULL frame does not perform a meaningful action.
Diffstat (limited to 'fftools/ffmpeg.c')
-rw-r--r--fftools/ffmpeg.c5
1 files changed, 2 insertions, 3 deletions
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;