diff options
author | Youness Alaoui <kakaroto@kakaroto.homelinux.net> | 2014-08-11 15:53:51 -0400 |
---|---|---|
committer | Olivier CrĂȘte <olivier.crete@collabora.com> | 2015-01-27 16:38:39 -0500 |
commit | 9102709e6f8a0b9c390e8636589c3d80f9b1810a (patch) | |
tree | 2512847b46dce4e878bdc155990ce8124cd304d6 /gst | |
parent | 5bd19ca4a6c4fa0df50f521eb860d97e95310641 (diff) | |
download | farstream-9102709e6f8a0b9c390e8636589c3d80f9b1810a.tar.gz |
Add support for send-rtcp-mux on fs-rtp-session and nice transmitter
In fs_nice_transmitter_set_send_component_mux(), the component IDs,
which start from 1, are used as nicesinks array indexes and
nicesinks[0] is always NULL.
Diffstat (limited to 'gst')
-rw-r--r-- | gst/fsrtpconference/fs-rtp-stream.c | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/gst/fsrtpconference/fs-rtp-stream.c b/gst/fsrtpconference/fs-rtp-stream.c index 36088198..ebe30f16 100644 --- a/gst/fsrtpconference/fs-rtp-stream.c +++ b/gst/fsrtpconference/fs-rtp-stream.c @@ -76,7 +76,8 @@ enum PROP_PARTICIPANT, PROP_SESSION, PROP_RTP_HEADER_EXTENSIONS, - PROP_DECRYPTION_PARAMETERS + PROP_DECRYPTION_PARAMETERS, + PROP_SEND_RTCP_MUX }; struct _FsRtpStreamPrivate @@ -85,6 +86,7 @@ struct _FsRtpStreamPrivate FsStreamTransmitter *stream_transmitter; FsStreamDirection direction; + gboolean send_rtcp_mux; stream_new_remote_codecs_cb new_remote_codecs_cb; stream_known_source_packet_receive_cb known_source_packet_received_cb; @@ -231,6 +233,14 @@ fs_rtp_stream_class_init (FsRtpStreamClass *klass) " would like to use", FS_TYPE_RTP_HEADER_EXTENSION_LIST, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + + g_object_class_install_property (gobject_class, + PROP_SEND_RTCP_MUX, + g_param_spec_boolean ("send-rtcp-mux", + "Send RTCP muxed with on the same RTP connection", + "Send RTCP muxed with on the same RTP connection", + FALSE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } static void @@ -454,6 +464,17 @@ fs_rtp_stream_get_property (GObject *object, g_value_set_boxed (value, self->priv->decryption_parameters); FS_RTP_SESSION_UNLOCK (session); break; + case PROP_SEND_RTCP_MUX: + FS_RTP_SESSION_LOCK (session); + if (self->priv->stream_transmitter == NULL || + g_object_class_find_property ( + G_OBJECT_GET_CLASS (self->priv->stream_transmitter), + "send-component-mux") != NULL) + g_value_set_boolean (value, self->priv->send_rtcp_mux); + else + g_value_set_boolean (value, FALSE); + FS_RTP_SESSION_UNLOCK (session); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -541,6 +562,23 @@ fs_rtp_stream_set_property (GObject *object, } } break; + case PROP_SEND_RTCP_MUX: + { + FsRtpSession *session = fs_rtp_stream_get_session (self, NULL); + + if (session) { + FS_RTP_SESSION_LOCK (session); + self->priv->send_rtcp_mux = g_value_get_boolean (value); + if (self->priv->stream_transmitter != NULL && + g_object_class_find_property ( + G_OBJECT_GET_CLASS (self->priv->stream_transmitter), + "send-component-mux") != NULL) + g_object_set (self->priv->stream_transmitter, + "send-component-mux", self->priv->send_rtcp_mux, NULL); + FS_RTP_SESSION_UNLOCK (session); + } + } + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -1178,6 +1216,9 @@ fs_rtp_stream_set_transmitter (FsStream *stream, self->priv->sending_changed_locked_cb (self, self->priv->direction & FS_DIRECTION_SEND, self->priv->user_data_for_cb); + if (g_object_class_find_property (G_OBJECT_GET_CLASS (st), + "send-component-mux") != NULL) + g_object_set (st, "send-component-mux", self->priv->send_rtcp_mux, NULL); FS_RTP_SESSION_UNLOCK (session); if (!fs_stream_transmitter_gather_local_candidates (st, error)) |