rtp: fix for API changes in the base classes
authorWim Taymans <wim.taymans@collabora.co.uk>
Mon, 13 Jun 2011 11:25:49 +0000 (13:25 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Mon, 13 Jun 2011 11:25:49 +0000 (13:25 +0200)
13 files changed:
gst/rtp/Makefile.am
gst/rtp/gstrtp.c
gst/rtp/gstrtpac3pay.c
gst/rtp/gstrtpbvpay.c
gst/rtp/gstrtpceltdepay.c
gst/rtp/gstrtpceltpay.c
gst/rtp/gstrtpdepay.c [deleted file]
gst/rtp/gstrtpdepay.h [deleted file]
gst/rtp/gstrtpg722pay.c
gst/rtp/gstrtpg726pay.c
gst/rtp/gstrtpilbcpay.c
gst/rtp/gstrtpmpapay.c
gst/rtp/gstrtpmpvpay.c

index dcccb66cedfe30edd8de41ee572fbc8489074dcd..3df2cac10bc0ad43a9fa022f9e915738a3344fd8 100644 (file)
@@ -4,7 +4,6 @@ libgstrtp_la_SOURCES = \
        fnv1hash.c \
        gstrtp.c \
        gstrtpchannels.c \
-       gstrtpdepay.c \
        gstrtpac3depay.c \
        gstrtpac3pay.c \
        gstrtpbvdepay.c \
@@ -148,7 +147,6 @@ noinst_HEADERS =                    \
                 gstrtpmp4gpay.h        \
                 gstrtpmp4adepay.h      \
                 gstrtpmp4apay.h        \
-                gstrtpdepay.h          \
                 gstasteriskh263.h      \
                 gstrtpqcelpdepay.h     \
                 gstrtpqdmdepay.h       \
index 721cee3c845d77fb4a38c3a7184e1f8b1a988e85..7de6da361adecca322ce1caec073981e177b1a33 100644 (file)
@@ -21,7 +21,6 @@
 #include "config.h"
 #endif
 
-#include "gstrtpdepay.h"
 #include "gstrtpac3depay.h"
 #include "gstrtpac3pay.h"
 #include "gstrtpbvdepay.h"
@@ -94,9 +93,6 @@
 static gboolean
 plugin_init (GstPlugin * plugin)
 {
-  if (!gst_rtp_depay_plugin_init (plugin))
-    return FALSE;
-
   if (!gst_rtp_ac3_depay_plugin_init (plugin))
     return FALSE;
 
index b29abd77eef094cad0c686e0e75e01644adced60..851b92d680f82e1a3fd489d1ada217fe2ee96483 100644 (file)
@@ -55,7 +55,8 @@ static GstStateChangeReturn gst_rtp_ac3_pay_change_state (GstElement * element,
 
 static gboolean gst_rtp_ac3_pay_setcaps (GstBaseRTPPayload * payload,
     GstCaps * caps);
-static gboolean gst_rtp_ac3_pay_handle_event (GstPad * pad, GstEvent * event);
+static gboolean gst_rtp_ac3_pay_handle_event (GstBaseRTPPayload * payload,
+    GstEvent * event);
 static GstFlowReturn gst_rtp_ac3_pay_flush (GstRtpAC3Pay * rtpac3pay);
 static GstFlowReturn gst_rtp_ac3_pay_handle_buffer (GstBaseRTPPayload * payload,
     GstBuffer * buffer);
@@ -142,11 +143,12 @@ gst_rtp_ac3_pay_setcaps (GstBaseRTPPayload * payload, GstCaps * caps)
 }
 
 static gboolean
-gst_rtp_ac3_pay_handle_event (GstPad * pad, GstEvent * event)
+gst_rtp_ac3_pay_handle_event (GstBaseRTPPayload * payload, GstEvent * event)
 {
+  gboolean res;
   GstRtpAC3Pay *rtpac3pay;
 
-  rtpac3pay = GST_RTP_AC3_PAY (gst_pad_get_parent (pad));
+  rtpac3pay = GST_RTP_AC3_PAY (payload);
 
   switch (GST_EVENT_TYPE (event)) {
     case GST_EVENT_EOS:
@@ -160,10 +162,10 @@ gst_rtp_ac3_pay_handle_event (GstPad * pad, GstEvent * event)
       break;
   }
 
-  gst_object_unref (rtpac3pay);
+  res =
+      GST_BASE_RTP_PAYLOAD_CLASS (parent_class)->handle_event (payload, event);
 
-  /* FALSE to let the parent handle the event as well */
-  return FALSE;
+  return res;
 }
 
 struct frmsize_s
index 518482692fdd7185bdd3f6c6008b1423f80c5dd7..2066d9cc3add662ecb5cb200da50c0e6731b74f6 100644 (file)
@@ -54,7 +54,7 @@ static GstStaticPadTemplate gst_rtp_bv_pay_src_template =
 
 
 static GstCaps *gst_rtp_bv_pay_sink_getcaps (GstBaseRTPPayload * payload,
-    GstPad * pad);
+    GstPad * pad, GstCaps * filter);
 static gboolean gst_rtp_bv_pay_sink_setcaps (GstBaseRTPPayload * payload,
     GstCaps * caps);
 
@@ -173,7 +173,8 @@ mode_changed:
 /* we return the padtemplate caps with the mode field fixated to a value if we
  * can */
 static GstCaps *
-gst_rtp_bv_pay_sink_getcaps (GstBaseRTPPayload * rtppayload, GstPad * pad)
+gst_rtp_bv_pay_sink_getcaps (GstBaseRTPPayload * rtppayload, GstPad * pad,
+    GstCaps * filter)
 {
   GstCaps *otherpadcaps;
   GstCaps *caps;
index b0a63c1d7f981d920abd94f571ad8bf78257b69e..6472b30863723d2eae6e2babafaaba565c2a887b 100644 (file)
@@ -175,13 +175,11 @@ gst_rtp_celt_depay_setcaps (GstBaseRTPDepayload * depayload, GstCaps * caps)
   res = gst_pad_set_caps (depayload->srcpad, srccaps);
   gst_caps_unref (srccaps);
 
-  gst_buffer_set_caps (buf, GST_PAD_CAPS (depayload->srcpad));
   gst_base_rtp_depayload_push (GST_BASE_RTP_DEPAYLOAD (rtpceltdepay), buf);
 
   buf = gst_buffer_new_and_alloc (sizeof (gst_rtp_celt_comment));
   gst_buffer_fill (buf, 0, gst_rtp_celt_comment, sizeof (gst_rtp_celt_comment));
 
-  gst_buffer_set_caps (buf, GST_PAD_CAPS (depayload->srcpad));
   gst_base_rtp_depayload_push (GST_BASE_RTP_DEPAYLOAD (rtpceltdepay), buf);
 
   return res;
index 6c8f0b9b7e1d6abf288bbd63420bb64bcde48af7..176de7e3e3a83a92c2f46f2f1e8e78243a6037e9 100644 (file)
@@ -58,7 +58,7 @@ static GstStateChangeReturn gst_rtp_celt_pay_change_state (GstElement *
 static gboolean gst_rtp_celt_pay_setcaps (GstBaseRTPPayload * payload,
     GstCaps * caps);
 static GstCaps *gst_rtp_celt_pay_getcaps (GstBaseRTPPayload * payload,
-    GstPad * pad);
+    GstPad * pad, GstCaps * filter);
 static GstFlowReturn gst_rtp_celt_pay_handle_buffer (GstBaseRTPPayload *
     payload, GstBuffer * buffer);
 
@@ -157,7 +157,8 @@ gst_rtp_celt_pay_setcaps (GstBaseRTPPayload * payload, GstCaps * caps)
 
 
 static GstCaps *
-gst_rtp_celt_pay_getcaps (GstBaseRTPPayload * payload, GstPad * pad)
+gst_rtp_celt_pay_getcaps (GstBaseRTPPayload * payload, GstPad * pad,
+    GstCaps * filter)
 {
   GstCaps *otherpadcaps;
   GstCaps *caps;
diff --git a/gst/rtp/gstrtpdepay.c b/gst/rtp/gstrtpdepay.c
deleted file mode 100644 (file)
index cabdcda..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-/* GStreamer
- * Copyright (C) <2005> Wim Taymans <wim.taymans@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-/* Element-Checklist-Version: 5 */
-
-#include "gstrtpdepay.h"
-
-GST_DEBUG_CATEGORY_STATIC (rtpdepay_debug);
-#define GST_CAT_DEFAULT (rtpdepay_debug)
-
-static GstStaticPadTemplate gst_rtp_depay_src_rtp_template =
-GST_STATIC_PAD_TEMPLATE ("srcrtp",
-    GST_PAD_SRC,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS ("application/x-rtp")
-    );
-
-static GstStaticPadTemplate gst_rtp_depay_src_rtcp_template =
-GST_STATIC_PAD_TEMPLATE ("srcrtcp",
-    GST_PAD_SRC,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS ("application/x-rtcp")
-    );
-
-static GstStaticPadTemplate gst_rtp_depay_sink_rtp_template =
-GST_STATIC_PAD_TEMPLATE ("sinkrtp",
-    GST_PAD_SINK,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS ("application/x-rtp")
-    );
-
-static GstStaticPadTemplate gst_rtp_depay_sink_rtcp_template =
-GST_STATIC_PAD_TEMPLATE ("sinkrtcp",
-    GST_PAD_SINK,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS ("application/x-rtcp")
-    );
-
-static GstCaps *gst_rtp_depay_getcaps (GstPad * pad);
-static GstFlowReturn gst_rtp_depay_chain_rtp (GstPad * pad, GstBuffer * buffer);
-static GstFlowReturn gst_rtp_depay_chain_rtcp (GstPad * pad,
-    GstBuffer * buffer);
-
-G_DEFINE_TYPE (GstRTPDepay, gst_rtp_depay, GST_TYPE_ELEMENT);
-
-static void
-gst_rtp_depay_class_init (GstRTPDepayClass * klass)
-{
-  GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
-
-  GST_DEBUG_CATEGORY_INIT (rtpdepay_debug, "rtpdepay", 0, "RTP decoder");
-
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_rtp_depay_src_rtp_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_rtp_depay_src_rtcp_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_rtp_depay_sink_rtp_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_rtp_depay_sink_rtcp_template));
-
-  gst_element_class_set_details_simple (gstelement_class,
-      "Dummy RTP session manager", "Codec/Depayloader/Network/RTP",
-      "Accepts raw RTP and RTCP packets and sends them forward",
-      "Wim Taymans <wim.taymans@gmail.com>");
-}
-
-static void
-gst_rtp_depay_init (GstRTPDepay * rtpdepay)
-{
-  /* the input rtp pad */
-  rtpdepay->sink_rtp =
-      gst_pad_new_from_static_template (&gst_rtp_depay_sink_rtp_template,
-      "sinkrtp");
-  gst_element_add_pad (GST_ELEMENT (rtpdepay), rtpdepay->sink_rtp);
-  gst_pad_set_getcaps_function (rtpdepay->sink_rtp, gst_rtp_depay_getcaps);
-  gst_pad_set_chain_function (rtpdepay->sink_rtp, gst_rtp_depay_chain_rtp);
-
-  /* the input rtcp pad */
-  rtpdepay->sink_rtcp =
-      gst_pad_new_from_static_template (&gst_rtp_depay_sink_rtcp_template,
-      "sinkrtcp");
-  gst_element_add_pad (GST_ELEMENT (rtpdepay), rtpdepay->sink_rtcp);
-  gst_pad_set_chain_function (rtpdepay->sink_rtcp, gst_rtp_depay_chain_rtcp);
-
-  /* the output rtp pad */
-  rtpdepay->src_rtp =
-      gst_pad_new_from_static_template (&gst_rtp_depay_src_rtp_template,
-      "srcrtp");
-  gst_pad_set_getcaps_function (rtpdepay->src_rtp, gst_rtp_depay_getcaps);
-  gst_element_add_pad (GST_ELEMENT (rtpdepay), rtpdepay->src_rtp);
-
-  /* the output rtcp pad */
-  rtpdepay->src_rtcp =
-      gst_pad_new_from_static_template (&gst_rtp_depay_src_rtcp_template,
-      "srcrtcp");
-  gst_element_add_pad (GST_ELEMENT (rtpdepay), rtpdepay->src_rtcp);
-}
-
-static GstCaps *
-gst_rtp_depay_getcaps (GstPad * pad)
-{
-  GstRTPDepay *src;
-  GstPad *other;
-  GstCaps *caps;
-
-  src = GST_RTP_DEPAY (GST_PAD_PARENT (pad));
-
-  other = pad == src->src_rtp ? src->sink_rtp : src->src_rtp;
-
-  caps = gst_pad_peer_get_caps (other);
-
-  if (caps == NULL)
-    caps = gst_caps_copy (gst_pad_get_pad_template_caps (pad));
-
-  return caps;
-}
-
-static GstFlowReturn
-gst_rtp_depay_chain_rtp (GstPad * pad, GstBuffer * buffer)
-{
-  GstRTPDepay *src;
-
-  src = GST_RTP_DEPAY (GST_PAD_PARENT (pad));
-
-  GST_DEBUG ("got rtp packet");
-  return gst_pad_push (src->src_rtp, buffer);
-}
-
-static GstFlowReturn
-gst_rtp_depay_chain_rtcp (GstPad * pad, GstBuffer * buffer)
-{
-  GST_DEBUG ("got rtcp packet");
-
-  gst_buffer_unref (buffer);
-  return GST_FLOW_OK;
-}
-
-gboolean
-gst_rtp_depay_plugin_init (GstPlugin * plugin)
-{
-  return gst_element_register (plugin, "rtpdepay",
-      GST_RANK_SECONDARY, GST_TYPE_RTP_DEPAY);
-}
diff --git a/gst/rtp/gstrtpdepay.h b/gst/rtp/gstrtpdepay.h
deleted file mode 100644 (file)
index b2b4683..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/* GStreamer
- * Copyright (C) <2005> Wim Taymans <wim.taymans@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#ifndef __GST_RTP_DEPAY_H__
-#define __GST_RTP_DEPAY_H__
-
-#include <gst/gst.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_RTP_DEPAY              (gst_rtp_depay_get_type())
-#define GST_IS_RTP_DEPAY(obj)           (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_DEPAY))
-#define GST_IS_RTP_DEPAY_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_DEPAY))
-#define GST_RTP_DEPAY(obj)              (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_DEPAY, GstRTPDepay))
-#define GST_RTP_DEPAY_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_DEPAY, GstRTPDepayClass))
-
-typedef struct _GstRTPDepay GstRTPDepay;
-typedef struct _GstRTPDepayClass GstRTPDepayClass;
-
-struct _GstRTPDepay {
-  GstElement element;
-
-  GstPad *sink_rtp;
-  GstPad *sink_rtcp;
-  GstPad *src_rtp;
-  GstPad *src_rtcp;
-};
-
-struct _GstRTPDepayClass {
-  GstElementClass parent_class;
-};
-
-gboolean gst_rtp_depay_plugin_init (GstPlugin * plugin);
-
-GType gst_rtp_depay_get_type(void);
-
-G_END_DECLS
-
-#endif /* __GST_RTP_DEPAY_H__ */
index b2c8ff4fa1dbb89a9a997ac6f9c6491c886dad79..362e4bcb890cc78aa36bdea741f0d83c00731530 100644 (file)
@@ -54,7 +54,7 @@ GST_STATIC_PAD_TEMPLATE ("src",
 static gboolean gst_rtp_g722_pay_setcaps (GstBaseRTPPayload * basepayload,
     GstCaps * caps);
 static GstCaps *gst_rtp_g722_pay_getcaps (GstBaseRTPPayload * rtppayload,
-    GstPad * pad);
+    GstPad * pad, GstCaps * filter);
 
 #define gst_rtp_g722_pay_parent_class parent_class
 G_DEFINE_TYPE (GstRtpG722Pay, gst_rtp_g722_pay,
@@ -177,7 +177,8 @@ no_channels:
 }
 
 static GstCaps *
-gst_rtp_g722_pay_getcaps (GstBaseRTPPayload * rtppayload, GstPad * pad)
+gst_rtp_g722_pay_getcaps (GstBaseRTPPayload * rtppayload, GstPad * pad,
+    GstCaps * filter)
 {
   GstCaps *otherpadcaps;
   GstCaps *caps;
index 71ac10775d18bf3f779692cecbb5f59f842fd4d3..12b772f7b68121b9c96e6b80aa3a3bf2a1e77139 100644 (file)
@@ -181,7 +181,7 @@ gst_rtp_g726_pay_setcaps (GstBaseRTPPayload * payload, GstCaps * caps)
   GST_DEBUG_OBJECT (payload, "selected base encoding %s", encoding_name);
 
   /* now see if we need to produce AAL2 or not */
-  peercaps = gst_pad_peer_get_caps (payload->srcpad);
+  peercaps = gst_pad_peer_get_caps (payload->srcpad, NULL);
   if (peercaps) {
     GstCaps *filter, *intersect;
     gchar *capsstr;
index 0fb042963e2af05fc7505d8f5b22f759621bd563..3460e7f38e851854d4490921b1b3b12071c985fa 100644 (file)
@@ -49,7 +49,7 @@ GST_STATIC_PAD_TEMPLATE ("src",
 
 
 static GstCaps *gst_rtp_ilbc_pay_sink_getcaps (GstBaseRTPPayload * payload,
-    GstPad * pad);
+    GstPad * pad, GstCaps * filter);
 static gboolean gst_rtp_ilbc_pay_sink_setcaps (GstBaseRTPPayload * payload,
     GstCaps * caps);
 
@@ -175,7 +175,8 @@ mode_changed:
 /* we return the padtemplate caps with the mode field fixated to a value if we
  * can */
 static GstCaps *
-gst_rtp_ilbc_pay_sink_getcaps (GstBaseRTPPayload * rtppayload, GstPad * pad)
+gst_rtp_ilbc_pay_sink_getcaps (GstBaseRTPPayload * rtppayload, GstPad * pad,
+    GstCaps * filter)
 {
   GstCaps *otherpadcaps;
   GstCaps *caps;
index 4bfd55f309c137038ae7a3ea06ad662d25c2f172..d4ab883beb9fb9fa33e98db313c195619a2861a6 100644 (file)
@@ -58,7 +58,8 @@ static GstStateChangeReturn gst_rtp_mpa_pay_change_state (GstElement * element,
 
 static gboolean gst_rtp_mpa_pay_setcaps (GstBaseRTPPayload * payload,
     GstCaps * caps);
-static gboolean gst_rtp_mpa_pay_handle_event (GstPad * pad, GstEvent * event);
+static gboolean gst_rtp_mpa_pay_handle_event (GstBaseRTPPayload * payload,
+    GstEvent * event);
 static GstFlowReturn gst_rtp_mpa_pay_flush (GstRtpMPAPay * rtpmpapay);
 static GstFlowReturn gst_rtp_mpa_pay_handle_buffer (GstBaseRTPPayload * payload,
     GstBuffer * buffer);
@@ -139,11 +140,12 @@ gst_rtp_mpa_pay_setcaps (GstBaseRTPPayload * payload, GstCaps * caps)
 }
 
 static gboolean
-gst_rtp_mpa_pay_handle_event (GstPad * pad, GstEvent * event)
+gst_rtp_mpa_pay_handle_event (GstBaseRTPPayload * payload, GstEvent * event)
 {
+  gboolean ret;
   GstRtpMPAPay *rtpmpapay;
 
-  rtpmpapay = GST_RTP_MPA_PAY (gst_pad_get_parent (pad));
+  rtpmpapay = GST_RTP_MPA_PAY (payload);
 
   switch (GST_EVENT_TYPE (event)) {
     case GST_EVENT_EOS:
@@ -157,10 +159,10 @@ gst_rtp_mpa_pay_handle_event (GstPad * pad, GstEvent * event)
       break;
   }
 
-  gst_object_unref (rtpmpapay);
+  ret =
+      GST_BASE_RTP_PAYLOAD_CLASS (parent_class)->handle_event (payload, event);
 
-  /* FALSE to let the parent handle the event as well */
-  return FALSE;
+  return ret;
 }
 
 static GstFlowReturn
index d66968cb2e69ac8a1164c6960438ad7fd436a38d..1d32e9a2a26a355abd93bc205094abd5428cf193 100644 (file)
@@ -58,7 +58,8 @@ static gboolean gst_rtp_mpv_pay_setcaps (GstBaseRTPPayload * payload,
     GstCaps * caps);
 static GstFlowReturn gst_rtp_mpv_pay_handle_buffer (GstBaseRTPPayload *
     payload, GstBuffer * buffer);
-static gboolean gst_rtp_mpv_pay_handle_event (GstPad * pad, GstEvent * event);
+static gboolean gst_rtp_mpv_pay_handle_event (GstBaseRTPPayload * payload,
+    GstEvent * event);
 
 #define gst_rtp_mpv_pay_parent_class parent_class
 G_DEFINE_TYPE (GstRTPMPVPay, gst_rtp_mpv_pay, GST_TYPE_BASE_RTP_PAYLOAD);
@@ -135,11 +136,12 @@ gst_rtp_mpv_pay_setcaps (GstBaseRTPPayload * payload, GstCaps * caps)
 }
 
 static gboolean
-gst_rtp_mpv_pay_handle_event (GstPad * pad, GstEvent * event)
+gst_rtp_mpv_pay_handle_event (GstBaseRTPPayload * payload, GstEvent * event)
 {
+  gboolean ret;
   GstRTPMPVPay *rtpmpvpay;
 
-  rtpmpvpay = GST_RTP_MPV_PAY (gst_pad_get_parent (pad));
+  rtpmpvpay = GST_RTP_MPV_PAY (payload);
 
   switch (GST_EVENT_TYPE (event)) {
     case GST_EVENT_EOS:
@@ -153,10 +155,10 @@ gst_rtp_mpv_pay_handle_event (GstPad * pad, GstEvent * event)
       break;
   }
 
-  gst_object_unref (rtpmpvpay);
+  ret =
+      GST_BASE_RTP_PAYLOAD_CLASS (parent_class)->handle_event (payload, event);
 
-  /* FALSE to let the parent handle the event as well */
-  return FALSE;
+  return ret;
 }
 
 static GstFlowReturn