+static GstPadProbeReturn
+rtcp_pad_blocking (GstPad * pad, GstPadProbeInfo * info, gpointer user_data)
+{
+ GstRTSPStreamPrivate *priv;
+ GstRTSPStream *stream;
+ GstPadProbeReturn ret = GST_PAD_PROBE_OK;
+
+ stream = user_data;
+ priv = stream->priv;
+
+ g_mutex_lock (&priv->lock);
+
+ if ((info->type & GST_PAD_PROBE_TYPE_BUFFER) ||
+ (info->type & GST_PAD_PROBE_TYPE_BUFFER_LIST)) {
+ GST_DEBUG_OBJECT (pad, "Now blocking on buffer");
+ } else if ((info->type & GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM)) {
+ if (GST_EVENT_TYPE (info->data) == GST_EVENT_GAP) {
+ GST_DEBUG_OBJECT (pad, "Now blocking on gap event");
+ ret = GST_PAD_PROBE_OK;
+ } else {
+ ret = GST_PAD_PROBE_PASS;
+ g_mutex_unlock (&priv->lock);
+ goto done;
+ }
+ } else {
+ g_assert_not_reached ();
+ }
+
+ g_mutex_unlock (&priv->lock);
+
+done:
+ return ret;
+}
+
+