rtspsrc: pass the stream id when asking for crypto params

This way the app can choose different parameters for each stream.
This commit is contained in:
Wim Taymans 2014-06-19 16:17:23 +02:00
parent 7ce0ea3946
commit 98a4ee0f92

View file

@ -693,6 +693,7 @@ gst_rtspsrc_class_init (GstRTSPSrcClass * klass)
/** /**
* GstRTSPSrc::request-rtcp-key: * GstRTSPSrc::request-rtcp-key:
* @rtspsrc: a #GstRTSPSrc * @rtspsrc: a #GstRTSPSrc
* @num: the stream number
* *
* Signal emited to get the crypto parameters relevant to the RTCP * Signal emited to get the crypto parameters relevant to the RTCP
* stream. User should provide the key and the RTCP encryption ciphers * stream. User should provide the key and the RTCP encryption ciphers
@ -702,7 +703,7 @@ gst_rtspsrc_class_init (GstRTSPSrcClass * klass)
*/ */
gst_rtspsrc_signals[SIGNAL_REQUEST_RTCP_KEY] = gst_rtspsrc_signals[SIGNAL_REQUEST_RTCP_KEY] =
g_signal_new ("request-rtcp-key", G_TYPE_FROM_CLASS (klass), g_signal_new ("request-rtcp-key", G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, GST_TYPE_CAPS, 0, G_TYPE_NONE); G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, GST_TYPE_CAPS, 1, G_TYPE_UINT);
gstelement_class->send_event = gst_rtspsrc_send_event; gstelement_class->send_event = gst_rtspsrc_send_event;
gstelement_class->provide_clock = gst_rtspsrc_provide_clock; gstelement_class->provide_clock = gst_rtspsrc_provide_clock;
@ -5912,11 +5913,12 @@ auth_key_length_from_auth_name (const gchar * auth)
} }
static GstCaps * static GstCaps *
signal_get_srtcp_params (GstRTSPSrc * src) signal_get_srtcp_params (GstRTSPSrc * src, GstRTSPStream * stream)
{ {
GstCaps *caps = NULL; GstCaps *caps = NULL;
g_signal_emit (src, gst_rtspsrc_signals[SIGNAL_REQUEST_RTCP_KEY], 0, &caps); g_signal_emit (src, gst_rtspsrc_signals[SIGNAL_REQUEST_RTCP_KEY], 0,
stream->id, &caps);
if (caps != NULL) if (caps != NULL)
GST_DEBUG_OBJECT (src, "SRTP parameters received"); GST_DEBUG_OBJECT (src, "SRTP parameters received");
@ -5964,7 +5966,7 @@ gst_rtspsrc_stream_make_keymgmt (GstRTSPSrc * src, GstRTSPStream * stream)
const GValue *val; const GValue *val;
const gchar *srtcpcipher, *srtcpauth; const gchar *srtcpcipher, *srtcpauth;
stream->srtcpparams = signal_get_srtcp_params (src); stream->srtcpparams = signal_get_srtcp_params (src, stream);
if (stream->srtcpparams == NULL) if (stream->srtcpparams == NULL)
stream->srtcpparams = default_srtcp_params (); stream->srtcpparams = default_srtcp_params ();