crash when srtpdec request_key_callback invoked
Hello All,
I am trying to record audio received in form srtp in a custom application. For this I set up following pipeline programatically:
udpsrc port=5906 caps="application/x-srtp,channels=(int)1,media=(string)audio,payload=(int)0,clock-rate=(int)8000,encoding-name=(string)PCMU,ssrc=(uint)0,srtp-key=(buffer)344d2b7943556a5679644c53724d7232314478784a766e7075674446717172414639736c52717467,srtp-cipher=(string)aes-128-icm,srtp-auth=(string)hmac-sha1-32,srtcp-cipher=(string)aes-128-icm,srtcp-auth=(string)hmac-sha1-32,roc=(uint)0" ! srtpdec ! rtppcmudepay ! filesink location=/home/audio.pcmu
The ssrc is not received in sdp. I have implemented the callback function to return capstring as mentioned in the documentation :
g_signal_connect(G_OBJECT(srtpdec), "request-key", G_CALLBACK (request_key_callback), &masterKey);
// masterKey is string
// srtpdec is global GstElement
GstCaps request_key_callback (GstElement gstsrtpdec, guint ssrc, gpointer udata)
{
string *key = (string*)udata;
GstCaps *caps = gst_caps_new_simple ("application/x-srtp",
"payload", G_TYPE_INT, 0,
"ssrc", G_TYPE_UINT, ssrc,
"srtp-key", G_TYPE_STRING, key->c_str(),
"srtp-auth", G_TYPE_STRING, "hmac-sha1-80",
"srtp-cipher", G_TYPE_STRING, "aes-128-icm",
"srtcp-auth", G_TYPE_STRING, "hmac-sha1-80",
"srtcp-cipher", G_TYPE_STRING, "aes-128-icm",
"roc", G_TYPE_UINT, 0,
NULL);
return *caps;
}
The capstring returned is like:
" application/x-srtp, payload=(int)0, ssrc=(uint)1932930184, srtp-key=(string)514a58303842626d4166544a6442516f5776773330724f536a6e7237643471782f54335a694f4464, srtp-auth=(string)hmac-sha1-80, srtp-cipher=(string)aes-128-icm, srtcp-auth=(string)hmac-sha1-80, srtcp-cipher=(string)aes-128-icm, roc=(uint)0 "
But after the callback invokes I am receiving following error:
(recorder:32537): GLib-GObject-CRITICAL **: 14:18:06.064: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
** (recorder:32537): CRITICAL **: 14:18:06.064: update_session_stream_from_caps: assertion 'GST_IS_SRTP_DEC (filter)' failed
and the app crashes.
srtpdec is not unrefed any where and is a gloabl object.
Can anyone please help me and tell where is the mistake happening.
Thanks