rtsp-stream: add functions to get rtp and rtcp multicast sockets

Change-Id: Iddfe6e0bd250cb0159096d5eba9e4202d22b56db

https://bugzilla.gnome.org/show_bug.cgi?id=788340
This commit is contained in:
Patricia Muscalu 2017-10-16 11:15:55 +02:00 committed by Sebastian Dröge
parent c9605cc5e1
commit 51d670f73b
2 changed files with 72 additions and 0 deletions

View file

@ -3545,6 +3545,70 @@ gst_rtsp_stream_get_rtcp_socket (GstRTSPStream * stream, GSocketFamily family)
return socket;
}
/**
* gst_rtsp_stream_get_rtp_multicast_socket:
* @stream: a #GstRTSPStream
* @family: the socket family
*
* Get the multicast RTP socket from @stream for a @family.
*
* Returns: (transfer full) (nullable): the multicast RTP socket or %NULL if no
* socket could be allocated for @family. Unref after usage
*/
GSocket *
gst_rtsp_stream_get_rtp_multicast_socket (GstRTSPStream * stream, GSocketFamily family)
{
GstRTSPStreamPrivate *priv = GST_RTSP_STREAM_GET_PRIVATE (stream);
GSocket *socket;
const gchar *name;
g_return_val_if_fail (GST_IS_RTSP_STREAM (stream), NULL);
g_return_val_if_fail (family == G_SOCKET_FAMILY_IPV4 ||
family == G_SOCKET_FAMILY_IPV6, NULL);
g_return_val_if_fail (priv->mcast_udpsink[0], NULL);
if (family == G_SOCKET_FAMILY_IPV6)
name = "socket-v6";
else
name = "socket";
g_object_get (priv->mcast_udpsink[0], name, &socket, NULL);
return socket;
}
/**
* gst_rtsp_stream_get_rtcp_multicast_socket:
* @stream: a #GstRTSPStream
* @family: the socket family
*
* Get the multicast RTCP socket from @stream for a @family.
*
* Returns: (transfer full) (nullable): the multicast RTCP socket or %NULL if no
* socket could be allocated for @family. Unref after usage
*/
GSocket *
gst_rtsp_stream_get_rtcp_multicast_socket (GstRTSPStream * stream, GSocketFamily family)
{
GstRTSPStreamPrivate *priv = GST_RTSP_STREAM_GET_PRIVATE (stream);
GSocket *socket;
const gchar *name;
g_return_val_if_fail (GST_IS_RTSP_STREAM (stream), NULL);
g_return_val_if_fail (family == G_SOCKET_FAMILY_IPV4 ||
family == G_SOCKET_FAMILY_IPV6, NULL);
g_return_val_if_fail (priv->mcast_udpsink[1], NULL);
if (family == G_SOCKET_FAMILY_IPV6)
name = "socket-v6";
else
name = "socket";
g_object_get (priv->mcast_udpsink[1], name, &socket, NULL);
return socket;
}
/**
* gst_rtsp_stream_set_seqnum:
* @stream: a #GstRTSPStream

View file

@ -219,6 +219,14 @@ GST_EXPORT
GSocket * gst_rtsp_stream_get_rtcp_socket (GstRTSPStream *stream,
GSocketFamily family);
GST_EXPORT
GSocket * gst_rtsp_stream_get_rtp_multicast_socket (GstRTSPStream *stream,
GSocketFamily family);
GST_EXPORT
GSocket * gst_rtsp_stream_get_rtcp_multicast_socket (GstRTSPStream *stream,
GSocketFamily family);
GST_EXPORT
gboolean gst_rtsp_stream_update_crypto (GstRTSPStream * stream,
guint ssrc, GstCaps * crypto);