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);
+ }
}
}