mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-17 22:06:41 +00:00
rtpjitterbuffer: If we get a gap with a buffer without DTS, error out
We (currently?) can't really handle gaps between RTP packets if they're not properly timestamped. The current code would go into calculations with GST_CLOCK_TIME_NONE and then cause assertions everywhere. It's probably better to error out cleanly instead.
This commit is contained in:
parent
07c5d1820a
commit
87c8c163a8
1 changed files with 14 additions and 1 deletions
|
@ -2222,7 +2222,12 @@ gst_rtp_jitter_buffer_chain (GstPad * pad, GstObject * parent,
|
|||
} else {
|
||||
gboolean reset = FALSE;
|
||||
|
||||
if (gap < 0) {
|
||||
if (!GST_CLOCK_TIME_IS_VALID (dts)) {
|
||||
/* We would run into calculations with GST_CLOCK_TIME_NONE below
|
||||
* and can't compensate for anything without DTS on RTP packets
|
||||
*/
|
||||
goto gap_but_no_dts;
|
||||
} else if (gap < 0) {
|
||||
/* we received an old packet */
|
||||
if (G_UNLIKELY (gap < -RTP_MAX_MISORDER)) {
|
||||
/* too old packet, reset */
|
||||
|
@ -2405,6 +2410,14 @@ duplicate:
|
|||
free_item (item);
|
||||
goto finished;
|
||||
}
|
||||
gap_but_no_dts:
|
||||
{
|
||||
/* this is fatal as we can't compensate for gaps without DTS */
|
||||
GST_ELEMENT_ERROR (jitterbuffer, STREAM, DECODE, (NULL),
|
||||
("Received packet without DTS after a gap"));
|
||||
gst_buffer_unref (buffer);
|
||||
return GST_FLOW_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
static GstClockTime
|
||||
|
|
Loading…
Reference in a new issue