diff options
author | Olivier CrĂȘte <olivier.crete@collabora.com> | 2014-05-05 23:20:11 -0400 |
---|---|---|
committer | Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> | 2014-09-18 13:38:00 -0400 |
commit | 9c7aa550ed0ea0b6962c7e3c1f42d7af253ea0fa (patch) | |
tree | 980c7a99eac9309e249b3de452d102db925302c9 /transmitters/multicast | |
parent | 220236e6564486571b0e7eae079b9cb6a554b933 (diff) | |
download | farstream-9c7aa550ed0ea0b6962c7e3c1f42d7af253ea0fa.tar.gz |
transmitter: Remove recvonly-filter
It was pretty much useless anyway.
Diffstat (limited to 'transmitters/multicast')
-rw-r--r-- | transmitters/multicast/fs-multicast-stream-transmitter.c | 57 | ||||
-rw-r--r-- | transmitters/multicast/fs-multicast-transmitter.c | 91 |
2 files changed, 32 insertions, 116 deletions
diff --git a/transmitters/multicast/fs-multicast-stream-transmitter.c b/transmitters/multicast/fs-multicast-stream-transmitter.c index 2f4c73da..eb134b4f 100644 --- a/transmitters/multicast/fs-multicast-stream-transmitter.c +++ b/transmitters/multicast/fs-multicast-stream-transmitter.c @@ -227,7 +227,6 @@ static void fs_multicast_stream_transmitter_dispose (GObject *object) { FsMulticastStreamTransmitter *self = FS_MULTICAST_STREAM_TRANSMITTER (object); - gint c; if (self->priv->disposed) /* If dispose did already run, return. */ @@ -235,17 +234,14 @@ fs_multicast_stream_transmitter_dispose (GObject *object) if (self->priv->udpsocks) { - for (c = 1; c <= self->priv->transmitter->components; c++) + if (self->priv->udpsocks[1]) { - if (self->priv->udpsocks[c]) - { - if (self->priv->sending) - fs_multicast_transmitter_udpsock_dec_sending ( - self->priv->udpsocks[c]); - fs_multicast_transmitter_put_udpsock (self->priv->transmitter, - self->priv->udpsocks[c], self->priv->remote_candidate[c]->ttl); - self->priv->udpsocks[c] = NULL; - } + if (self->priv->sending) + fs_multicast_transmitter_udpsock_dec_sending ( + self->priv->udpsocks[1]); + fs_multicast_transmitter_put_udpsock (self->priv->transmitter, + self->priv->udpsocks[1], self->priv->remote_candidate[1]->ttl); + self->priv->udpsocks[1] = NULL; } } @@ -336,29 +332,27 @@ fs_multicast_stream_transmitter_set_property (GObject *object, { gboolean old_sending = self->priv->sending; gboolean sending = g_value_get_boolean (value); - gint c; FS_MULTICAST_STREAM_TRANSMITTER_LOCK (self); self->priv->sending = sending; if (sending != old_sending) - for (c = 1; c <= self->priv->transmitter->components; c++) - if (self->priv->udpsocks[c]) - { - guint8 ttl = self->priv->remote_candidate[c]->ttl; - fs_multicast_transmitter_udpsock_ref (self->priv->transmitter, - self->priv->udpsocks[c], ttl); - FS_MULTICAST_STREAM_TRANSMITTER_UNLOCK (self); - if (sending) - fs_multicast_transmitter_udpsock_inc_sending ( - self->priv->udpsocks[c]); - else - fs_multicast_transmitter_udpsock_dec_sending ( - self->priv->udpsocks[c]); - fs_multicast_transmitter_put_udpsock (self->priv->transmitter, - self->priv->udpsocks[c], ttl); - FS_MULTICAST_STREAM_TRANSMITTER_LOCK (self); - } + if (self->priv->udpsocks[1]) + { + guint8 ttl = self->priv->remote_candidate[1]->ttl; + fs_multicast_transmitter_udpsock_ref (self->priv->transmitter, + self->priv->udpsocks[1], ttl); + FS_MULTICAST_STREAM_TRANSMITTER_UNLOCK (self); + if (sending) + fs_multicast_transmitter_udpsock_inc_sending ( + self->priv->udpsocks[1]); + else + fs_multicast_transmitter_udpsock_dec_sending ( + self->priv->udpsocks[1]); + fs_multicast_transmitter_put_udpsock (self->priv->transmitter, + self->priv->udpsocks[1], ttl); + FS_MULTICAST_STREAM_TRANSMITTER_LOCK (self); + } FS_MULTICAST_STREAM_TRANSMITTER_UNLOCK (self); } @@ -489,7 +483,7 @@ fs_multicast_stream_transmitter_add_remote_candidate ( candidate->ip, candidate->port, candidate->ttl, - self->priv->sending, + candidate->component_id == 1 ? self->priv->sending : TRUE, error); if (!newudpsock) @@ -497,7 +491,8 @@ fs_multicast_stream_transmitter_add_remote_candidate ( FS_MULTICAST_STREAM_TRANSMITTER_LOCK (self); - if (self->priv->udpsocks[candidate->component_id]) + if (self->priv->udpsocks[candidate->component_id] && + candidate->component_id == 1) { if (self->priv->sending) fs_multicast_transmitter_udpsock_dec_sending ( diff --git a/transmitters/multicast/fs-multicast-transmitter.c b/transmitters/multicast/fs-multicast-transmitter.c index 93beb702..1f9eaf1d 100644 --- a/transmitters/multicast/fs-multicast-transmitter.c +++ b/transmitters/multicast/fs-multicast-transmitter.c @@ -521,7 +521,6 @@ struct _UdpSock { GstPad *udpsrc_requested_pad; GstElement *udpsink; - GstElement *udpsink_recvonly_filter; GstPad *udpsink_requested_pad; gchar *local_ip; @@ -715,7 +714,7 @@ _bind_port ( static GstElement * _create_sinksource (gchar *elementname, GstBin *bin, - GstElement *teefunnel, GstElement *filter, GSocket *socket, + GstElement *teefunnel, GSocket *socket, GstPadDirection direction, GstPad **requested_pad, GError **error) { GstElement *elem; @@ -764,53 +763,6 @@ _create_sinksource (gchar *elementname, GstBin *bin, else elempad = gst_element_get_static_pad (elem, "src"); - if (filter) - { - GstPad *filterpad = NULL; - - if (!gst_bin_add (bin, filter)) - { - g_set_error (error, FS_ERROR, FS_ERROR_CONSTRUCTION, - "Could not add the filter element to the gst %s bin", - (direction == GST_PAD_SINK) ? "sink" : "src"); - goto error; - } - - if (direction == GST_PAD_SINK) - filterpad = gst_element_get_static_pad (filter, "src"); - else - filterpad = gst_element_get_static_pad (filter, "sink"); - - if (direction == GST_PAD_SINK) - ret = gst_pad_link (filterpad, elempad); - else - ret = gst_pad_link (elempad, filterpad); - - gst_object_unref (elempad); - gst_object_unref (filterpad); - elempad = NULL; - - if (GST_PAD_LINK_FAILED(ret)) - { - g_set_error (error, FS_ERROR, FS_ERROR_CONSTRUCTION, - "Could not link the new element %s (%d)", elementname, ret); - goto error; - } - - if (direction == GST_PAD_SINK) - elempad = gst_element_get_static_pad (filter, "sink"); - else - elempad = gst_element_get_static_pad (filter, "src"); - - - if (!gst_element_sync_state_with_parent (filter)) - { - g_set_error (error, FS_ERROR, FS_ERROR_CONSTRUCTION, - "Could not sync the state of the new filte rwith its parent"); - goto error; - } - } - if (direction != GST_PAD_SINK) ret = gst_pad_link (elempad, *requested_pad); @@ -973,17 +925,13 @@ fs_multicast_transmitter_get_udpsock (FsMulticastTransmitter *trans, udpsock->funnel = trans->priv->udpsrc_funnels[component_id]; udpsock->udpsrc = _create_sinksource ("udpsrc", - GST_BIN (trans->priv->gst_src), udpsock->funnel, NULL, udpsock->socket, + GST_BIN (trans->priv->gst_src), udpsock->funnel, udpsock->socket, GST_PAD_SRC, &udpsock->udpsrc_requested_pad, error); if (!udpsock->udpsrc) goto error; - udpsock->udpsink_recvonly_filter = fs_transmitter_get_recvonly_filter ( - FS_TRANSMITTER (trans), udpsock->component_id); - udpsock->udpsink = _create_sinksource ("multiudpsink", GST_BIN (trans->priv->gst_sink), udpsock->tee, - udpsock->udpsink_recvonly_filter, udpsock->socket, GST_PAD_SINK, &udpsock->udpsink_requested_pad, error); if (!udpsock->udpsink) goto error; @@ -1016,13 +964,6 @@ fs_multicast_transmitter_get_udpsock (FsMulticastTransmitter *trans, g_list_prepend (trans->priv->udpsocks[component_id], udpsock); FS_MULTICAST_TRANSMITTER_UNLOCK (trans); - if (udpsock->udpsink_recvonly_filter) - { - g_object_set (udpsock->udpsink_recvonly_filter, "sending", sending, NULL); - g_signal_emit_by_name (udpsock->udpsink, "add", udpsock->multicast_ip, - udpsock->port); - } - if (sending) fs_multicast_transmitter_udpsock_inc_sending (udpsock); @@ -1128,20 +1069,6 @@ fs_multicast_transmitter_put_udpsock (FsMulticastTransmitter *trans, GST_ERROR ("Could not remove udpsink element from transmitter source"); } - if (udpsock->udpsink_recvonly_filter) - { - GstStateChangeReturn ret; - gst_element_set_locked_state (udpsock->udpsink_recvonly_filter, TRUE); - ret = gst_element_set_state (udpsock->udpsink_recvonly_filter, - GST_STATE_NULL); - if (ret != GST_STATE_CHANGE_SUCCESS) - GST_ERROR ("Error changing state of udpsink filter: %s", - gst_element_state_change_return_get_name (ret)); - if (!gst_bin_remove (GST_BIN (trans->priv->gst_sink), - udpsock->udpsink_recvonly_filter)) - GST_ERROR ("Could not remove sink filter element from transmitter sink"); - } - if (udpsock->socket) g_object_unref (udpsock->socket); @@ -1159,11 +1086,8 @@ fs_multicast_transmitter_udpsock_inc_sending (UdpSock *udpsock) { if (g_atomic_int_add (&udpsock->sendcount, 1) == 0) { - if (udpsock->udpsink_recvonly_filter) - g_object_set (udpsock->udpsink_recvonly_filter, "sending", TRUE, NULL); - else - g_signal_emit_by_name (udpsock->udpsink, "add", udpsock->multicast_ip, - udpsock->port); + g_signal_emit_by_name (udpsock->udpsink, "add", udpsock->multicast_ip, + udpsock->port); gst_element_send_event (udpsock->udpsink, gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM, @@ -1178,11 +1102,8 @@ fs_multicast_transmitter_udpsock_dec_sending (UdpSock *udpsock) { if (g_atomic_int_dec_and_test (&udpsock->sendcount)) { - if (udpsock->udpsink_recvonly_filter) - g_object_set (udpsock->udpsink_recvonly_filter, "sending", FALSE, NULL); - else - g_signal_emit_by_name (udpsock->udpsink, "remove", udpsock->multicast_ip, - udpsock->port); + g_signal_emit_by_name (udpsock->udpsink, "remove", udpsock->multicast_ip, + udpsock->port); } } |