From 912f85914877a70c259c3eba94d30961247e6ef9 Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Tue, 5 Dec 2023 19:52:22 +0900 Subject: [PATCH] nvdec: Fix division by zero when calculating buffer duration Don't try to calculate buffer duration from variable framerate Part-of: --- subprojects/gst-plugins-bad/sys/nvcodec/gstnvdec.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/subprojects/gst-plugins-bad/sys/nvcodec/gstnvdec.c b/subprojects/gst-plugins-bad/sys/nvcodec/gstnvdec.c index 8c259cf..31313c7 100644 --- a/subprojects/gst-plugins-bad/sys/nvcodec/gstnvdec.c +++ b/subprojects/gst-plugins-bad/sys/nvcodec/gstnvdec.c @@ -808,10 +808,14 @@ parser_display_callback (GstNvDec * nvdec, CUVIDPARSERDISPINFO * dispinfo) GST_BUFFER_PTS (output_buffer) = dispinfo->timestamp; GST_BUFFER_DTS (output_buffer) = GST_CLOCK_TIME_NONE; /* assume buffer duration from framerate */ - GST_BUFFER_DURATION (output_buffer) = - gst_util_uint64_scale (GST_SECOND, - GST_VIDEO_INFO_FPS_D (&nvdec->out_info), - GST_VIDEO_INFO_FPS_N (&nvdec->out_info)); + if (nvdec->out_info.fps_n > 0 && nvdec->out_info.fps_d > 0) { + GST_BUFFER_DURATION (output_buffer) = + gst_util_uint64_scale (GST_SECOND, + GST_VIDEO_INFO_FPS_D (&nvdec->out_info), + GST_VIDEO_INFO_FPS_N (&nvdec->out_info)); + } else { + GST_BUFFER_DURATION (output_buffer) = GST_CLOCK_TIME_NONE; + } } else { ret = gst_video_decoder_allocate_output_frame (GST_VIDEO_DECODER (nvdec), frame); -- 2.7.4