diff options
author | Olivier CrĂȘte <olivier.crete@collabora.com> | 2012-02-21 20:11:29 -0500 |
---|---|---|
committer | Olivier CrĂȘte <olivier.crete@collabora.com> | 2012-02-21 20:15:20 -0500 |
commit | 544e5ef7af95dd8d70bbc122962a04a3f0c9f74a (patch) | |
tree | cb7907e8ce3869b917b36152199733a8787e6a25 /transmitters/rawudp | |
parent | f8b2fbc4dcfe495ca26acb33e875aea56f929dd4 (diff) | |
download | farstream-544e5ef7af95dd8d70bbc122962a04a3f0c9f74a.tar.gz |
Add "do-timestamp" property to the transmitters
Make it possible for the "raw" plugin to not have the transmitter
put timestamps on the buffers.
Diffstat (limited to 'transmitters/rawudp')
-rw-r--r-- | transmitters/rawudp/fs-rawudp-transmitter.c | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/transmitters/rawudp/fs-rawudp-transmitter.c b/transmitters/rawudp/fs-rawudp-transmitter.c index 36961e38..377de54e 100644 --- a/transmitters/rawudp/fs-rawudp-transmitter.c +++ b/transmitters/rawudp/fs-rawudp-transmitter.c @@ -73,7 +73,8 @@ enum PROP_GST_SINK, PROP_GST_SRC, PROP_COMPONENTS, - PROP_TYPE_OF_SERVICE + PROP_TYPE_OF_SERVICE, + PROP_DO_TIMESTAMP }; struct _FsRawUdpTransmitterPrivate @@ -93,6 +94,7 @@ struct _FsRawUdpTransmitterPrivate GList **udpports; gint type_of_service; + gboolean do_timestamp; gboolean disposed; }; @@ -196,6 +198,8 @@ fs_rawudp_transmitter_class_init (FsRawUdpTransmitterClass *klass) "components"); g_object_class_override_property (gobject_class, PROP_TYPE_OF_SERVICE, "tos"); + g_object_class_override_property (gobject_class, PROP_DO_TIMESTAMP, + "do-timestamp"); transmitter_class->new_stream_transmitter = fs_rawudp_transmitter_new_stream_transmitter; @@ -218,6 +222,7 @@ fs_rawudp_transmitter_init (FsRawUdpTransmitter *self) self->components = 2; self->priv->mutex = g_mutex_new (); + self->priv->do_timestamp = TRUE; } static void @@ -456,6 +461,9 @@ fs_rawudp_transmitter_get_property (GObject *object, g_value_set_uint (value, self->priv->type_of_service); g_mutex_unlock (self->priv->mutex); break; + case PROP_DO_TIMESTAMP: + g_value_set_boolean (value, self->priv->do_timestamp); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -479,6 +487,9 @@ fs_rawudp_transmitter_set_property (GObject *object, fs_rawudp_transmitter_set_type_of_service (self, g_value_get_uint (value)); break; + case PROP_DO_TIMESTAMP: + self->priv->do_timestamp = g_value_get_boolean (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -636,6 +647,7 @@ _create_sinksource ( GstElement *filter, gint fd, GstPadDirection direction, + gboolean do_timestamp, GstPad **requested_pad, GError **error) { @@ -655,9 +667,9 @@ _create_sinksource ( } g_object_set (elem, + "sockfd", fd, "auto-multicast", FALSE, "closefd", FALSE, - "sockfd", fd, NULL); if (direction == GST_PAD_SINK) @@ -665,6 +677,10 @@ _create_sinksource ( "async", FALSE, "sync", FALSE, NULL); + else + g_object_set (elem, + "do-timestamp", do_timestamp, + NULL); if (!gst_bin_add (bin, elem)) { @@ -876,13 +892,14 @@ fs_rawudp_transmitter_get_udpport (FsRawUdpTransmitter *trans, udpport->udpsrc = _create_sinksource ("udpsrc", GST_BIN (trans->priv->gst_src), udpport->funnel, NULL, - udpport->fd, GST_PAD_SRC, &udpport->udpsrc_requested_pad, error); + udpport->fd, GST_PAD_SRC, trans->priv->do_timestamp, + &udpport->udpsrc_requested_pad, error); if (!udpport->udpsrc) goto error; udpport->udpsink = _create_sinksource ("multiudpsink", GST_BIN (trans->priv->gst_sink), udpport->tee, NULL, - udpport->fd, GST_PAD_SINK, &udpport->udpsink_requested_pad, error); + udpport->fd, GST_PAD_SINK, FALSE, &udpport->udpsink_requested_pad, error); if (!udpport->udpsink) goto error; @@ -893,7 +910,7 @@ fs_rawudp_transmitter_get_udpport (FsRawUdpTransmitter *trans, { udpport->recvonly_udpsink = _create_sinksource ("multiudpsink", GST_BIN (trans->priv->gst_sink), udpport->tee, udpport->recvonly_filter, - udpport->fd, GST_PAD_SINK, &udpport->recvonly_requested_pad, error); + udpport->fd, GST_PAD_SINK, FALSE, &udpport->recvonly_requested_pad, error); if (!udpport->recvonly_udpsink) goto error; } |