summaryrefslogtreecommitdiff
path: root/ext/srt/gstsrtclientsink.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/srt/gstsrtclientsink.c')
-rw-r--r--ext/srt/gstsrtclientsink.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/ext/srt/gstsrtclientsink.c b/ext/srt/gstsrtclientsink.c
index 3bafb1eaf..09de74eb6 100644
--- a/ext/srt/gstsrtclientsink.c
+++ b/ext/srt/gstsrtclientsink.c
@@ -68,6 +68,8 @@ struct _GstSRTClientSinkPrivate
gboolean rendez_vous;
gchar *bind_address;
guint16 bind_port;
+
+ gboolean sent_headers;
};
#define GST_SRT_CLIENT_SINK_GET_PRIVATE(obj) \
@@ -190,6 +192,14 @@ gst_srt_client_sink_send_buffer (GstSRTBaseSink * sink,
GstSRTClientSink *self = GST_SRT_CLIENT_SINK (sink);
GstSRTClientSinkPrivate *priv = GST_SRT_CLIENT_SINK_GET_PRIVATE (self);
+ if (!priv->sent_headers) {
+ if (!gst_srt_base_sink_send_headers (sink, send_buffer_internal,
+ GINT_TO_POINTER (priv->sock)))
+ return FALSE;
+
+ priv->sent_headers = TRUE;
+ }
+
return send_buffer_internal (sink, mapinfo, GINT_TO_POINTER (priv->sock));
}
@@ -214,6 +224,8 @@ gst_srt_client_sink_stop (GstBaseSink * sink)
g_clear_object (&priv->sockaddr);
+ priv->sent_headers = FALSE;
+
return GST_BASE_SINK_CLASS (parent_class)->stop (sink);
}