Gstrtpbin - one RtpSession, several "on-new-ssrc" calls

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Gstrtpbin - one RtpSession, several "on-new-ssrc" calls

Matthias Dodt
Hey guys!

Is there an implementation to access the specific sdes-GstStructure for
each ssrc announced by the "on-new-ssrc" signal?

The on-new-ssrc function has only the id of ssrc passed (guint ssrc) -
but i need the RTCP-sdes message of the corresponding ssrc to extract
CNAME and NAME of that ssrc.

The doc states on-new-ssrc as follows:

void                user_function                      (GstRtpSession
*sess,
                                                        guint
ssrc,
                                                        gpointer
user_data)

And what does user_data contain?

Thanks!

mat
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Gstrtpbin - one RtpSession, several "on-new-ssrc" calls

Marco Ballesio
Hi,

On 9/15/11, Matthias Dodt <[hidden email]> wrote:
> Hey guys!
>
> Is there an implementation to access the specific sdes-GstStructure for
> each ssrc announced by the "on-new-ssrc" signal?

what about the "sdes" property in gstrtpbin?

>
> The on-new-ssrc function has only the id of ssrc passed (guint ssrc) -
> but i need the RTCP-sdes message of the corresponding ssrc to extract
> CNAME and NAME of that ssrc.
>
> The doc states on-new-ssrc as follows:
>
> void                user_function                      (GstRtpSession
> *sess,
>                                                         guint
> ssrc,
>                                                         gpointer
> user_data)
>
> And what does user_data contain?

as "user_function" is a callback, user_data is a pointer to whatever
extra data you might want to access there.

Regards

>
> Thanks!
>
> mat
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Gstrtpbin - one RtpSession, several "on-new-ssrc" calls

Olivier Crête-3
On Sat, 2011-09-17 at 09:48 +0200, Marco Ballesio wrote:
> Hi,
>
> On 9/15/11, Matthias Dodt <[hidden email]> wrote:
> > Hey guys!
> >
> > Is there an implementation to access the specific sdes-GstStructure for
> > each ssrc announced by the "on-new-ssrc" signal?
>
> what about the "sdes" property in gstrtpbin?

That's the one you send, the ones you receive are sent to you in the
"application/x-rtp-source-sdes" GstMessage of type GST_MESSAGE_ELEMENT.

The other option is to use the "get-internal-session" action signal on
gstrtpbin to extract the rtpsession and the use the "get-source-by-ssrc"
action signal on the session to get the rtpsource.. And on the
rtpsource, there is a property called "sdes" that contains the content
of the SDES.


--
Olivier Crête
[hidden email]

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (205 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

AW: Gstrtpbin - one RtpSession, several "on-new-ssrc" calls

Matthias Dodt
Hi Oliver!

Thanks for your reply. I like the second option more (I was already using the first one) because the GstMessages might be processed with some delay and since I only get the GstStructure I cant tell to which session it belongs- (or at least I don't know how to):

...
case GST_MESSAGE_ELEMENT:{
                                if (gst_structure_has_name (msg->structure, "application/x-rtp-source-sdes")){
                                        const gchar* name=0;
                                        const gchar* cname=0;
                                        name = gst_structure_get_string(msg->structure,"name");
                                        cname = gst_structure_get_string(msg->structure,"cname");
...

(This works fine, but I don't know which session this message belongs to).

Now that I use the "on-new-sdes" callback I should be able to do that:

on_ssrc_sdes(GstElement *gstrtpbin,guint sessionid,guint ssrc,gpointer data)
{
        GObject *rtpsession, *rtpsource;
        GstStructure *sessionInfo;
        ...
        g_signal_emit_by_name(rtpbin, "get-internal-session", sessionid,&rtpsession);
        g_signal_emit_by_name(rtpsession, "get-source-by-ssrc", ssrc,&rtpsource);
        g_object_get(rtpsource, "stats", &sessionInfo, NULL);
        const gchar* name=gst_structure_get_name (sessionInfo);
        const gchar* client=gst_structure_get_string(sessionInfo,"cname");
...

The only problem is that this "GstStructure" does not contain any "cname", while the message send on the GstBus has. But instead it contains a bunch of other information...:

gst_structure_to_string(sessionInfo); - Output:

application/x-rtp-source-stats, ssrc=(uint)1096463363, internal=(boolean)false, validated=(boolean)true, received-bye=(boolean)false, is-csrc=(boolean)false, is-sender=(boolean)true, seqnum-base=(int)-1, clock-rate=(int)44100, rtp-from=(string)192.168.115.34:65201, rtcp-from=(string)192.168.115.34:65202, octets-received=(guint64)247808, packets-received=(guint64)242, bitrate=(guint64)586604, packets-lost=(int)0, jitter=(uint)3161, have-sr=(boolean)true, sr-ntptime=(guint64)15141624471614630320, sr-rtptime=(uint)3060205931, sr-octet-count=(uint)239616, sr-packet-count=(uint)234, have-rb=(boolean)false, rb-fractionlost=(uint)0, rb-packetslost=(int)0, rb-exthighestseq=(uint)0, rb-jitter=(uint)0, rb-lsr=(uint)0, rb-dlsr=(uint)0, rb-round-trip=(uint)0;

But there's no cname. Why is that?

Thanks

mat

-----Ursprüngliche Nachricht-----
Von: gstreamer-devel-bounces+mdodt=[hidden email] [mailto:gstreamer-devel-bounces+mdodt=[hidden email]] Im Auftrag von Olivier Crête
Gesendet: 17 September 2011 19:15
An: [hidden email]
Betreff: Re: Gstrtpbin - one RtpSession, several "on-new-ssrc" calls

On Sat, 2011-09-17 at 09:48 +0200, Marco Ballesio wrote:
> Hi,
>
> On 9/15/11, Matthias Dodt <[hidden email]> wrote:
> > Hey guys!
> >
> > Is there an implementation to access the specific sdes-GstStructure
> > for each ssrc announced by the "on-new-ssrc" signal?
>
> what about the "sdes" property in gstrtpbin?

That's the one you send, the ones you receive are sent to you in the "application/x-rtp-source-sdes" GstMessage of type GST_MESSAGE_ELEMENT.

The other option is to use the "get-internal-session" action signal on gstrtpbin to extract the rtpsession and the use the "get-source-by-ssrc"
action signal on the session to get the rtpsource.. And on the rtpsource, there is a property called "sdes" that contains the content of the SDES.


--
Olivier Crête
[hidden email]
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

AW: Gstrtpbin - one RtpSession, several "on-new-ssrc" calls

Matthias Dodt
In reply to this post by Marco Ballesio
Hi Marco!

Thanks for your reply too. The "sdes" property only outputs the sdes of the sdes beeing send to other participants, but not the one beeing received.

I understand that user_data should be any data I want to use, but since the signal get's emitted by the GstBus I see no way how this pointer can be used (except for the cases where I emit the signal myself)-

Best,

mat

-----Ursprüngliche Nachricht-----
Von: gstreamer-devel-bounces+mdodt=[hidden email] [mailto:gstreamer-devel-bounces+mdodt=[hidden email]] Im Auftrag von Marco Ballesio
Gesendet: 17 September 2011 09:48
An: Discussion of the development of and with GStreamer
Betreff: Re: Gstrtpbin - one RtpSession, several "on-new-ssrc" calls

Hi,

On 9/15/11, Matthias Dodt <[hidden email]> wrote:
> Hey guys!
>
> Is there an implementation to access the specific sdes-GstStructure
> for each ssrc announced by the "on-new-ssrc" signal?

what about the "sdes" property in gstrtpbin?

>
> The on-new-ssrc function has only the id of ssrc passed (guint ssrc) -
> but i need the RTCP-sdes message of the corresponding ssrc to extract
> CNAME and NAME of that ssrc.
>
> The doc states on-new-ssrc as follows:
>
> void                user_function                      (GstRtpSession
> *sess,
>                                                         guint ssrc,
>                                                         gpointer
> user_data)
>
> And what does user_data contain?

as "user_function" is a callback, user_data is a pointer to whatever extra data you might want to access there.

Regards

>
> Thanks!
>
> mat
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel



_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Gstrtpbin - one RtpSession, several "on-new-ssrc" calls

Marco Ballesio
Hi,

On Mon, Sep 19, 2011 at 5:36 PM, Matthias Dodt <[hidden email]> wrote:
> Hi Marco!
>
> Thanks for your reply too. The "sdes" property only outputs the sdes of the sdes beeing send to other participants, but not the one beeing received.

Right. My fault I didn't check deeper when reading the documentation
(instead of the sources ;) ).

>
> I understand that user_data should be any data I want to use, but since the signal get's emitted by the GstBus I see no way how this pointer can be used (except for the cases where I emit the signal myself)-

It is the pointer you set as user_data in:

http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBus.html#gst-bus-add-watch

Regards

>
> Best,
>
> mat
>
> -----Ursprüngliche Nachricht-----
> Von: gstreamer-devel-bounces+mdodt=[hidden email] [mailto:gstreamer-devel-bounces+mdodt=[hidden email]] Im Auftrag von Marco Ballesio
> Gesendet: 17 September 2011 09:48
> An: Discussion of the development of and with GStreamer
> Betreff: Re: Gstrtpbin - one RtpSession, several "on-new-ssrc" calls
>
> Hi,
>
> On 9/15/11, Matthias Dodt <[hidden email]> wrote:
>> Hey guys!
>>
>> Is there an implementation to access the specific sdes-GstStructure
>> for each ssrc announced by the "on-new-ssrc" signal?
>
> what about the "sdes" property in gstrtpbin?
>
>>
>> The on-new-ssrc function has only the id of ssrc passed (guint ssrc) -
>> but i need the RTCP-sdes message of the corresponding ssrc to extract
>> CNAME and NAME of that ssrc.
>>
>> The doc states on-new-ssrc as follows:
>>
>> void                user_function                      (GstRtpSession
>> *sess,
>>                                                         guint ssrc,
>>                                                         gpointer
>> user_data)
>>
>> And what does user_data contain?
>
> as "user_function" is a callback, user_data is a pointer to whatever extra data you might want to access there.
>
> Regards
>
>>
>> Thanks!
>>
>> mat
>> _______________________________________________
>> gstreamer-devel mailing list
>> [hidden email]
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
>
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

AW: Gstrtpbin - one RtpSession, several "on-new-ssrc" calls

Matthias Dodt
Hi Marco!

Ahh yes - that makes perfect sense then. Thanks a lot!

Cheers,

mat

-----Ursprüngliche Nachricht-----
Von: gstreamer-devel-bounces+mdodt=[hidden email] [mailto:gstreamer-devel-bounces+mdodt=[hidden email]] Im Auftrag von Marco Ballesio
Gesendet: 20 September 2011 05:50
An: Discussion of the development of and with GStreamer
Betreff: Re: Gstrtpbin - one RtpSession, several "on-new-ssrc" calls

Hi,

On Mon, Sep 19, 2011 at 5:36 PM, Matthias Dodt <[hidden email]> wrote:
> Hi Marco!
>
> Thanks for your reply too. The "sdes" property only outputs the sdes of the sdes beeing send to other participants, but not the one beeing received.

Right. My fault I didn't check deeper when reading the documentation (instead of the sources ;) ).

>
> I understand that user_data should be any data I want to use, but
> since the signal get's emitted by the GstBus I see no way how this
> pointer can be used (except for the cases where I emit the signal
> myself)-

It is the pointer you set as user_data in:

http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBus.html#gst-bus-add-watch

Regards

>
> Best,
>
> mat
>
> -----Ursprüngliche Nachricht-----
> Von:
> gstreamer-devel-bounces+mdodt=[hidden email]
> [mailto:gstreamer-devel-bounces+mdodt=[hidden email]
> op.org] Im Auftrag von Marco Ballesio
> Gesendet: 17 September 2011 09:48
> An: Discussion of the development of and with GStreamer
> Betreff: Re: Gstrtpbin - one RtpSession, several "on-new-ssrc" calls
>
> Hi,
>
> On 9/15/11, Matthias Dodt <[hidden email]> wrote:
>> Hey guys!
>>
>> Is there an implementation to access the specific sdes-GstStructure
>> for each ssrc announced by the "on-new-ssrc" signal?
>
> what about the "sdes" property in gstrtpbin?
>
>>
>> The on-new-ssrc function has only the id of ssrc passed (guint ssrc)
>> - but i need the RTCP-sdes message of the corresponding ssrc to
>> extract CNAME and NAME of that ssrc.
>>
>> The doc states on-new-ssrc as follows:
>>
>> void                user_function                      (GstRtpSession
>> *sess,
>>                                                         guint ssrc,
>>                                                         gpointer
>> user_data)
>>
>> And what does user_data contain?
>
> as "user_function" is a callback, user_data is a pointer to whatever extra data you might want to access there.
>
> Regards
>
>>
>> Thanks!
>>
>> mat
>> _______________________________________________
>> gstreamer-devel mailing list
>> [hidden email]
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
>
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel



_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel