diff options
Diffstat (limited to 'transmitters')
-rw-r--r-- | transmitters/shm/fs-shm-stream-transmitter.c | 21 | ||||
-rw-r--r-- | transmitters/shm/fs-shm-transmitter.c | 12 | ||||
-rw-r--r-- | transmitters/shm/fs-shm-transmitter.h | 1 |
3 files changed, 32 insertions, 2 deletions
diff --git a/transmitters/shm/fs-shm-stream-transmitter.c b/transmitters/shm/fs-shm-stream-transmitter.c index 23c45f26..45682584 100644 --- a/transmitters/shm/fs-shm-stream-transmitter.c +++ b/transmitters/shm/fs-shm-stream-transmitter.c @@ -98,6 +98,7 @@ enum PROP_SENDING, PROP_PREFERRED_LOCAL_CANDIDATES, PROP_CREATE_LOCAL_CANDIDATES, + PROP_BUFFER_TIME, }; struct _FsShmStreamTransmitterPrivate @@ -127,6 +128,8 @@ struct _FsShmStreamTransmitterPrivate ShmSrc **shm_src; ShmSink **shm_sink; + + guint64 buffer_time; }; #define FS_SHM_STREAM_TRANSMITTER_GET_PRIVATE(o) \ @@ -227,6 +230,12 @@ fs_shm_stream_transmitter_class_init (FsShmStreamTransmitterClass *klass) PROP_CREATE_LOCAL_CANDIDATES, pspec); + pspec = g_param_spec_uint64 ("buffer-time", + "BufferTime", + "Maximum Size of the outgoing buffer in nanoseconds", + 0, G_MAXUINT64, 20 * GST_MSECOND, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, PROP_BUFFER_TIME, pspec); gobject_class->dispose = fs_shm_stream_transmitter_dispose; gobject_class->finalize = fs_shm_stream_transmitter_finalize; @@ -309,6 +318,9 @@ fs_shm_stream_transmitter_get_property (GObject *object, case PROP_CREATE_LOCAL_CANDIDATES: g_value_set_boolean (value, self->priv->create_local_candidates); break; + case PROP_BUFFER_TIME: + g_value_set_uint64 (value, self->priv->buffer_time); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -344,6 +356,9 @@ fs_shm_stream_transmitter_set_property (GObject *object, case PROP_CREATE_LOCAL_CANDIDATES: self->priv->create_local_candidates = g_value_get_boolean (value); break; + case PROP_BUFFER_TIME: + self->priv->buffer_time = g_value_get_uint64 (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -414,7 +429,8 @@ fs_shm_stream_transmitter_add_sink (FsShmStreamTransmitter *self, self->priv->shm_sink[candidate->component_id] = fs_shm_transmitter_get_shm_sink (self->priv->transmitter, - candidate->component_id, candidate->ip, ready_cb, connected_cb, + candidate->component_id, candidate->ip, self->priv->buffer_time, + ready_cb, connected_cb, self, error); if (self->priv->shm_sink[candidate->component_id] == NULL) @@ -571,7 +587,8 @@ fs_shm_stream_transmitter_gather_local_candidates ( self->priv->shm_sink[c] = fs_shm_transmitter_get_shm_sink (self->priv->transmitter, - c, path, ready_cb, connected_cb, self, error); + c, path, self->priv->buffer_time, + ready_cb, connected_cb, self, error); g_free (path); if (self->priv->shm_sink[c] == NULL) diff --git a/transmitters/shm/fs-shm-transmitter.c b/transmitters/shm/fs-shm-transmitter.c index 5bd049f6..e0b11062 100644 --- a/transmitters/shm/fs-shm-transmitter.c +++ b/transmitters/shm/fs-shm-transmitter.c @@ -732,6 +732,7 @@ ShmSink * fs_shm_transmitter_get_shm_sink (FsShmTransmitter *self, guint component, const gchar *path, + guint64 buffer_time, ready ready_func, connection connected_func, gpointer cb_data, @@ -767,6 +768,17 @@ fs_shm_transmitter_get_shm_sink (FsShmTransmitter *self, "sync" , FALSE, NULL); + if (g_object_class_find_property (G_OBJECT_GET_CLASS (elem), "buffer-time")) + { + GST_DEBUG ("Configured shmsink with a %"G_GUINT64_FORMAT" buffer-time", + buffer_time); + g_object_set (elem, "buffer-time", buffer_time, NULL); + } + else + { + GST_DEBUG ("No buffer-time property in shmsink, not setting"); + } + if (ready_func) g_signal_connect (self->priv->gst_sink, "ready", G_CALLBACK (ready_cb), shm); diff --git a/transmitters/shm/fs-shm-transmitter.h b/transmitters/shm/fs-shm-transmitter.h index 978c3049..9fccb391 100644 --- a/transmitters/shm/fs-shm-transmitter.h +++ b/transmitters/shm/fs-shm-transmitter.h @@ -106,6 +106,7 @@ gboolean fs_shm_transmitter_check_shm_src (FsShmTransmitter *self, ShmSink *fs_shm_transmitter_get_shm_sink (FsShmTransmitter *self, guint component, const gchar *path, + guint64 buffer_time, ready ready_func, connection connected_fubnc, gpointer cb_data, |