diff --git a/gst/rtpmanager/gstrtpjitterbuffer.c b/gst/rtpmanager/gstrtpjitterbuffer.c index e1a736007c..4b61bb3a42 100644 --- a/gst/rtpmanager/gstrtpjitterbuffer.c +++ b/gst/rtpmanager/gstrtpjitterbuffer.c @@ -2210,11 +2210,16 @@ gst_rtp_jitter_buffer_chain (GstPad * pad, GstObject * parent, if (G_UNLIKELY (rtp_jitter_buffer_get_ts_diff (priv->jbuf) >= latency_ts)) { RTPJitterBufferItem *old_item; - old_item = rtp_jitter_buffer_pop (priv->jbuf, &percent); - GST_DEBUG_OBJECT (jitterbuffer, "Queue full, dropping old packet %p", - old_item); - priv->next_seqnum = (old_item->seqnum + 1) & 0xffff; - free_item (old_item); + old_item = rtp_jitter_buffer_peek (priv->jbuf); + + /* only drop non-event buffers */ + if (old_item->type != ITEM_TYPE_EVENT) { + old_item = rtp_jitter_buffer_pop (priv->jbuf, &percent); + GST_DEBUG_OBJECT (jitterbuffer, "Queue full, dropping old packet %p", + old_item); + priv->next_seqnum = (old_item->seqnum + 1) & 0xffff; + free_item (old_item); + } } }