summaryrefslogtreecommitdiffstats
path: root/gst/rtpmanager/gstrtpsession.c
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2007-12-10 11:08:11 +0000
committerTim-Philipp Müller <tim.muller@collabora.co.uk>2009-08-11 02:30:32 +0100
commit1971ae0d82153aa2d1cc65c68f1fcd4538fcaf70 (patch)
tree4767b586f3dc6e467bc57997adcfd521070b77cc /gst/rtpmanager/gstrtpsession.c
parent1a8f489093c80935c4d9fc253ae8c50079d04380 (diff)
gst/rtpmanager/: Update comment.
Original commit message from CVS: * gst/rtpmanager/gstrtpbin.c: (create_session): * gst/rtpmanager/rtpjitterbuffer.c: Update comment. * gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_class_init), (gst_rtp_session_set_property), (gst_rtp_session_get_property): Define some GObject properties to set SDES and other configuration. * gst/rtpmanager/rtpsession.c: (rtp_session_class_init), (rtp_session_init), (rtp_session_finalize), (rtp_session_set_property), (rtp_session_get_property), (on_ssrc_sdes), (rtp_session_set_bandwidth), (rtp_session_get_bandwidth), (rtp_session_set_rtcp_fraction), (rtp_session_get_rtcp_fraction), (rtp_session_set_sdes_string), (rtp_session_get_sdes_string), (obtain_source), (rtp_session_get_internal_source), (rtp_session_process_sdes), (rtp_session_send_rtp), (rtp_session_next_timeout), (session_sdes), (is_rtcp_time): * gst/rtpmanager/rtpsession.h: Add signal when new SDES infor has been found for a source. Create properties for SDES and other info. Simplify the SDES API. Add method for getting the internal source object of the session. * gst/rtpmanager/rtpsource.c: (rtp_source_class_init), (rtp_source_finalize), (rtp_source_set_property), (rtp_source_get_property), (rtp_source_set_callbacks), (rtp_source_get_ssrc), (rtp_source_set_as_csrc), (rtp_source_is_as_csrc), (rtp_source_is_active), (rtp_source_is_validated), (rtp_source_is_sender), (rtp_source_received_bye), (rtp_source_get_bye_reason), (rtp_source_set_sdes), (rtp_source_set_sdes_string), (rtp_source_get_sdes), (rtp_source_get_sdes_string), (rtp_source_get_new_sr), (rtp_source_get_new_rb): * gst/rtpmanager/rtpsource.h: Add GObject properties for various things. Don't leak the bye reason.
Diffstat (limited to 'gst/rtpmanager/gstrtpsession.c')
-rw-r--r--gst/rtpmanager/gstrtpsession.c168
1 files changed, 162 insertions, 6 deletions
diff --git a/gst/rtpmanager/gstrtpsession.c b/gst/rtpmanager/gstrtpsession.c
index f141274f..610bd55c 100644
--- a/gst/rtpmanager/gstrtpsession.c
+++ b/gst/rtpmanager/gstrtpsession.c
@@ -215,12 +215,35 @@ enum
LAST_SIGNAL
};
-#define DEFAULT_NTP_NS_BASE 0
+#define DEFAULT_NTP_NS_BASE 0
+#define DEFAULT_BANDWIDTH RTP_STATS_BANDWIDTH
+#define DEFAULT_RTCP_FRACTION RTP_STATS_RTCP_BANDWIDTH
+#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_NUM_SOURCES 0
+#define DEFAULT_NUM_ACTIVE_SOURCES 0
enum
{
PROP_0,
- PROP_NTP_NS_BASE
+ PROP_NTP_NS_BASE,
+ PROP_BANDWIDTH,
+ PROP_RTCP_FRACTION,
+ PROP_SDES_CNAME,
+ PROP_SDES_NAME,
+ PROP_SDES_EMAIL,
+ PROP_SDES_PHONE,
+ PROP_SDES_LOCATION,
+ PROP_SDES_TOOL,
+ PROP_SDES_NOTE,
+ PROP_NUM_SOURCES,
+ PROP_NUM_ACTIVE_SOURCES,
+ PROP_LAST
};
#define GST_RTP_SESSION_GET_PRIVATE(obj) \
@@ -378,7 +401,6 @@ gst_rtp_session_class_init (GstRtpSessionClass * klass)
gobject_class->set_property = gst_rtp_session_set_property;
gobject_class->get_property = gst_rtp_session_get_property;
-
/**
* GstRtpSession::request-pt-map:
* @sess: the object which received the signal
@@ -489,6 +511,61 @@ gst_rtp_session_class_init (GstRtpSessionClass * klass)
"The NTP base time corresponding to running_time 0", 0,
G_MAXUINT64, DEFAULT_NTP_NS_BASE, G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, PROP_BANDWIDTH,
+ g_param_spec_double ("bandwidth", "Bandwidth",
+ "The bandwidth of the session",
+ 0.0, G_MAXDOUBLE, DEFAULT_BANDWIDTH, G_PARAM_READWRITE));
+
+ g_object_class_install_property (gobject_class, PROP_RTCP_FRACTION,
+ g_param_spec_double ("rtcp-fraction", "RTCP Fraction",
+ "The fraction of the bandwidth used for RTCP",
+ 0.0, G_MAXDOUBLE, DEFAULT_RTCP_FRACTION, G_PARAM_READWRITE));
+
+ 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 session",
+ DEFAULT_SDES_CNAME, G_PARAM_READWRITE));
+
+ 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 session",
+ DEFAULT_SDES_NAME, G_PARAM_READWRITE));
+
+ 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 session",
+ DEFAULT_SDES_EMAIL, G_PARAM_READWRITE));
+
+ 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 session",
+ DEFAULT_SDES_PHONE, G_PARAM_READWRITE));
+
+ 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 session",
+ DEFAULT_SDES_LOCATION, G_PARAM_READWRITE));
+
+ 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 session",
+ DEFAULT_SDES_TOOL, G_PARAM_READWRITE));
+
+ 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 session",
+ DEFAULT_SDES_NOTE, G_PARAM_READWRITE));
+
+ g_object_class_install_property (gobject_class, PROP_NUM_SOURCES,
+ g_param_spec_uint ("num-sources", "Num Sources",
+ "The number of sources in the session", 0, G_MAXUINT,
+ DEFAULT_NUM_SOURCES, G_PARAM_READABLE));
+
+ g_object_class_install_property (gobject_class, PROP_NUM_ACTIVE_SOURCES,
+ g_param_spec_uint ("num-active-sources", "Num Active Sources",
+ "The number of active sources in the session", 0, G_MAXUINT,
+ DEFAULT_NUM_ACTIVE_SOURCES, G_PARAM_READABLE));
+
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (gst_rtp_session_change_state);
gstelement_class->request_new_pad =
@@ -550,17 +627,53 @@ gst_rtp_session_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
{
GstRtpSession *rtpsession;
+ GstRtpSessionPrivate *priv;
rtpsession = GST_RTP_SESSION (object);
+ priv = rtpsession->priv;
switch (prop_id) {
case PROP_NTP_NS_BASE:
GST_OBJECT_LOCK (rtpsession);
- rtpsession->priv->ntpnsbase = g_value_get_uint64 (value);
+ priv->ntpnsbase = g_value_get_uint64 (value);
GST_DEBUG_OBJECT (rtpsession, "setting NTP base to %" GST_TIME_FORMAT,
- GST_TIME_ARGS (rtpsession->priv->ntpnsbase));
+ GST_TIME_ARGS (priv->ntpnsbase));
GST_OBJECT_UNLOCK (rtpsession);
break;
+ case PROP_BANDWIDTH:
+ rtp_session_set_bandwidth (priv->session, g_value_get_double (value));
+ break;
+ case PROP_RTCP_FRACTION:
+ rtp_session_set_rtcp_fraction (priv->session, g_value_get_double (value));
+ break;
+ case PROP_SDES_CNAME:
+ rtp_session_set_sdes_string (priv->session, GST_RTCP_SDES_CNAME,
+ g_value_get_string (value));
+ break;
+ case PROP_SDES_NAME:
+ rtp_session_set_sdes_string (priv->session, GST_RTCP_SDES_NAME,
+ g_value_get_string (value));
+ break;
+ case PROP_SDES_EMAIL:
+ rtp_session_set_sdes_string (priv->session, GST_RTCP_SDES_EMAIL,
+ g_value_get_string (value));
+ break;
+ case PROP_SDES_PHONE:
+ rtp_session_set_sdes_string (priv->session, GST_RTCP_SDES_PHONE,
+ g_value_get_string (value));
+ break;
+ case PROP_SDES_LOCATION:
+ rtp_session_set_sdes_string (priv->session, GST_RTCP_SDES_LOC,
+ g_value_get_string (value));
+ break;
+ case PROP_SDES_TOOL:
+ rtp_session_set_sdes_string (priv->session, GST_RTCP_SDES_TOOL,
+ g_value_get_string (value));
+ break;
+ case PROP_SDES_NOTE:
+ rtp_session_set_sdes_string (priv->session, GST_RTCP_SDES_NOTE,
+ g_value_get_string (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -572,15 +685,58 @@ gst_rtp_session_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec)
{
GstRtpSession *rtpsession;
+ GstRtpSessionPrivate *priv;
rtpsession = GST_RTP_SESSION (object);
+ priv = rtpsession->priv;
switch (prop_id) {
case PROP_NTP_NS_BASE:
GST_OBJECT_LOCK (rtpsession);
- g_value_set_uint64 (value, rtpsession->priv->ntpnsbase);
+ g_value_set_uint64 (value, priv->ntpnsbase);
GST_OBJECT_UNLOCK (rtpsession);
break;
+ case PROP_BANDWIDTH:
+ g_value_set_double (value, rtp_session_get_bandwidth (priv->session));
+ break;
+ case PROP_RTCP_FRACTION:
+ g_value_set_double (value, rtp_session_get_rtcp_fraction (priv->session));
+ break;
+ case PROP_SDES_CNAME:
+ g_value_take_string (value, rtp_session_get_sdes_string (priv->session,
+ GST_RTCP_SDES_CNAME));
+ break;
+ case PROP_SDES_NAME:
+ g_value_take_string (value, rtp_session_get_sdes_string (priv->session,
+ GST_RTCP_SDES_NAME));
+ break;
+ case PROP_SDES_EMAIL:
+ g_value_take_string (value, rtp_session_get_sdes_string (priv->session,
+ GST_RTCP_SDES_EMAIL));
+ break;
+ case PROP_SDES_PHONE:
+ g_value_take_string (value, rtp_session_get_sdes_string (priv->session,
+ GST_RTCP_SDES_PHONE));
+ break;
+ case PROP_SDES_LOCATION:
+ g_value_take_string (value, rtp_session_get_sdes_string (priv->session,
+ GST_RTCP_SDES_LOC));
+ break;
+ case PROP_SDES_TOOL:
+ g_value_take_string (value, rtp_session_get_sdes_string (priv->session,
+ GST_RTCP_SDES_TOOL));
+ break;
+ case PROP_SDES_NOTE:
+ g_value_take_string (value, rtp_session_get_sdes_string (priv->session,
+ GST_RTCP_SDES_NOTE));
+ break;
+ case PROP_NUM_SOURCES:
+ g_value_set_uint (value, rtp_session_get_num_sources (priv->session));
+ break;
+ case PROP_NUM_ACTIVE_SOURCES:
+ g_value_set_uint (value,
+ rtp_session_get_num_active_sources (priv->session));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;