Need Help Regarding SRTPDEC request_key_callback
sameer
sameer.thapa at evontech.com
Fri Apr 10 10:47:27 UTC 2020
Hello All,
It seems like callback for signal "request-key" is being invoked on a
different context and user_data is not accesible. App crashes when I try
to access user_data.
I have tried to use GMainContext from this link
<https://developer.gnome.org/programming-guidelines/stable/main-contexts.html.en>
to get signal callback in the same context but nothing helps.
Any help would be much appreciated.
Thanks
On 09/04/20 7:44 pm, sameer wrote:
>
> Any updates on this? We are stuck for some while in this issue and it
> is crucial for us to get the srtp recording going.
>
> On 09/04/20 2:58 pm, sameer wrote:
>>
>> We are running pipeline in a different thread other than the main
>> thread of application. Can the unref issue be related to different
>> thread context?
>>
>> On 08/04/20 9:03 pm, sameer wrote:
>>>
>>> On returning caps instead of *caps the app is crashing without
>>> showing any errorlogs.
>>>
>>> Do I need to add the callback method in the class as a member method?
>>>
>>>> *From:*Olivier Crête <olivier.crete at collabora.com>
>>>> *Sent:* Wednesday, April 8, 2020 4:47 PM
>>>> *To:* Discussion of the development of and with GStreamer
>>>> <gstreamer-devel at lists.freedesktop.org>
>>>> *Cc:* Lefteris Diakakis <ldiakakis at rtelworld.com>
>>>> *Subject:* Re: Need Help Regarding SRTPDEC request_key_callback
>>>>
>>>> Hi,
>>>>
>>>> On Wed, 2020-04-08 at 18:52 +0530, sameer wrote:
>>>>
>>>> Thank you for the quick reply!
>>>>
>>>> We have not unref the srtpdec object anywhere. Even made the
>>>> srtpdec object global.
>>>>
>>>> Following is our implementation of callback:
>>>>
>>>> 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)
>>>>
>>>> The return value should be a "GstCaps *"
>>>>
>>>> {
>>>> 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;
>>>> }
>>>>
>>>> And you should "return caps;"
>>>>
>>>> Olivier
>>>>
>>>> Is it the correct way?
>>>>
>>>> Thanks
>>>>
>>>> *From:*Olivier Crête <olivier.crete at collabora.com>
>>>> <mailto:olivier.crete at collabora.com>
>>>> *Sent:* Wednesday, April 8, 2020 3:52 PM
>>>> *To:* Discussion of the development of and with GStreamer
>>>> <gstreamer-devel at lists.freedesktop.org>
>>>> <mailto:gstreamer-devel at lists.freedesktop.org>
>>>> *Cc:* Lefteris Diakakis <ldiakakis at rtelworld.com>
>>>> <mailto:ldiakakis at rtelworld.com>
>>>> *Subject:* Re: Need Help Regarding SRTPDEC request_key_callback
>>>>
>>>> Hi,
>>>>
>>>> On Wed, 2020-04-08 at 14:37 +0530, sameer wrote:
>>>>
>>>> The ssrc is not received in sdp. I have implemented the
>>>> callback function to return capstring as mentioned in
>>>> the documentation
>>>> <https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/gst-plugins-bad-plugins-srtpdec.html>
>>>> :
>>>>
>>>> *static GstCaps request_key_callback (GstElement
>>>> gstsrtpdec, guint ssrc, gpointer udata) *
>>>>
>>>> The capstring returned is like:
>>>>
>>>> *"
>>>> application/x-srtp,channels=(int)1,media=(string)audio,payload=(int)0,clock-rate=(int)8000,encoding-name=(string)PCMU,ssrc=(uint)1932929554,srtp-key=(buffer)4d73554e564e334354466141365042324168614444436c4a456a754a497673747a354e5961694d5a,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
>>>> "*
>>>>
>>>> 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.
>>>>
>>>> Can anyone tell me what mistake I am making. I am not
>>>> able to find much in the documentation or any examples.
>>>>
>>>> You probably unref the srtpdec object somewhere where you
>>>> shouldn't.
>>>>
>>>> --
>>>>
>>>> Olivier Crête
>>>>
>>>> <mailto:olivier.crete at collabora.com>
>>>>
>>>> _olivier.crete at collabora.com<mailto:olivier.crete at collabora.com>_
>>>>
>>>> _______________________________________________
>>>>
>>>> gstreamer-devel mailing list
>>>>
>>>> <mailto:gstreamer-devel at lists.freedesktop.org>
>>>>
>>>> _gstreamer-devel at lists.freedesktop.org<mailto:gstreamer-devel at lists.freedesktop.org>_
>>>>
>>>> <https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel>
>>>>
>>>> _https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel_
>>>>
>>>> --
>>>> Olivier Crête
>>>> olivier.crete at collabora.com <mailto:olivier.crete at collabora.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20200410/1713eb0c/attachment.htm>
More information about the gstreamer-devel
mailing list