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 /transmitters | |
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 'transmitters')
-rw-r--r-- | transmitters/nice/fs-nice-stream-transmitter.c | 25 | ||||
-rw-r--r-- | transmitters/nice/fs-nice-transmitter.c | 13 | ||||
-rw-r--r-- | transmitters/nice/fs-nice-transmitter.h | 3 |
3 files changed, 40 insertions, 1 deletions
diff --git a/transmitters/nice/fs-nice-stream-transmitter.c b/transmitters/nice/fs-nice-stream-transmitter.c index df752d39..9040635b 100644 --- a/transmitters/nice/fs-nice-stream-transmitter.c +++ b/transmitters/nice/fs-nice-stream-transmitter.c @@ -71,7 +71,8 @@ enum PROP_ICE_TCP, PROP_ICE_UDP, PROP_RELIABLE, - PROP_DEBUG + PROP_DEBUG, + PROP_SEND_COMPONENT_MUX }; struct _FsNiceStreamTransmitterPrivate @@ -92,6 +93,7 @@ struct _FsNiceStreamTransmitterPrivate gboolean ice_udp; gboolean ice_tcp; gboolean reliable; + gboolean send_component_mux; guint compatibility_mode; @@ -417,6 +419,14 @@ fs_nice_stream_transmitter_class_init (FsNiceStreamTransmitterClass *klass) 0, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_SEND_COMPONENT_MUX, + g_param_spec_boolean ( + "send-component-mux", + "Send component mux", + "Whether to mux all components on the same component as component 1", + FALSE, + G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS)); + } static void @@ -605,6 +615,9 @@ fs_nice_stream_transmitter_get_property (GObject *object, g_value_set_boolean (value, g_atomic_int_get (&self->priv->associate_on_source)); break; + case PROP_SEND_COMPONENT_MUX: + g_value_set_boolean (value, self->priv->send_component_mux); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -682,6 +695,13 @@ fs_nice_stream_transmitter_set_property (GObject *object, nice_debug_disable (TRUE); } break; + case PROP_SEND_COMPONENT_MUX: + self->priv->send_component_mux = g_value_get_boolean (value); + if (self->priv->gststream != NULL) + fs_nice_transmitter_set_send_component_mux (self->priv->transmitter, + self->priv->gststream, self->priv->send_component_mux); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -1525,6 +1545,9 @@ fs_nice_stream_transmitter_build (FsNiceStreamTransmitter *self, if (self->priv->gststream == NULL) return FALSE; + fs_nice_transmitter_set_send_component_mux (self->priv->transmitter, + self->priv->gststream, self->priv->send_component_mux); + GST_DEBUG ("Created a stream with %u components", self->priv->transmitter->components); diff --git a/transmitters/nice/fs-nice-transmitter.c b/transmitters/nice/fs-nice-transmitter.c index 7bb9e465..41545373 100644 --- a/transmitters/nice/fs-nice-transmitter.c +++ b/transmitters/nice/fs-nice-transmitter.c @@ -868,3 +868,16 @@ fs_nice_transmitter_request_keyunit (FsNiceTransmitter *self, "all-headers", G_TYPE_BOOLEAN, TRUE, NULL))); } + +void +fs_nice_transmitter_set_send_component_mux (FsNiceTransmitter *self, + NiceGstStream *ns, gboolean send_component_mux) +{ + guint component; + + for (component = 2; component <= self->components; component++) + { + g_object_set (ns->nicesinks[component], + "component", send_component_mux ? 1 : component, NULL); + } +} diff --git a/transmitters/nice/fs-nice-transmitter.h b/transmitters/nice/fs-nice-transmitter.h index c39e77e4..f068c399 100644 --- a/transmitters/nice/fs-nice-transmitter.h +++ b/transmitters/nice/fs-nice-transmitter.h @@ -106,6 +106,9 @@ void fs_nice_transmitter_set_sending (FsNiceTransmitter *self, void fs_nice_transmitter_request_keyunit (FsNiceTransmitter *self, NiceGstStream *ns, guint component); +void fs_nice_transmitter_set_send_component_mux (FsNiceTransmitter *self, + NiceGstStream *ns, gboolean send_component_mux); + G_END_DECLS |