summaryrefslogtreecommitdiffstats
path: root/gst/rtpmanager/rtpsource.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst/rtpmanager/rtpsource.c')
-rw-r--r--gst/rtpmanager/rtpsource.c170
1 files changed, 62 insertions, 108 deletions
diff --git a/gst/rtpmanager/rtpsource.c b/gst/rtpmanager/rtpsource.c
index fc225271..5aff0054 100644
--- a/gst/rtpmanager/rtpsource.c
+++ b/gst/rtpmanager/rtpsource.c
@@ -38,13 +38,7 @@ enum
#define DEFAULT_IS_CSRC FALSE
#define DEFAULT_IS_VALIDATED FALSE
#define DEFAULT_IS_SENDER FALSE
-#define DEFAULT_SDES_CNAME NULL
-#define DEFAULT_SDES_NAME NULL
-#define DEFAULT_SDES_EMAIL NULL
-#define DEFAULT_SDES_PHONE NULL
-#define DEFAULT_SDES_LOCATION NULL
-#define DEFAULT_SDES_TOOL NULL
-#define DEFAULT_SDES_NOTE NULL
+#define DEFAULT_SDES NULL
enum
{
@@ -53,13 +47,7 @@ enum
PROP_IS_CSRC,
PROP_IS_VALIDATED,
PROP_IS_SENDER,
- PROP_SDES_CNAME,
- PROP_SDES_NAME,
- PROP_SDES_EMAIL,
- PROP_SDES_PHONE,
- PROP_SDES_LOCATION,
- PROP_SDES_TOOL,
- PROP_SDES_NOTE,
+ PROP_SDES,
PROP_STATS,
PROP_LAST
};
@@ -89,8 +77,7 @@ rtp_source_class_init (RTPSourceClass * klass)
g_object_class_install_property (gobject_class, PROP_SSRC,
g_param_spec_uint ("ssrc", "SSRC",
- "The SSRC of this source", 0, G_MAXUINT,
- DEFAULT_SSRC,
+ "The SSRC of this source", 0, G_MAXUINT, DEFAULT_SSRC,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_IS_CSRC,
@@ -108,49 +95,30 @@ rtp_source_class_init (RTPSourceClass * klass)
"If this SSRC is a sender", DEFAULT_IS_SENDER,
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
- g_object_class_install_property (gobject_class, PROP_SDES_CNAME,
- g_param_spec_string ("sdes-cname", "SDES CNAME",
- "The CNAME to put in SDES messages of this source",
- DEFAULT_SDES_CNAME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class, PROP_SDES_NAME,
- g_param_spec_string ("sdes-name", "SDES NAME",
- "The NAME to put in SDES messages of this source",
- DEFAULT_SDES_NAME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class, PROP_SDES_EMAIL,
- g_param_spec_string ("sdes-email", "SDES EMAIL",
- "The EMAIL to put in SDES messages of this source",
- DEFAULT_SDES_EMAIL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class, PROP_SDES_PHONE,
- g_param_spec_string ("sdes-phone", "SDES PHONE",
- "The PHONE to put in SDES messages of this source",
- DEFAULT_SDES_PHONE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class, PROP_SDES_LOCATION,
- g_param_spec_string ("sdes-location", "SDES LOCATION",
- "The LOCATION to put in SDES messages of this source",
- DEFAULT_SDES_LOCATION, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class, PROP_SDES_TOOL,
- g_param_spec_string ("sdes-tool", "SDES TOOL",
- "The TOOL to put in SDES messages of this source",
- DEFAULT_SDES_TOOL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (gobject_class, PROP_SDES_NOTE,
- g_param_spec_string ("sdes-note", "SDES NOTE",
- "The NOTE to put in SDES messages of this source",
- DEFAULT_SDES_NOTE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ /**
+ * RTPSource::sdes
+ *
+ * The current SDES items of the source. Returns a structure with the
+ * following fields:
+ *
+ * 'cname' G_TYPE_STRING : The canonical name
+ * 'name' G_TYPE_STRING : The user name
+ * 'email' G_TYPE_STRING : The user's electronic mail address
+ * 'phone' G_TYPE_STRING : The user's phone number
+ * 'location' G_TYPE_STRING : The geographic user location
+ * 'tool' G_TYPE_STRING : The name of application or tool
+ * 'note' G_TYPE_STRING : A notice about the source
+ */
+ g_object_class_install_property (gobject_class, PROP_SDES,
+ g_param_spec_boxed ("sdes", "SDES",
+ "The SDES information for this source",
+ GST_TYPE_STRUCTURE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
/**
* RTPSource::stats
*
* The statistics of the source. This property returns a GstStructure with
* name application/x-rtp-source-stats with the following fields:
- *
- *
- *
*
*/
g_object_class_install_property (gobject_class, PROP_STATS,
@@ -298,6 +266,45 @@ rtp_source_create_stats (RTPSource * src)
return s;
}
+static GstStructure *
+rtp_source_create_sdes (RTPSource * src)
+{
+ GstStructure *s;
+ gchar *str;
+
+ s = gst_structure_new ("application/x-rtp-source-sdes", NULL);
+
+ if ((str = rtp_source_get_sdes_string (src, GST_RTCP_SDES_CNAME))) {
+ gst_structure_set (s, "cname", G_TYPE_STRING, str, NULL);
+ g_free (str);
+ }
+ if ((str = rtp_source_get_sdes_string (src, GST_RTCP_SDES_NAME))) {
+ gst_structure_set (s, "name", G_TYPE_STRING, str, NULL);
+ g_free (str);
+ }
+ if ((str = rtp_source_get_sdes_string (src, GST_RTCP_SDES_EMAIL))) {
+ gst_structure_set (s, "email", G_TYPE_STRING, str, NULL);
+ g_free (str);
+ }
+ if ((str = rtp_source_get_sdes_string (src, GST_RTCP_SDES_PHONE))) {
+ gst_structure_set (s, "phone", G_TYPE_STRING, str, NULL);
+ g_free (str);
+ }
+ if ((str = rtp_source_get_sdes_string (src, GST_RTCP_SDES_LOC))) {
+ gst_structure_set (s, "location", G_TYPE_STRING, str, NULL);
+ g_free (str);
+ }
+ if ((str = rtp_source_get_sdes_string (src, GST_RTCP_SDES_TOOL))) {
+ gst_structure_set (s, "tool", G_TYPE_STRING, str, NULL);
+ g_free (str);
+ }
+ if ((str = rtp_source_get_sdes_string (src, GST_RTCP_SDES_NOTE))) {
+ gst_structure_set (s, "note", G_TYPE_STRING, str, NULL);
+ g_free (str);
+ }
+ return s;
+}
+
static void
rtp_source_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
@@ -310,34 +317,6 @@ rtp_source_set_property (GObject * object, guint prop_id,
case PROP_SSRC:
src->ssrc = g_value_get_uint (value);
break;
- case PROP_SDES_CNAME:
- rtp_source_set_sdes_string (src, GST_RTCP_SDES_CNAME,
- g_value_get_string (value));
- break;
- case PROP_SDES_NAME:
- rtp_source_set_sdes_string (src, GST_RTCP_SDES_NAME,
- g_value_get_string (value));
- break;
- case PROP_SDES_EMAIL:
- rtp_source_set_sdes_string (src, GST_RTCP_SDES_EMAIL,
- g_value_get_string (value));
- break;
- case PROP_SDES_PHONE:
- rtp_source_set_sdes_string (src, GST_RTCP_SDES_PHONE,
- g_value_get_string (value));
- break;
- case PROP_SDES_LOCATION:
- rtp_source_set_sdes_string (src, GST_RTCP_SDES_LOC,
- g_value_get_string (value));
- break;
- case PROP_SDES_TOOL:
- rtp_source_set_sdes_string (src, GST_RTCP_SDES_TOOL,
- g_value_get_string (value));
- break;
- case PROP_SDES_NOTE:
- rtp_source_set_sdes_string (src, GST_RTCP_SDES_NOTE,
- g_value_get_string (value));
- break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -365,33 +344,8 @@ rtp_source_get_property (GObject * object, guint prop_id,
case PROP_IS_SENDER:
g_value_set_boolean (value, rtp_source_is_sender (src));
break;
- case PROP_SDES_CNAME:
- g_value_take_string (value, rtp_source_get_sdes_string (src,
- GST_RTCP_SDES_CNAME));
- break;
- case PROP_SDES_NAME:
- g_value_take_string (value, rtp_source_get_sdes_string (src,
- GST_RTCP_SDES_NAME));
- break;
- case PROP_SDES_EMAIL:
- g_value_take_string (value, rtp_source_get_sdes_string (src,
- GST_RTCP_SDES_EMAIL));
- break;
- case PROP_SDES_PHONE:
- g_value_take_string (value, rtp_source_get_sdes_string (src,
- GST_RTCP_SDES_PHONE));
- break;
- case PROP_SDES_LOCATION:
- g_value_take_string (value, rtp_source_get_sdes_string (src,
- GST_RTCP_SDES_LOC));
- break;
- case PROP_SDES_TOOL:
- g_value_take_string (value, rtp_source_get_sdes_string (src,
- GST_RTCP_SDES_TOOL));
- break;
- case PROP_SDES_NOTE:
- g_value_take_string (value, rtp_source_get_sdes_string (src,
- GST_RTCP_SDES_NOTE));
+ case PROP_SDES:
+ g_value_take_boxed (value, rtp_source_create_sdes (src));
break;
case PROP_STATS:
g_value_take_boxed (value, rtp_source_create_stats (src));