}
/* the timeout for when we expected a packet expired */
-static void
+static gboolean
do_expected_timeout (GstRtpJitterBuffer * jitterbuffer, TimerData * timer,
GstClockTime now)
{
}
reschedule_timer (jitterbuffer, timer, timer->seqnum,
timer->rtx_base + timer->rtx_retry);
+
+ return FALSE;
}
/* a packet is lost */
-static void
+static gboolean
do_lost_timeout (GstRtpJitterBuffer * jitterbuffer, TimerData * timer,
GstClockTime now)
{
gst_pad_push_event (priv->srcpad, event);
JBUF_LOCK (priv);
}
+ return TRUE;
}
-static void
+static gboolean
do_eos_timeout (GstRtpJitterBuffer * jitterbuffer, TimerData * timer,
GstClockTime now)
{
GST_INFO_OBJECT (jitterbuffer, "got the NPT timeout");
remove_timer (jitterbuffer, timer);
JBUF_SIGNAL_EVENT (priv);
+
+ return TRUE;
}
-static void
+static gboolean
do_deadline_timeout (GstRtpJitterBuffer * jitterbuffer, TimerData * timer,
GstClockTime now)
{
priv->next_seqnum = timer->seqnum;
remove_timer (jitterbuffer, timer);
JBUF_SIGNAL_EVENT (priv);
+
+ return TRUE;
+}
+
+static gboolean
+do_timeout (GstRtpJitterBuffer * jitterbuffer, TimerData * timer,
+ GstClockTime now)
+{
+ gboolean removed = FALSE;
+
+ switch (timer->type) {
+ case TIMER_TYPE_EXPECTED:
+ removed = do_expected_timeout (jitterbuffer, timer, now);
+ break;
+ case TIMER_TYPE_LOST:
+ removed = do_lost_timeout (jitterbuffer, timer, now);
+ break;
+ case TIMER_TYPE_DEADLINE:
+ removed = do_deadline_timeout (jitterbuffer, timer, now);
+ break;
+ case TIMER_TYPE_EOS:
+ removed = do_eos_timeout (jitterbuffer, timer, now);
+ break;
+ }
+ return removed;
}
/* called when we need to wait for the next timeout.
/* no timestamp, timeout immeditately */
if (test_timeout == -1 || test_timeout <= now) {
- switch (test->type) {
- case TIMER_TYPE_EXPECTED:
- do_expected_timeout (jitterbuffer, test, now);
- break;
- case TIMER_TYPE_LOST:
- do_lost_timeout (jitterbuffer, test, now);
- i--;
- len--;
- break;
- case TIMER_TYPE_DEADLINE:
- do_deadline_timeout (jitterbuffer, test, now);
- i--;
- len--;
- break;
- case TIMER_TYPE_EOS:
- do_eos_timeout (jitterbuffer, test, now);
- i--;
- len--;
- break;
+ if (do_timeout (jitterbuffer, test, now)) {
+ i--;
+ len--;
}
} else {
/* find the smallest timeout */