diff --git a/gst-libs/gst/rtp/gstbasertpaudiopayload.c b/gst-libs/gst/rtp/gstbasertpaudiopayload.c index 15969620b9..512455a69d 100644 --- a/gst-libs/gst/rtp/gstbasertpaudiopayload.c +++ b/gst-libs/gst/rtp/gstbasertpaudiopayload.c @@ -722,16 +722,27 @@ static GstClockTime gst_base_rtp_audio_payload_frame_bytes_to_time (GstBaseRTPAudioPayload * payload, guint64 bytes) { - return (bytes / payload->frame_size) * (payload->priv->frame_duration_ns); + guint64 framecount; + + framecount = bytes / payload->frame_size; + if (G_UNLIKELY (bytes % payload->frame_size)) + framecount++; + + return framecount * payload->priv->frame_duration_ns; } static guint32 gst_base_rtp_audio_payload_frame_bytes_to_rtptime (GstBaseRTPAudioPayload * payload, guint64 bytes) { + guint64 framecount; guint64 time; - time = (bytes / payload->frame_size) * (payload->priv->frame_duration_ns); + framecount = bytes / payload->frame_size; + if (G_UNLIKELY (bytes % payload->frame_size)) + framecount++; + + time = framecount * payload->priv->frame_duration_ns; return gst_util_uint64_scale_int (time, GST_BASE_RTP_PAYLOAD (payload)->clock_rate, GST_SECOND);