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