Commit 27736d40 authored by Jan Schmidt's avatar Jan Schmidt

rtsp-stream: Implement UDP buffer size setting.

Add gst_rtsp_stream_(get|set)_buffer_size and use it to configure the
UDP TX buffer size.

Incorporates a patch by Hyunjun Ko <zzoon.ko@samsung.com>
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=749095
parent 9bfcdba4
......@@ -211,7 +211,7 @@ static gboolean default_handle_sdp (GstRTSPMedia * media, GstSDPMessage * sdp);
static gboolean wait_preroll (GstRTSPMedia * media);
static GstElement * find_payload_element (GstElement * payloader);
static GstElement *find_payload_element (GstElement * payloader);
static guint gst_rtsp_media_signals[SIGNAL_LAST] = { 0 };
......@@ -1124,6 +1124,7 @@ void
gst_rtsp_media_set_buffer_size (GstRTSPMedia * media, guint size)
{
GstRTSPMediaPrivate *priv;
guint i;
g_return_if_fail (GST_IS_RTSP_MEDIA (media));
......@@ -1133,6 +1134,11 @@ gst_rtsp_media_set_buffer_size (GstRTSPMedia * media, guint size)
g_mutex_lock (&priv->lock);
priv->buffer_size = size;
for (i = 0; i < priv->streams->len; i++) {
GstRTSPStream *stream = g_ptr_array_index (priv->streams, i);
gst_rtsp_stream_set_buffer_size (stream, size);
}
g_mutex_unlock (&priv->lock);
}
......@@ -1560,6 +1566,7 @@ gst_rtsp_media_create_stream (GstRTSPMedia * media, GstElement * payloader,
gst_rtsp_stream_set_profiles (stream, priv->profiles);
gst_rtsp_stream_set_protocols (stream, priv->protocols);
gst_rtsp_stream_set_retransmission_time (stream, priv->rtx_time);
gst_rtsp_stream_set_buffer_size (stream, priv->buffer_size);
g_ptr_array_add (priv->streams, stream);
......
......@@ -1389,8 +1389,8 @@ gst_rtsp_stream_set_retransmission_time (GstRTSPStream * stream,
}
/**
* gst_rtsp_media_get_retransmission_time:
* @media: a #GstRTSPMedia
* gst_rtsp_stream_get_retransmission_time:
* @stream: a #GstRTSPStream
*
* Get the amount of time to store retransmission data.
*
......@@ -1410,6 +1410,13 @@ gst_rtsp_stream_get_retransmission_time (GstRTSPStream * stream)
return ret;
}
/**
* gst_rtsp_stream_set_retransmission_pt:
* @stream: a #GstRTSPStream
* @rtx_pt: a #guint
*
* Set the payload type (pt) for retransmission of this stream.
*/
void
gst_rtsp_stream_set_retransmission_pt (GstRTSPStream * stream, guint rtx_pt)
{
......@@ -1431,6 +1438,14 @@ gst_rtsp_stream_set_retransmission_pt (GstRTSPStream * stream, guint rtx_pt)
g_mutex_unlock (&stream->priv->lock);
}
/**
* gst_rtsp_stream_get_retransmission_pt:
* @stream: a #GstRTSPStream
*
* Get the payload-type used for retransmission of this stream
*
* Returns: The retransmission PT.
*/
guint
gst_rtsp_stream_get_retransmission_pt (GstRTSPStream * stream)
{
......@@ -1445,6 +1460,43 @@ gst_rtsp_stream_get_retransmission_pt (GstRTSPStream * stream)
return rtx_pt;
}
/**
* gst_rtsp_media_get_buffer_size:
* @media: a #GstRTSPMedia
* @size: a #guint
*
* Set the size of the UDP transmission buffer (in bytes)
* Needs to be set before the stream is joined to a bin.
*
*/
void
gst_rtsp_stream_set_buffer_size (GstRTSPStream * stream, guint size)
{
g_mutex_lock (&stream->priv->lock);
stream->priv->buffer_size = size;
g_mutex_unlock (&stream->priv->lock);
}
/**
* gst_rtsp_media_get_buffer_size:
* @media: a #GstRTSPMedia
*
* Get the size of the UDP transmission buffer (in bytes)
*
* Returns: the size of the UDP TX buffer
*/
guint
gst_rtsp_stream_get_buffer_size (GstRTSPStream * stream)
{
guint buffer_size;
g_mutex_lock (&stream->priv->lock);
buffer_size = stream->priv->buffer_size;
g_mutex_unlock (&stream->priv->lock);
return buffer_size;
}
/* executed from streaming thread */
static void
caps_notify (GstPad * pad, GParamSpec * unused, GstRTSPStream * stream)
......
......@@ -160,6 +160,8 @@ GstClockTime gst_rtsp_stream_get_retransmission_time (GstRTSPStream *st
guint gst_rtsp_stream_get_retransmission_pt (GstRTSPStream * stream);
void gst_rtsp_stream_set_retransmission_pt (GstRTSPStream * stream,
guint rtx_pt);
void gst_rtsp_stream_set_buffer_size (GstRTSPStream *stream, guint size);
guint gst_rtsp_stream_get_buffer_size (GstRTSPStream *stream);
void gst_rtsp_stream_set_pt_map (GstRTSPStream * stream, guint pt, GstCaps * caps);
GstElement * gst_rtsp_stream_request_aux_sender (GstRTSPStream * stream, guint sessid);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment