[farsight2/master] Add sending property to rtcp filter

Olivier Crête olivier.crete at collabora.co.uk
Thu Feb 5 06:32:04 PST 2009


---
 gst/rtcpfilter/fs-rtcp-filter.c |   70 +++++++++++++++++++++++++++++++++++++--
 gst/rtcpfilter/fs-rtcp-filter.h |    2 +
 2 files changed, 69 insertions(+), 3 deletions(-)

diff --git a/gst/rtcpfilter/fs-rtcp-filter.c b/gst/rtcpfilter/fs-rtcp-filter.c
index a0ba6e4..2ebef2c 100644
--- a/gst/rtcpfilter/fs-rtcp-filter.c
+++ b/gst/rtcpfilter/fs-rtcp-filter.c
@@ -69,11 +69,20 @@ enum
 
 enum
 {
-  ARG_0,
+  PROP_0,
+  PROP_SENDING
 };
 
+static void fs_rtcp_filter_get_property (GObject *object,
+    guint prop_id,
+    GValue *value,
+    GParamSpec *pspec);
+static void fs_rtcp_filter_set_property (GObject *object,
+    guint prop_id,
+    const GValue *value,
+    GParamSpec *pspec);
 
-GstFlowReturn
+static GstFlowReturn
 fs_rtcp_filter_transform_ip (GstBaseTransform *transform, GstBuffer *buf);
 
 static void
@@ -102,20 +111,75 @@ fs_rtcp_filter_base_init (gpointer klass)
 static void
 fs_rtcp_filter_class_init (FsRtcpFilterClass *klass)
 {
+  GObjectClass *gobject_class;
   GstBaseTransformClass *gstbasetransform_class;
 
+  gobject_class = (GObjectClass *) klass;
   gstbasetransform_class = (GstBaseTransformClass *) klass;
 
+  gobject_class->set_property = GST_DEBUG_FUNCPTR (fs_rtcp_filter_set_property);
+  gobject_class->get_property = GST_DEBUG_FUNCPTR (fs_rtcp_filter_get_property);
+
   gstbasetransform_class->transform_ip = fs_rtcp_filter_transform_ip;
+
+  g_object_class_install_property (gobject_class,
+      PROP_SENDING,
+      g_param_spec_boolean ("sending",
+          "Sending RTP?",
+          "If set to FALSE, it assumes that all RTP has been dropped",
+          FALSE,
+          G_PARAM_READWRITE));
 }
 
 static void
 fs_rtcp_filter_init (FsRtcpFilter *rtcpfilter,
     FsRtcpFilterClass *klass)
 {
+  rtcpfilter->sending = FALSE;
+}
+
+static void
+fs_rtcp_filter_get_property (GObject *object,
+    guint prop_id,
+    GValue *value,
+    GParamSpec *pspec)
+{
+  FsRtcpFilter *filter = FS_RTCP_FILTER (object);
+
+  switch (prop_id)
+  {
+    case PROP_SENDING:
+      GST_OBJECT_LOCK (filter);
+      g_value_set_boolean (value, filter->sending);
+      GST_OBJECT_UNLOCK (filter);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+static void
+fs_rtcp_filter_set_property (GObject *object,
+    guint prop_id,
+    const GValue *value,
+    GParamSpec *pspec)
+{
+  FsRtcpFilter *filter = FS_RTCP_FILTER (object);
+
+  switch (prop_id)
+  {
+    case PROP_SENDING:
+      GST_OBJECT_LOCK (filter);
+      filter->sending = g_value_get_boolean (value);
+      GST_OBJECT_UNLOCK (filter);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
 }
 
-GstFlowReturn
+static GstFlowReturn
 fs_rtcp_filter_transform_ip (GstBaseTransform *transform, GstBuffer *buf)
 {
   if (!gst_rtcp_buffer_validate (buf))
diff --git a/gst/rtcpfilter/fs-rtcp-filter.h b/gst/rtcpfilter/fs-rtcp-filter.h
index cb04b2e..a8f0f8a 100644
--- a/gst/rtcpfilter/fs-rtcp-filter.h
+++ b/gst/rtcpfilter/fs-rtcp-filter.h
@@ -51,6 +51,8 @@ typedef struct _FsRtcpFilterPrivate FsRtcpFilterPrivate;
 struct _FsRtcpFilter
 {
   GstBaseTransform parent;
+
+  gboolean sending;
 };
 
 struct _FsRtcpFilterClass
-- 
1.5.6.5




More information about the farsight-commits mailing list